diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 3449ae3..9ef5e46 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -1,17 +1,55 @@ --- -- name: Install necessary Docker packages +- name: Install Docker prerequisites ansible.builtin.apt: name: - - docker.io - - docker-compose + - 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 service is running +- 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: @@ -24,6 +62,13 @@ 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