--- - name: Install Docker prerequisites ansible.builtin.apt: name: - ca-certificates - curl state: present update_cache: true become: true - name: Ensure APT keyrings directory exists ansible.builtin.file: path: /etc/apt/keyrings state: directory mode: "0755" become: true - name: Download Docker official GPG key ansible.builtin.get_url: url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" dest: /etc/apt/keyrings/docker.asc mode: "0644" become: true - name: Add Docker official APT repository ansible.builtin.apt_repository: repo: >- deb [arch={{ ansible_pkg_arch }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable state: present filename: docker update_cache: true become: true - name: Install modern Docker CE packages ansible.builtin.apt: name: - docker-ce - docker-ce-cli - containerd.io - docker-buildx-plugin - docker-compose-plugin state: present become: true - name: Ensure Docker services are running and enabled ansible.builtin.service: name: docker state: started enabled: true become: true - name: Create docker user for container execution ansible.builtin.user: name: docker state: present system: true shell: /usr/sbin/nologin groups: docker append: true create_home: false become: true - name: Add deployment user to docker group ansible.builtin.user: name: deployment groups: docker append: true become: true - name: Create target for docker compose ansible.builtin.file: path: /opt/docker state: directory owner: deployment group: deployment mode: "0755" become: true