From 20efab9ee2b7df918268ca29002eb74a3526e465 Mon Sep 17 00:00:00 2001 From: spmfox Date: Sat, 2 Sep 2023 22:43:49 -0400 Subject: initial --- containers.yml | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 containers.yml (limited to 'containers.yml') diff --git a/containers.yml b/containers.yml new file mode 100644 index 0000000..5f4a7d7 --- /dev/null +++ b/containers.yml @@ -0,0 +1,148 @@ +- hosts: localhost + + tasks: + - name: Rebuild images + containers.podman.podman_image: + name: "{{ item.name }}:{{ ansible_date_time.date }}-{{ ansible_date_time.hour }}{{ ansible_date_time.minute }}{{ ansible_date_time.second }}" + path: "{{ item.path }}" + build: + file: "{{ item.file }}" + cache: false + tags: rebuild + loop: "{{ containers }}" + + - name: Tag new images to latest + containers.podman.podman_tag: + image: "{{ item.name }}:{{ ansible_date_time.date }}-{{ ansible_date_time.hour }}{{ ansible_date_time.minute }}{{ ansible_date_time.second }}" + target_names: "{{ item.name }}:latest" + tags: rebuild + loop: "{{ containers }}" + + - name: Stop systemd pod service + ansible.builtin.systemd: + name: "pod-{{ pod.name }}.service" + state: stopped + scope: user + ignore_errors: true + tags: + - remove + - service-stop + when: pod is defined + + - name: Remove systemd pod service file + ansible.builtin.file: + path: "~/.config/systemd/user/pod-{{ pod.name }}.service" + state: absent + tags: remove + when: pod is defined + + - name: Stop systemd container service + ansible.builtin.systemd: + name: "container-{{ item.name }}.service" + state: stopped + scope: user + ignore_errors: true + tags: + - remove + - service-stop + loop: "{{ containers }}" + + - name: Remove systemd container service file + ansible.builtin.file: + path: "~/.config/systemd/user/container-{{ item.name }}.service" + state: absent + tags: remove + loop: "{{ containers }}" + + - name: Remove pod + containers.podman.podman_pod: + name: "{{ pod.name }}" + state: absent + tags: + - remove + - container-stop + when: pod is defined + + - name: Remove containers + containers.podman.podman_container: + name: "{{ item.name }}" + state: absent + tags: + - remove + - container-stop + loop: "{{ containers }}" + + - name: Create pod + containers.podman.podman_pod: + name: "{{ pod.name }}" + ports: "{{ pod.ports }}" + state: started + tags: container-start + when: pod is defined + + - name: Start containers + ansible.builtin.shell: "podman container runlabel {{ item.runlabel }} {{ item.name}}:latest" + tags: container-start + loop: "{{ containers }}" + + - name: Generate systemd service file for pod + containers.podman.podman_generate_systemd: + name: "{{ pod.name }}" + dest: "~/.config/systemd/user/" + new: true + tags: generate-systemd + when: pod is defined + + - name: Generate systemd service file for container (when pod is not in use) + containers.podman.podman_generate_systemd: + name: "{{ item.name }}" + dest: "~/.config/systemd/user/" + new: true + tags: generate-systemd + loop: "{{ containers }}" + when: pod is not defined + + - name: Reload systemd daemon + ansible.builtin.systemd: + daemon_reload: true + scope: user + tags: + - remove + - generate-systemd + + - name: Pause for container full startup + ansible.builtin.pause: + seconds: 30 + + - name: Remove pod + containers.podman.podman_pod: + name: "{{ pod.name }}" + state: absent + when: pod is defined + + - name: Remove containers + containers.podman.podman_container: + name: "{{ item.name }}" + state: absent + loop: "{{ containers }}" + + - name: Start systemd pod service + ansible.builtin.systemd: + name: "pod-{{ pod.name}}.service" + state: started + enabled: true + scope: user + tags: start-service + when: pod is defined + + - name: Start systemd container service + ansible.builtin.systemd: + name: "container-{{ item.name }}.service" + state: started + enabled: true + scope: user + tags: start-service + loop: "{{ containers }}" + + - name: Prune old images + ansible.builtin.shell: podman image prune -f -- cgit