From 5dbed116310fe0c1eaf36dc33d4c73be9dd725eb Mon Sep 17 00:00:00 2001 From: Allar Viik Date: Tue, 20 Feb 2024 13:56:34 +0200 Subject: [PATCH] Added Archlinux support for `docker` role --- nova/core/roles/docker/tasks/archlinux.yml | 64 +++++++++++++++++++ .../docker/tasks/{linux.yml => debian_os.yml} | 0 nova/core/roles/docker/tasks/main.yml | 10 ++- 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 nova/core/roles/docker/tasks/archlinux.yml rename nova/core/roles/docker/tasks/{linux.yml => debian_os.yml} (100%) diff --git a/nova/core/roles/docker/tasks/archlinux.yml b/nova/core/roles/docker/tasks/archlinux.yml new file mode 100644 index 00000000..01d9a8f6 --- /dev/null +++ b/nova/core/roles/docker/tasks/archlinux.yml @@ -0,0 +1,64 @@ +--- +- name: Installing Docker and requirements... + ansible.builtin.package: + name: + - docker + - docker-compose + - docker-buildx + state: present + update_cache: true + register: docker_install + until: not docker_install.failed # Because sometimes the primary DNS is not up yet + retries: 6 + delay: 5 + +- name: Getting python3-pip version... + ansible.builtin.shell: pip3 -V | cut -d " " -f 2 + changed_when: false + register: pip_version + +# https://peps.python.org/pep-0668/ +# Using this until a good cross-user venv is available +- name: Installing required Python packages... + ansible.builtin.pip: + name: requests + extra_args: "{{ '--break-system-packages' if pip_version.stdout is version('23.0.0', 'gt', version_type='loose') else none }}" + +- name: Creating /etc/docker directory... + ansible.builtin.file: + path: /etc/docker + state: directory + mode: "0755" + +- name: Adding Docker daemon config... + ansible.builtin.template: + src: "{{ docker_daemon_template }}" + dest: /etc/docker/daemon.json + lstrip_blocks: true + mode: "0644" + register: daemon_config + +- name: Enabling docker service... + ansible.builtin.systemd: + name: docker.service + enabled: true + daemon_reload: true + state: restarted + when: daemon_config.changed or docker_install.changed + +- name: Including default network creation tasks... + when: docker_create_network + block: + - name: Checking if {{ docker_network.name }} exists... + community.docker.docker_network_info: + name: "{{ docker_network.name }}" + register: docker_network_check + + - name: Creating {{ docker_network.name }}... + community.docker.docker_network: + name: "{{ docker_network.name }}" + enable_ipv6: "{{ docker_network.enable_ipv6 }}" + ipam_config: + - subnet: "{{ docker_network.ipv4_subnet }}" + - subnet: "{{ docker_network.ipv6_subnet }}" + when: not docker_network_check.exists diff --git a/nova/core/roles/docker/tasks/linux.yml b/nova/core/roles/docker/tasks/debian_os.yml similarity index 100% rename from nova/core/roles/docker/tasks/linux.yml rename to nova/core/roles/docker/tasks/debian_os.yml diff --git a/nova/core/roles/docker/tasks/main.yml b/nova/core/roles/docker/tasks/main.yml index 49ee8b8d..d0c23b98 100644 --- a/nova/core/roles/docker/tasks/main.yml +++ b/nova/core/roles/docker/tasks/main.yml @@ -1,8 +1,12 @@ --- - name: Installing Docker on Windows machine... ansible.builtin.include_tasks: windows.yml - when: "'os_windows' in group_names" + when: ansible_os_family == "Windows" - name: Installing Docker on Debian based Linux machine... - ansible.builtin.include_tasks: linux.yml - when: ansible_facts.os_family == "Debian" + ansible.builtin.include_tasks: debian_os.yml + when: ansible_os_family == "Debian" + +- name: Installing Docker on Archlinux based machine... + ansible.builtin.include_tasks: archlinux.yml + when: ansible_os_family == "Archlinux"