--- - name: Frontend setup hosts: gitea vars: username: matt nas_host: nas.localdomain mounts: gitea_data: local: "/mnt/gitea_data" remote: "/var/nfs/shared/gitea_data" gitea_repos: local: "/mnt/gitea_repos" remote: "/var/nfs/shared/gitea_repos" gitea_backups: local: "/mnt/gitea_backups" remote: "/var/nfs/shared/gitea_backups" docker_add_repo: true docker_users: - "{{ username }}" roles: - role: geerlingguy.git become: true - role: geerlingguy.docker become: true tasks: - name: Create myapp directory in home ansible.builtin.file: path: "{{ ansible_env.HOME }}/gitea" state: directory mode: "0755" - name: Copy the gitea compose file to the host ansible.builtin.copy: src: gitea/compose.yaml dest: "{{ ansible_env.HOME }}/gitea/compose.yaml" # - name: Install NFS client # ansible.builtin.apt: # name: nfs-common # state: present # update_cache: true # become: true - name: Stop gitea services if running community.docker.docker_compose_v2: project_src: "{{ ansible_env.HOME }}/gitea/" state: absent ignore_errors: true - name: Unmount NFS volumes before creating mountpoint directories ansible.posix.mount: path: "{{ item.value.local }}" state: unmounted loop: "{{ mounts | dict2items }}" become: true - name: Create mountpoint directories for gitea ansible.builtin.file: path: "{{ item.value.local }}" state: directory mode: "0755" loop: "{{mounts | dict2items }}" become: true - name: Mount an NFS volume for repositories ansible.posix.mount: src: "192.168.1.160:{{ item.value.remote }}" path: "{{ item.value.local }}" opts: nfsvers=3,proto=tcp,rw state: mounted fstype: nfs loop: "{{ mounts | dict2items }}" become: true - name: Create and start services community.docker.docker_compose_v2: project_src: "{{ ansible_env.HOME }}/gitea/" state: present - name: Start watchtower community.docker.docker_container: name: watchtower image: nickfedor/watchtower restart_policy: always volumes: - /var/run/docker.sock:/var/run/docker.sock - /home/matt/.docker/config.json:/config.json command: - --cleanup - --http-api-update - --http-api-token={{ secrets.WATCHTOWER_HTTP_API_TOKEN }} - --http-api-periodic-polls ports: - "8080:8080" state: started