|
@@ -0,0 +1,129 @@
|
|
|
+---
|
|
|
+- name: Install podman
|
|
|
+ ansible.builtin.package:
|
|
|
+ name: podman
|
|
|
+ state: present
|
|
|
+
|
|
|
+
|
|
|
+- name: Create container group
|
|
|
+ ansible.builtin.group:
|
|
|
+ name: "{{ container_group }}"
|
|
|
+ gid: "{{ container_gid }}"
|
|
|
+
|
|
|
+
|
|
|
+- name: Create container user
|
|
|
+ ansible.builtin.user:
|
|
|
+ name: "{{ container_user }}"
|
|
|
+ uid: "{{ container_uid }}"
|
|
|
+ group: "{{ container_group }}"
|
|
|
+
|
|
|
+
|
|
|
+- name: Generate list of persistent container directories
|
|
|
+ ansible.builtin.set_fact:
|
|
|
+ persistent_container_dirs: "{{ containers | map(attribute='volumes') | flatten | map('regex_replace', ':.*' ) | list }}"
|
|
|
+
|
|
|
+
|
|
|
+- name: Create persistent container directories
|
|
|
+ ansible.builtin.file:
|
|
|
+ path: "{{ item }}"
|
|
|
+ state: directory
|
|
|
+ owner: "{{ container_user | default('root') }}"
|
|
|
+ group: "{{ container_group | default('root') }}"
|
|
|
+ mode: '0770'
|
|
|
+ with_items:
|
|
|
+ - "{{ persistent_container_dirs }}"
|
|
|
+ loop_control:
|
|
|
+ label: "{{ item }}"
|
|
|
+
|
|
|
+
|
|
|
+- name: Create quadlet file for podman networks
|
|
|
+ containers.podman.podman_network:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ state: quadlet
|
|
|
+ quadlet_options:
|
|
|
+ - |
|
|
|
+ [Install]
|
|
|
+ WantedBy=default.target
|
|
|
+ notify:
|
|
|
+ - Daemon Reload
|
|
|
+ with_items:
|
|
|
+ - "{{ container_networks }}"
|
|
|
+ when:
|
|
|
+ - container_networks is defined
|
|
|
+ loop_control:
|
|
|
+ label: "{{ item.name }}"
|
|
|
+
|
|
|
+
|
|
|
+- name: Flush Handlers
|
|
|
+ meta: flush_handlers
|
|
|
+
|
|
|
+
|
|
|
+- name: Start Podman Networks
|
|
|
+ ansible.builtin.systemd_service:
|
|
|
+ name: "{{ item.name }}-network"
|
|
|
+ state: started
|
|
|
+ with_items:
|
|
|
+ - "{{ container_networks }}"
|
|
|
+ when:
|
|
|
+ - container_networks is defined
|
|
|
+ loop_control:
|
|
|
+ label: "{{ item.name }}"
|
|
|
+
|
|
|
+
|
|
|
+- name: Create quadlet .pod files
|
|
|
+ containers.podman.podman_pod:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ state: quadlet
|
|
|
+ ports: "{{ item.ports | default(omit) }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ containers }}"
|
|
|
+ when:
|
|
|
+ - containers is defined
|
|
|
+ loop_control:
|
|
|
+ label: "{{ item.name }}"
|
|
|
+ notify:
|
|
|
+ - Daemon Reload
|
|
|
+
|
|
|
+
|
|
|
+- name: Create quadlet .container files
|
|
|
+ containers.podman.podman_container:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ state: quadlet
|
|
|
+ image: "{{ item.image }}"
|
|
|
+ env: "{{ item.environment | default(omit) }}"
|
|
|
+ ports: "{{ item.ports | default(omit) }}"
|
|
|
+ cap_add: "{{ item.cap_add | default(omit) }}"
|
|
|
+ volumes: "{{ item.volumes | default(omit) }}"
|
|
|
+ network: "{{ item.networks | default(omit) }}"
|
|
|
+ quadlet_options:
|
|
|
+ - "AutoUpdate=registry"
|
|
|
+ - "Pull=newer"
|
|
|
+ - |
|
|
|
+ [Install]
|
|
|
+ WantedBy=default.target
|
|
|
+ with_items:
|
|
|
+ - "{{ containers }}"
|
|
|
+ when:
|
|
|
+ - containers is defined
|
|
|
+ loop_control:
|
|
|
+ label: "{{ item.name }}"
|
|
|
+ notify:
|
|
|
+ - Daemon Reload
|
|
|
+
|
|
|
+
|
|
|
+- name: Flush handlers
|
|
|
+ meta: flush_handlers
|
|
|
+
|
|
|
+
|
|
|
+# Containers are automatically enabled via WantedBy=default.target entries
|
|
|
+- name: Start Container Services
|
|
|
+ ansible.builtin.systemd_service:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ state: started
|
|
|
+ with_items:
|
|
|
+ - "{{ containers }}"
|
|
|
+ when:
|
|
|
+ - containers is defined
|
|
|
+ loop_control:
|
|
|
+ label: "{{ item.name }}"
|
|
|
+
|