chasinglogic.podman

Rol de Ansible para Podman

Gestiona servicios y contenedores con Podman

CircleCI

Uso

Por defecto, este rol simplemente instalará Podman como se describe en la documentación de Podman y realizará cualquier otra configuración necesaria para que la instalación funcione en las plataformas soportadas.

Nota Importante: Esto significa que, para sistemas Ubuntu / Debian, se realizará un apt upgrade según la documentación, después de que se agregue el repositorio. Esta actualización solo se ejecutará si se agrega o cambia el repositorio y no se ejecutará en ejecuciones posteriores.

Además, puede desplegar y configurar contenedores de Podman como servicios de SystemD.

Ejemplo de Playbook

- hosts: all
  roles:
    - role: podman

Despliegue Automático de Servicios

Los contenedores de Podman que se van a ejecutar como servicios son relativamente homogéneos. Por esta razón, este rol proporciona una variable que se puede usar para desplegar y configurar contenedores como servicios de SystemD. Casos de uso más complejos, como configurar múltiples contenedores como un pod, aún no son compatibles. Para usar esta función en su host, defina una variable podman_services que sea una lista de mapas con la siguiente estructura:

podman_services:
    ## Variables de Podman
    #
    # Requerido: El nombre de la imagen a descargar
  - image_name: nginx
    # Opcional: La etiqueta a descargar. Esto a menudo corresponde a
    # la versión, por defecto es 'latest'
    image_tag: mainline
    # Opcional: Descripción que se agregará al archivo de servicio de SystemD
    description: Host web
    # Opcional: Lista de puertos a publicar. Tiene la misma forma que el
    # CLI de podman, es decir: puerto-host:puerto-contenedor. Esto se
    # pasa directamente al flag '--publish', por lo que también funcionan
    # las IPs de enlace (ej. '127.0.0.1:8080:80'). Por defecto es ninguno.
    publish:
      - '80:80'
    # Opcional: Nombre de cadena de la red que se pasará como el flag --network.
    # Si la red no existe, se creará. Esto puede usarse para permitir
    # que múltiples servicios se conecten entre sí. Ver Redes para advertencias
    network: somenetwork
    # Opcional: Lista de volúmenes a montar. Tiene la misma forma que el
    # CLI de podman directorio-host:directorio-contenedor y como se muestra a continuación
    # se permiten opciones de montaje.
    volumes:
      - '/tmp:/usr/share/nginx/html:ro'
    # Opcional: Define un nombre de host para la bandera de nombre de host de podman. Establece
    # el nombre de host del contenedor, por defecto es ninguno.
    hostname: chasinglogic.io
    # Opcional: Lista de secretos a montar. Los secretos no se crearán
    # automáticamente. El único campo requerido si se usa es el nombre. Los otros
    # valores tienen valores predeterminados según lo especificado en la documentación de podman
    # https://docs.podman.io/en/v4.6.0/markdown/options/secret.html
    secrets:
      - name: secret
        type: mount
        target: /run/secrets/secret
        uid: 0
        gid: 0
        mode: 0
    # Opcional: Lista de variables de entorno para agregar al
    # contenedor. El valor predeterminado es ninguno.
    env_vars:
      - SOME_VAR=SOME_VALUE
    # Opcional: Lista de argumentos arbitrarios como cadenas que se agregarán antes del nombre de la imagen.
    flags:
      - '--cap-add=NET_ADMIN'

    ## Variables de SystemD
    #
    # Opcional: Define la política de reinicio para este servicio. Por defecto es siempre
    restart: always
    # Opcional: Define el tiempo de espera entre reinicios de este servicio en segundos. Por defecto es 30
    restart_sec: 30
    # Opcional: Define el nombre real utilizado para el servicio de SystemD
    # {{ Por defecto es image_name + '-podman' }}
    service_name: nginx
    # Opcional: Define los objetivos / servicios después de los cuales debe comenzar este servicio de SystemD.
    # Esta es una lista YAML, no una cadena.
    after:
      - network.target
    # Opcional: Define el tiempo de espera para iniciar este servicio de SystemD.
    # Para valores válidos, vea 'man systemd.service'. Por defecto es
    # 5 minutos.
    timeout_start_sec: 5m
    # Opcional: Define una sección de instalación para el servicio de SystemD.
    # Actualmente solo se admite wanted_by. Vea 'man
    # systemd.unit' para una descripción de esta sección. Por defecto es ninguno
    # y la mayoría de los usuarios no deberían necesitar esto.
    install:
      wanted_by:
        - multi-user.target
    # Opcional: define el usuario y grupo para el archivo de servicio
    # El valor predeterminado es la omisión, que es equivalente a root en la mayoría
    # de los sistemas.
    user: root
    group: root

Redes

En este momento, Ansible no proporciona un módulo de red de podman análogo a docker_network. Si está utilizando la opción de red en su contenedor, deberá asegurarse de que la red exista antes de que se ejecute este rol. En el futuro, cuando se agregue el soporte de redes de podman a Ansible, este rol se asegurará de que se cree.

Desarrollo

Al desarrollar, es mejor usar las etapas de convergencia y verificación así:

make converge verify

Licencia

MIT

Acerca del proyecto

Manage services and containers with podman

Instalar
ansible-galaxy install chasinglogic.podman
Licencia
mit
Descargas
3k
Propietario
Linux and FOSS Enthusiast.