--- - name: Remove old Docker versions ansible.builtin.apt: name: - docker - docker-engine - docker.io - containerd - runc state: absent purge: true - name: Create keyrings directory ansible.builtin.file: path: /etc/apt/keyrings state: directory mode: "0755" - name: Add Docker GPG key ansible.builtin.get_url: url: https://download.docker.com/linux/ubuntu/gpg dest: /etc/apt/keyrings/docker.asc mode: "0644" retries: 5 delay: 10 register: gpg_key until: gpg_key is succeeded - name: Add Docker repository ansible.builtin.apt_repository: repo: >- deb [arch={{ ansible_facts['architecture'] | replace('x86_64', 'amd64') }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_facts['distribution_release'] }} stable filename: docker state: present retries: 3 delay: 10 register: docker_repo until: docker_repo is succeeded - name: Install Docker Engine and Compose plugin ansible.builtin.apt: name: - docker-ce - docker-ce-cli - containerd.io - docker-buildx-plugin - docker-compose-plugin state: present update_cache: true retries: 3 delay: 10 register: docker_install until: docker_install is succeeded notify: Restart Docker - name: Configure Docker daemon (registry mirrors) ansible.builtin.copy: dest: /etc/docker/daemon.json content: | { "registry-mirrors": [ "https://dockerhub.timeweb.cloud" ] } mode: "0644" notify: Restart Docker - name: Ensure Docker is started and enabled ansible.builtin.systemd: name: docker state: started enabled: true - name: Add deploy user to docker group ansible.builtin.user: name: "{{ deploy_user }}" groups: docker append: true