diff --git a/tasks/configuration.yml b/tasks/configuration.yml index ac9da8b..76c88c4 100644 --- a/tasks/configuration.yml +++ b/tasks/configuration.yml @@ -1,38 +1,36 @@ --- # tasks file for podman -- name: Créer l'utilisateur dédié - ansible.builtin.include_role: - name: users - vars: - users: - - name: "{{ container_user }}" - comment: Dedicated Podman user ({{ container.name }}) - update_password: on_create - password_lock: true - system: true - shell: /bin/bash - - name: Activer le lingering ansible.builtin.command: - cmd: "loginctl enable-linger {{ container_user }}" - creates: /var/lib/systemd/linger/{{ container_user }} + cmd: "loginctl enable-linger {{ container_user }}" + creates: /var/lib/systemd/linger/{{ container_user }} become: true + loop: "{{ podman_containers }}" + loop_control: + label: "{{ item.name }}" + vars: + container_user: "podman-{{ item.user | default(item.name) }}" - name: Create a Quadlet file containers.podman.podman_container: - hostname: "{{ container.hostname | default(inventory_hostname) }}" - name: "{{ container.name }}" - image: "{{ container.image }}" + hostname: "{{ item.hostname | default(inventory_hostname) }}" + name: "{{ item.name }}" + image: "{{ item.image }}" state: quadlet - device: "{{ container.device | default(omit) }}" - ports: "{{ container.ports | default(omit) }}" - volumes: "{{ container.volumes | default(omit) }}" - userns: "{{ container.userns | default(omit) }}" - mount: "{{ container.mount | default(omit) }}" - publish: "{{ container.publish | default(omit) }}" - env: "{{ container.env | default(omit) }}" - quadlet_options: "{{ container.quadlet_options | default(omit) }}" + device: "{{ item.device | default(omit) }}" + ports: "{{ item.ports | default(omit) }}" + volumes: "{{ item.volumes | default(omit) }}" + userns: "{{ item.userns | default(omit) }}" + mount: "{{ item.mount | default(omit) }}" + publish: "{{ item.publish | default(omit) }}" + env: "{{ item.env | default(omit) }}" + quadlet_options: "{{ item.quadlet_options | default(omit) }}" recreate: true become: true become_user: "{{ container_user }}" + loop: "{{ podman_containers }}" + loop_control: + label: "{{ item.name }}" + vars: + container_user: "podman-{{ item.user | default(item.name) }}" diff --git a/tasks/installation.yml b/tasks/installation.yml index 84122ef..2ff649d 100644 --- a/tasks/installation.yml +++ b/tasks/installation.yml @@ -1,29 +1,30 @@ --- # tasks file for podman -- name: Installer les pré-requis +- name: Installer les paquets ansible.builtin.apt: name: - dbus-user-session - - rootlesskit - - slirp4netns + - containernetworking-dnsname + - containernetworking-plugins + - containernetworking-podman-machine + - dbus-user-session + - passt + - podman + - podman-aardvark-dns + - podman-docker + - podman-gvproxy + - podman-netavark + - python3-podman-compose + - uidmap - systemd-container + install_recommends: true state: present become: true notify: - Redémarrer l'instance - Attendre que le port SSH soit ouvert -- name: Installer podman - ansible.builtin.apt: - name: podman - state: present - default_release: sid - become: true - notify: - - Redémarrer l'instance - - Attendre que le port SSH soit ouvert - - name: Exécuter les handlers ansible.builtin.meta: flush_handlers diff --git a/tasks/main.yml b/tasks/main.yml index bba4779..33151b9 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -4,15 +4,7 @@ - name: Importer les tâches d'installation ansible.builtin.import_tasks: file: installation.yml - tags: installation - name: Importer les tâches de configuration - ansible.builtin.include_tasks: + ansible.builtin.import_tasks: file: configuration.yml - loop: "{{ podman_containers }}" - loop_control: - label: "{{ container.name }}" - loop_var: container - vars: - container_user: "podman-{{ container.user | default(container.name) }}" - tags: configuration diff --git a/templates/podman-quadlet.container.j2 b/templates/podman-quadlet.container.j2 deleted file mode 100644 index 04551e7..0000000 --- a/templates/podman-quadlet.container.j2 +++ /dev/null @@ -1,50 +0,0 @@ -# {{ ansible_managed }} - -[Unit] -Description=Podman container: {{ container.name }} -{% for extra in container.get('unit_extras', []) %} -{{ extra }} -{% endfor %} - -[Container] -HostName={{ inventory_hostname }} - -Image={{ container.image }} -ContainerName={{ container.name }} - -{% if container.get('userns', '') | length > 0 %} -UserNS={{ container.userns }} -{% endif %} - -AutoUpdate=registry - -{% for cmd in container.get('commands', []) %} -Exec={{ cmd }} -{% endfor %} - -{% for volume in container.get('volumes', []) %} -Volume={{ volume }} -{% endfor %} - -{% for mount in container.get('mounts', []) %} -{% if mount.get('options', []) | length > 0 %} -Mount=type={{ mount.type }},src={{ mount.source }},dst={{ mount.destination }},{{ mount.options | join(',') }} -{% else %} -Mount=type={{ mount.type }},src={{ mount.source }},dst={{ mount.destination }} -{% endif %} -{% endfor %} - -{% for port in container.get('ports', []) %} -PublishPort={{ port }} -{% endfor %} - -{% for environment in container.get('environment_vars', []) %} -Environment={{ environment.keys() | first }}={{ environment.values() | first }} -{% endfor %} - -[Service] -Restart=on-failure -TimeoutStartSec=900 - -[Install] -WantedBy=default.target