diff options
Diffstat (limited to 'roles/containers')
| -rw-r--r-- | roles/containers/defaults/main.yml | 11 | ||||
| -rw-r--r-- | roles/containers/tasks/main.yml | 17 | ||||
| -rw-r--r-- | roles/containers/tasks/quadlet_create.yml | 22 | ||||
| -rw-r--r-- | roles/containers/tasks/quadlet_remove.yml | 14 | ||||
| -rw-r--r-- | roles/containers/tasks/quadlet_start.yml | 27 | ||||
| -rw-r--r-- | roles/containers/tasks/quadlet_stop.yml | 8 |
6 files changed, 99 insertions, 0 deletions
diff --git a/roles/containers/defaults/main.yml b/roles/containers/defaults/main.yml new file mode 100644 index 0000000..ade45f3 --- /dev/null +++ b/roles/containers/defaults/main.yml @@ -0,0 +1,11 @@ +quadlet_path: "../../docs/sample-environment/wordpress/quadlet" + +quadlets: + - name: "wordpress-pod" + file: "wordpress.pod" + + - name: "wordpress-app" + file: "wordpress-app.container" + + - name: "wordpress-db" + file: "wordpress-db.container" diff --git a/roles/containers/tasks/main.yml b/roles/containers/tasks/main.yml new file mode 100644 index 0000000..02ee577 --- /dev/null +++ b/roles/containers/tasks/main.yml @@ -0,0 +1,17 @@ +- ansible.builtin.import_tasks: quadlet_create.yml + tags: + - create + +- ansible.builtin.import_tasks: quadlet_start.yml + tags: + - start + +- ansible.builtin.import_tasks: quadlet_stop.yml + tags: + - never + - stop + +- ansible.builtin.import_tasks: quadlet_remove.yml + tags: + - never + - remove diff --git a/roles/containers/tasks/quadlet_create.yml b/roles/containers/tasks/quadlet_create.yml new file mode 100644 index 0000000..ffbae8a --- /dev/null +++ b/roles/containers/tasks/quadlet_create.yml @@ -0,0 +1,22 @@ +- name: Create quadlet directory + ansible.builtin.file: + path: "{{ lookup('env', 'HOME') }}/.config/containers/systemd" + state: "directory" + +- name: Copy quadlet files into quadlet directory + ansible.builtin.copy: + src: "{{ quadlet_path}}/{{ item.file }}" + dest: "{{ lookup('env', 'HOME') }}/.config/containers/systemd/{{ item.file }}" + loop_control: + label: "{{ item.name }} -> {{ item.file }}" + loop: "{{ quadlets }}" + register: quadlet_files + +- name: Reload systemd daemon + ansible.builtin.systemd: + daemon_reload: true + scope: "user" + when: quadlet_files.changed + +- name: Check quadlet status + ansible.builtin.shell: "/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun" diff --git a/roles/containers/tasks/quadlet_remove.yml b/roles/containers/tasks/quadlet_remove.yml new file mode 100644 index 0000000..e6bc05b --- /dev/null +++ b/roles/containers/tasks/quadlet_remove.yml @@ -0,0 +1,14 @@ +- name: Remove quadlet files from quadlet directory + ansible.builtin.file: + path: "{{ lookup('env', 'HOME') }}/.config/containers/systemd/{{ item.file }}" + state: "absent" + loop_control: + label: "{{ item.name }} -> {{ item.file }}" + loop: "{{ quadlets }}" + register: quadlet_files + +- name: Reload systemd daemon + ansible.builtin.systemd: + daemon_reload: true + scope: "user" + when: quadlet_files.changed diff --git a/roles/containers/tasks/quadlet_start.yml b/roles/containers/tasks/quadlet_start.yml new file mode 100644 index 0000000..5dcd39a --- /dev/null +++ b/roles/containers/tasks/quadlet_start.yml @@ -0,0 +1,27 @@ +- name: Start quadlet + ansible.builtin.systemd_service: + name: "{{ item.name }}" + state: "started" + scope: "user" + loop_control: + label: "{{ item.name}}.service" + loop: "{{ quadlets }}" + +- name: Check for quadlet not in active or activating state + ansible.builtin.shell: "systemctl --user is-active {{ item.name }}.service" + loop_control: + label: "{{ item.name}}.service: {{ quadlet_status.stdout }}" + loop: "{{ quadlets }}" + register: quadlet_status + failed_when: quadlet_status.stdout not in ['active', 'activating'] + + +- name: Wait for quadlet state to go active + ansible.builtin.shell: "systemctl --user is-active {{ item.name }}.service" + loop_control: + label: "{{ item.name}}.service: {{ quadlet_status.stdout }}" + loop: "{{ quadlets }}" + register: quadlet_status + until: quadlet_status.stdout == 'active' + delay: 2 + retries: 25 diff --git a/roles/containers/tasks/quadlet_stop.yml b/roles/containers/tasks/quadlet_stop.yml new file mode 100644 index 0000000..b8a83f3 --- /dev/null +++ b/roles/containers/tasks/quadlet_stop.yml @@ -0,0 +1,8 @@ +- name: Stop quadlet + ansible.builtin.systemd_service: + name: "{{ item.name }}" + state: "stopped" + scope: "user" + loop_control: + label: "{{ item.name}}.service" + loop: "{{ quadlets }}" |
