- name: Install Docker on Debian, Ubuntu, or Raspbian hosts: Docker become: true gather_facts: true tasks: - name: Install required system packages apt: name: - apt-transport-https - ca-certificates - curl - software-properties-common - virtualenv state: latest update_cache: true when: ansible_os_family == "Debian" - name: Create apt keyrings directory ansible.builtin.file: path: /etc/apt/keyrings state: directory mode: '0755' when: ansible_os_family == "Debian" - name: Download Docker GPG key ansible.builtin.get_url: url: https://download.docker.com/linux/ubuntu/gpg dest: /etc/apt/keyrings/docker.asc mode: '0644' force: false when: ansible_os_family == "Debian" - name: Add Docker Repository ansible.builtin.apt_repository: repo: "deb [arch={{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" state: present filename: docker when: ansible_os_family == "Debian" - name: Update apt and install Docker packages ansible.builtin.apt: name: - docker-ce - docker-ce-cli - containerd.io - docker-compose-plugin state: latest update_cache: true when: ansible_os_family == "Debian" - name: Install Docker dependencies for RedHat/CentOS package: name: - yum-utils - device-mapper-persistent-data - lvm2 state: present when: ansible_os_family == "RedHat" - name: Add Docker repository for RedHat/CentOS yum_repository: name: docker-ce-stable description: Docker CE Stable - $basearch baseurl: https://download.docker.com/linux/centos/7/$basearch/stable enabled: yes gpgcheck: yes gpgkey: https://download.docker.com/linux/centos/gpg when: ansible_os_family == "RedHat" - name: Install Docker for RedHat/CentOS package: name: docker-ce state: present when: ansible_os_family == "RedHat" - name: Add authenticated user to Docker group user: name: "{{ ansible_user }}" groups: docker append: yes when: ansible_os_family == "Debian" or ansible_os_family == "RedHat" - name: Ensure Docker service is enabled and started systemd: name: docker enabled: yes state: started - name: Reset connection to refresh user group membership meta: reset_connection