--- # Docker installation tasks - name: Check if Docker is already installed ansible.builtin.command: docker --version register: docker_installed changed_when: false failed_when: false - name: Install Docker when: docker_installed.rc != 0 block: - name: Install Docker dependencies ansible.builtin.apt: name: - apt-transport-https - ca-certificates - curl - gnupg - lsb-release state: present update_cache: yes become: yes - name: Create directory for Docker GPG key ansible.builtin.file: path: /etc/apt/keyrings state: directory mode: '0755' become: yes - name: Add Docker GPG key ansible.builtin.apt_key: url: https://download.docker.com/linux/ubuntu/gpg keyring: /etc/apt/keyrings/docker.gpg state: present become: yes - name: Add Docker repository ansible.builtin.apt_repository: repo: "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" state: present filename: docker become: yes - name: Install Docker Engine ansible.builtin.apt: name: - docker-ce - docker-ce-cli - containerd.io - docker-buildx-plugin - docker-compose-plugin state: present update_cache: yes become: yes - name: Add Forgejo user to Docker group ansible.builtin.user: name: "{{ forgejo_user }}" groups: docker append: yes become: yes - name: Ensure Docker service is started and enabled ansible.builtin.systemd: name: docker state: started enabled: yes daemon_reload: yes become: yes - name: Configure Docker daemon ansible.builtin.copy: dest: /etc/docker/daemon.json content: | { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" }, "storage-driver": "overlay2", "userland-proxy": false, "live-restore": true } mode: '0644' become: yes notify: Restart Docker - name: Verify Docker installation ansible.builtin.command: docker run --rm hello-world register: docker_test changed_when: false become: yes - name: Display Docker version ansible.builtin.debug: msg: "Docker is installed and working" when: docker_test.rc == 0