--- # Docker installation and configuration tasks - name: Remove old Docker packages apt: name: - docker - docker-engine - docker.io - containerd - runc state: absent tags: ['docker_install'] - name: Add Docker GPG key apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present tags: ['docker_install'] - name: Add Docker repository apt_repository: repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" state: present update_cache: yes tags: ['docker_install'] - name: Install Docker CE apt: name: - docker-ce - docker-ce-cli - containerd.io - docker-buildx-plugin - docker-compose-plugin state: present update_cache: yes notify: restart docker tags: ['docker_install'] - name: Install Docker Compose standalone get_url: url: "https://github.com/docker/compose/releases/download/v{{ docker_compose_version }}/docker-compose-linux-x86_64" dest: /usr/local/bin/docker-compose mode: '0755' owner: root group: root tags: ['docker_compose'] - name: Remove existing docker-compose if present file: path: /usr/bin/docker-compose state: absent tags: ['docker_compose'] - name: Create docker-compose symlink file: src: /usr/local/bin/docker-compose dest: /usr/bin/docker-compose state: link tags: ['docker_compose'] - name: Start and enable Docker service systemd: name: docker state: started enabled: yes daemon_reload: yes tags: ['docker_service'] - name: Configure Docker daemon template: src: daemon.json.j2 dest: /etc/docker/daemon.json backup: yes notify: restart docker tags: ['docker_config'] - name: Create Docker log rotation configuration template: src: docker-logrotate.j2 dest: /etc/logrotate.d/docker mode: '0644' tags: ['docker_logging'] - name: Verify Docker installation command: docker --version register: docker_version changed_when: false tags: ['docker_verify'] - name: Verify Docker Compose installation command: docker-compose --version register: docker_compose_version_check changed_when: false tags: ['docker_verify'] - name: Display Docker versions debug: msg: | Docker version: {{ docker_version.stdout }} Docker Compose version: {{ docker_compose_version_check.stdout }} tags: ['docker_verify'] - name: Test Docker functionality docker_container: name: hello-world-test image: hello-world state: started auto_remove: yes detach: no register: docker_test tags: ['docker_test'] - name: Remove test container docker_container: name: hello-world-test state: absent tags: ['docker_test'] - name: Clean up Docker test image docker_image: name: hello-world state: absent tags: ['docker_test']