- name: "Remove Docker snap package" community.general.snap: name: "docker" state: absent when: - ansible_facts['distribution'] == "Ubuntu" - name: "Add apt key for Ubuntu Docker" apt_key: url: "https://download.docker.com/linux/ubuntu/gpg" state: present when: - ansible_facts['distribution'] == "Ubuntu" - name: "Add Docker Ubuntu repository" apt_repository: repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" state: present when: - ansible_facts['distribution'] == "Ubuntu" - name: "Add apt key for Debian Docker" apt_key: url: "https://download.docker.com/linux/debian/gpg" state: present when: - ansible_facts['distribution'] == "Debian" - name: "Add Docker Debian repository" apt_repository: repo: "deb [arch=amd64] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable" state: present when: - ansible_facts['distribution'] == "Debian" - name: "Install Docker" apt: state: present pkg: - docker-ce - docker-ce-cli - containerd.io - docker-compose - name: "Install the Docker API" ansible.builtin.pip: name: docker state: latest - name: "Download lazydocker" ansible.builtin.get_url: url: "https://github.com/jesseduffield/lazydocker/releases/download/v{{ docker_lazydocker_version }}/lazydocker_{{ docker_lazydocker_version }}_Linux_x86_64.tar.gz" dest: "/tmp/lazydocker.tar.gz" - name: "Extract lazydocker" ansible.builtin.unarchive: src: "/tmp/lazydocker.tar.gz" dest: "/usr/bin/" mode: "0777" remote_src: yes exclude: - "LICENSE" - "README.md" - name: "Get the Systems repository" ansible.builtin.git: repo: "https://git.2li.ch/Nebucatnetzer/docker_systems.git" dest: "/home/{{ ansible_ssh_user }}/docker_systems" become: no when: docker_skip_project is undefined - name: "Get the .env template" ansible.builtin.fetch: src: "{{ docker_project_path }}/.env.j2" dest: "/tmp/fetched/{{ inventory_hostname }}.env.j2" flat: yes fail_on_missing: no register: env_file become: no when: docker_skip_project is undefined - name: "Copy the .env file" ansible.builtin.template: src: "/tmp/fetched/{{ inventory_hostname }}.env.j2" dest: "{{ docker_project_path }}/.env" become: no when: docker_skip_project is undefined and env_file.changed - name: "Open the required UDP ports" ansible.builtin.ufw: rule: "allow" port: "{{ item }}" proto: "udp" loop: "{{ docker_udp_ports }}" when: docker_udp_ports is defined - name: "Open the required TCP ports" ansible.builtin.ufw: rule: "allow" port: "{{ item }}" proto: "tcp" loop: "{{ docker_tcp_ports }}" when: docker_tcp_ports is defined - name: "Start the Docker containers" community.docker.docker_compose: project_src: "{{ docker_project_path }}" state: "present" pull: "yes" remove_orphans: "yes" when: docker_skip_project is undefined - name: "Prune old data" community.docker.docker_prune: containers: yes images: yes images_filters: dangling: true networks: yes volumes: yes builder_cache: yes