chasinglogic.podman

Rôle Ansible pour Podman

Gérer des services et des conteneurs avec Podman

CircleCI

Utilisation

Par défaut, ce rôle installera simplement Podman comme décrit dans la documentation de Podman et effectuera toutes les autres configurations nécessaires pour rendre l'installation fonctionnelle sur les plateformes prises en charge.

Remarque Importante : Cela signifie que pour les systèmes Ubuntu / Debian, il effectuera une apt upgrade comme indiqué dans la documentation après l'ajout du dépôt. Cette mise à niveau ne sera exécutée que si le dépôt est ajouté ou modifié et ne s'exécutera pas lors des exécutions suivantes.

De plus, il peut déployer et configurer des conteneurs Podman en tant que services SystemD.

Exemple de Playbook

- hôtes: tous
  rôles:
    - rôle: podman

Déploiement Automatique de Services

Les conteneurs Podman destinés à fonctionner en tant que services sont relativement homogènes. Pour cette raison, ce rôle fournit une variable qui peut être utilisée pour déployer et configurer des conteneurs en tant que services SystemD. Des cas d'utilisation plus complexes, comme la configuration de plusieurs conteneurs en tant que pod, ne sont pas encore pris en charge. Pour utiliser cette fonctionnalité pour votre hôte, définissez une variable podman_services, qui est une liste de cartes ayant la structure suivante :

podman_services:
    ## Variables Podman
    #
    # Requis : Le nom de l'image à télécharger
  - image_name: nginx
    # Optionnel : Le tag à télécharger. Cela correspond souvent à
    # une version, par défaut il est 'latest'
    image_tag: mainline
    # Optionnel : Description qui sera ajoutée au fichier de service SystemD
    description: Hôte Web
    # Optionnel : Liste des ports à publier. Prend la même forme que
    # la CLI Podman, c'est-à-dire : port-hôte:port-conteneur. Cela est
    # directement envoyé au flag '--publish', donc les IPs de liaison fonctionnent
    # aussi (ex : '127.0.0.1:8080:80'). Par défaut, aucun.
    publish:
      - '80:80'
    # Optionnel : Nom de chaîne du réseau à passer comme le flag --network.
    # Si le réseau n'existe pas, il sera créé. Cela peut être utilisé pour permettre
    # à plusieurs services de se connecter entre eux. Voir Réseau pour les avertissements.
    network: somenetwork
    # Optionnel : Liste des volumes à monter. Prend la même forme que
    # la CLI Podman répertoire-hôte:répertoire-conteneur et comme montré ci-dessous
    # les options de montage sont autorisées.
    volumes:
      - '/tmp:/usr/share/nginx/html:ro'
    # Optionnel : Définir un nom d'hôte pour le flag hostname de Podman. Définit
    # le nom d'hôte du conteneur, par défaut aucun.
    hostname: chasinglogic.io
    # Optionnel : Liste des secrets à monter. Les secrets ne seront pas créés
    # automatiquement. Le seul champ requis s'il est utilisé est le nom. Les autres
    # valeurs ont des valeurs par défaut comme spécifié dans la documentation 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
    # Optionnel : Liste des variables d'environnement à ajouter au
    # conteneur. Par défaut, aucune.
    env_vars:
      - SOME_VAR=SOME_VALUE
    # Optionnel : Liste d'arguments arbitraires sous forme de chaînes qui seront ajoutés avant le nom de l'image.
    flags:
      - '--cap-add=NET_ADMIN'

    ## Variables SystemD
    #
    # Optionnel : Définir la politique de redémarrage pour ce service. Par défaut, c'est toujours
    restart: always
    # Optionnel : Définir le temps d'attente entre les redémarrages de ce service en secondes. Par défaut, c'est 30
    restart_sec: 30
    # Optionnel : Définir le nom réel utilisé pour le service SystemD
    # {{ Par défaut image_name + '-podman' }}
    service_name: nginx
    # Optionnel : Définir les cibles / services après lesquels ce service SystemD
    # doit démarrer. Il s'agit d'une liste YAML, pas d'une chaîne.
    after:
      - network.target
    # Optionnel : Définir le délai d'attente pour le démarrage de ce service SystemD.
    # Pour les valeurs valides, voir 'man systemd.service'. Par défaut,
    # 5 minutes.
    timeout_start_sec: 5m
    # Optionnel : Définir une section d'installation pour le service SystemD.
    # Actuellement, seule wanted_by est prise en charge. Voir 'man
    # systemd.unit' pour une description de cette section. Par défaut, c'est aucun
    # et la plupart des utilisateurs n'en auront pas besoin.
    install:
      wanted_by:
        - multi-user.target
    # Optionnel : définir l'utilisateur et le groupe pour le fichier de service
    # Par défaut, il n'y a pas de valeur ce qui équivaut à root sur la plupart des
    # systèmes.
    user: root
    group: root

Réseau

Pour l'instant, Ansible ne fournit pas de module de réseau Podman analogue à docker_network. Si vous utilisez l'option réseau sur votre conteneur, vous devrez vous assurer que le réseau existe avant que ce rôle ne s'exécute. À l'avenir, lorsque le support du réseau Podman sera ajouté à Ansible, ce rôle s'assurera qu'il sera créé.

Développement

Lors du développement, il est préférable d'utiliser les étapes de convergence et de vérification comme suit :

make converge verify

Licence

MIT

À propos du projet

Manage services and containers with podman

Installer
ansible-galaxy install chasinglogic.podman
Licence
mit
Téléchargements
3k
Propriétaire
Linux and FOSS Enthusiast.