- name: Install Docker ansible.builtin.apt: name: ['docker.io', 'docker-compose'] state: present update_cache: true - name: Create docker-compose root ansible.builtin.file: path: "{{ docker_compose_root }}" state: directory mode: 0500 - name: Install docker-compose systemd service ansible.builtin.template: src: docker-compose.service.j2 dest: "/etc/systemd/system/{{ docker_compose_service }}@.service" mode: 0400 notify: compose_systemd - name: Create directories to clone docker-compose repositories ansible.builtin.file: path: "{{ item }}" state: directory mode: 0400 loop: - "{{ docker_repos_path }}" - "{{ docker_repos_keys }}" when: docker_compose_deploy is defined - name: Generate OpenSSH deploy keys for docker-compose clones community.crypto.openssh_keypair: path: "{{ docker_repos_keys }}/id_{{ docker_repos_keytype }}" type: "{{ docker_repos_keytype }}" mode: 0400 state: present when: docker_compose_deploy is defined - name: Clone external docker-compose projects ansible.builtin.git: repo: "{{ item.url }}" dest: "{{ docker_repos_path }}/{{ item.name }}" version: "{{ item.version | default('main') }}" force: true key_file: "{{ docker_repos_keys }}/id_{{ docker_repos_keytype }}" when: docker_compose_deploy is defined loop: "{{ docker_compose_deploy }}" - name: Create directories for docker-compose projects using the systemd service ansible.builtin.file: path: "{{ docker_compose_root }}/{{ item.name }}" state: directory mode: 0400 loop: "{{ docker_compose_deploy }}" when: docker_compose_deploy is defined - name: Copy docker-compose.yml files to their service directories ansible.builtin.copy: src: "{{ docker_repos_path }}/{{ item.name }}/{{ item.path | default('docker-compose.yml') }}" dest: "{{ docker_compose_root }}/{{ item.name }}/docker-compose.yml" remote_src: yes loop: "{{ docker_compose_deploy }}" when: docker_compose_deploy is defined - name: Set environment variables for docker-compose projects ansible.builtin.template: src: docker-compose-env.j2 dest: "{{ docker_compose_root }}/{{ item.name }}/.env" mode: 0400 loop: "{{ docker_compose_deploy }}" when: docker_compose_deploy is defined and item.env is defined - name: Add users to docker group ansible.builtin.user: name: "{{ item }}" groups: docker append: true loop: "{{ docker_users }}" when: docker_users is defined - name: Start Docker and enable on boot ansible.builtin.service: name: docker state: started enabled: true - name: Start docker-compose services and enable on boot ansible.builtin.service: name: "{{ docker_compose_service }}@{{ item.name }}" state: started enabled: true loop: "{{ docker_compose_deploy }}" when: item.enabled is defined and item.enabled is true