--- # Set up Docker's official apt repository and install Docker + Compose plugin. - name: Install prerequisites for Docker repo (Debian/Ubuntu) ansible.builtin.apt: name: - ca-certificates - curl - gnupg state: present update_cache: true when: ansible_facts["os_family"] == "Debian" - name: Create keyrings directory ansible.builtin.file: path: /etc/apt/keyrings state: directory mode: '0755' when: ansible_facts["os_family"] == "Debian" - name: Add Docker GPG key ansible.builtin.get_url: url: "https://download.docker.com/linux/{{ 'ubuntu' if ansible_facts['distribution'] == 'Ubuntu' else 'debian' }}/gpg" dest: /etc/apt/keyrings/docker.asc mode: '0644' force: false when: ansible_facts["os_family"] == "Debian" - name: Add Docker apt repository ansible.builtin.apt_repository: repo: "deb [arch={{ ansible_facts['architecture'] | regex_replace('x86_64', 'amd64') | regex_replace('aarch64', 'arm64') }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/{{ 'ubuntu' if ansible_facts['distribution'] == 'Ubuntu' else 'debian' }} {{ ansible_facts['distribution_release'] }} stable" filename: docker state: present update_cache: true when: ansible_facts["os_family"] == "Debian" - name: Install Docker (Debian/Ubuntu) ansible.builtin.apt: name: - docker-ce - docker-ce-cli - containerd.io - docker-compose-plugin state: present when: ansible_facts["os_family"] == "Debian" - name: Remove old docker packages (Debian/Ubuntu) ansible.builtin.apt: name: - docker.io - docker-compose state: absent when: ansible_facts["os_family"] == "Debian" - name: Install Docker (Alpine) community.general.apk: name: - docker - docker-cli-compose state: present when: ansible_facts["os_family"] == "Alpine" - name: Enable and start Docker ansible.builtin.service: name: docker state: started enabled: true - name: Create docker compose project directories ansible.builtin.file: path: "/opt/docker/{{ item }}" state: directory mode: '0755' loop: "{{ docker_services | default([]) }}"