--- - name: Debug distribution information debug: msg: - "Distribution: {{ ansible_facts['distribution'] }}" - "Distribution Release: {{ ansible_facts['distribution_release'] }}" - "Distribution Version: {{ ansible_facts['distribution_version'] }}" - "OS Family: {{ ansible_facts['os_family'] }}" when: ansible_debug_output | default(false) | bool - name: Check if Docker is already installed command: docker --version register: docker_check ignore_errors: true changed_when: false failed_when: false no_log: true - name: Check if Docker packages are installed via apt package_facts: manager: apt register: docker_apt_check changed_when: false - name: Set installation condition set_fact: docker_needs_install: "{{ docker_check.rc != 0 or 'docker-ce' not in ansible_facts.packages }}" - name: Docker installation tasks block: - name: Install Docker requirements apt: name: - apt-transport-https - ca-certificates - curl - gnupg - lsb-release state: present - name: Remove old Docker repository files file: path: "{{ item }}" state: absent loop: - /etc/apt/sources.list.d/docker.list - /etc/apt/sources.list.d/docker-ce.list - name: Create keyrings directory file: path: /etc/apt/keyrings state: directory mode: '0755' - name: Setup Docker GPG key include_tasks: setup_gpg_key.yml - name: Setup Docker repository include_tasks: "setup_repo_{{ ansible_facts['distribution'] | lower | replace(' ', '_') }}.yml" - name: Install Docker CE apt: name: - docker-ce - docker-ce-cli - containerd.io - docker-buildx-plugin - docker-compose-plugin state: present - name: Start and enable Docker service systemd: name: docker state: started enabled: yes - name: Set target user variable set_fact: target_user: "{{ ansible_user | default(ansible_user_id) }}" - name: Add user to docker group user: name: "{{ target_user }}" groups: docker append: yes when: docker_needs_install - name: Display Docker status debug: msg: - "Docker already installed: {{ docker_check.stdout if docker_check.rc == 0 else 'Not found' }}" - "Docker CE package installed: {{ 'Yes' if 'docker-ce' in ansible_facts.packages else 'No' }}" - "Actions taken: {{ 'None - Docker already present' if not docker_needs_install else 'Docker installation/configuration performed' }}" when: ansible_debug_output | default(false) | bool