--- - name: Manage extinct_potato's personal cloud hosts: all vars: d_stuff: "/home/{{ ansible_ssh_user }}/dstuff" tasks: - name: Ensure Python3 is default become: yes community.general.alternatives: name: python path: /usr/bin/python3 link: /usr/bin/python - name: Ensure initial prerequisites become: yes apt: update_cache: yes pkg: - git - apt-transport-https - ca-certificates - curl - software-properties-common - python3-pip - virtualenv - python3-setuptools - python3-docker - python3-requests - name: Add Docker GPG key become: yes apt_key: url: https://download.docker.com/linux/debian/gpg state: present - name: Add Docker repository become: yes apt_repository: repo: deb https://download.docker.com/linux/debian buster stable state: present - name: Install Docker become: yes apt: update_cache: yes pkg: - docker-ce - docker-ce-cli - containerd.io - name: Install docker-compose pip: name: docker-compose - name: Add the current SSH user to Docker group become: yes user: name: "{{ ansible_ssh_user }}" groups: docker append: yes - name: Ensure Docker service is enabled become: yes ansible.builtin.systemd: name: docker state: started enabled: yes - name: Create a network for related containers community.docker.docker_network: name: web - name: Ensure directory for stuff file: path: '{{ ansible_env.HOME }}/d' state: directory - name: Ensure the deploy key copy: src: "{{ item }}" dest: "{{ ansible_env.HOME }}/.ssh/" mode: 0600 with_fileglob: - secrets/id_rsa* - name: Clone the repository with compose files git: repo: 'ssh://git@git.hopeburn.eu:42367/dockerstuff/personal-cloud-docker-stuff.git' dest: "{{ d_stuff }}" accept_hostkey: yes register: d_stuff_ret - name: Update generic containers when: d_stuff_ret.changed block: - name: List generic container sets find: paths: "{{ d_stuff }}" patterns: "*" recurse: no file_type: directory register: generic_containers - name: List files debug: msg: "{{ [item.path] }}" with_items: "{{ generic_containers.files }}" - name: Tear down containers community.docker.docker_compose: project_src: "{{ [item.path] }}" state: absent debug: yes with_items: "{{ generic_containers.files }}" - name: Update and start containers community.docker.docker_compose: project_src: "{{ [item.path] }}" state: present stopped: yes build: yes pull: yes with_items: "{{ generic_containers.files }}"