chasinglogic.podman
Rol de Ansible para Podman
Gestiona servicios y contenedores con Podman
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
ansible-galaxy install chasinglogic.podman