diff --git a/Makefile b/Makefile index 29636b0..a313b40 100644 --- a/Makefile +++ b/Makefile @@ -8,11 +8,14 @@ bootstrap: qnap: ansible-playbook playbooks/setup-homelab.yml --limit qnap +services: + ansible-playbook playbooks/setup-homelab.yml --tags services + snunmu: ansible-playbook playbooks/setup-homelab.yml --limit snunmu -homelab: bootstrap +homelab: ansible-playbook playbooks/setup-homelab.yml verify: diff --git a/group_vars/servers.yml b/group_vars/servers.yml index 8535acd..c6f8119 100644 --- a/group_vars/servers.yml +++ b/group_vars/servers.yml @@ -15,11 +15,11 @@ olivetin: config_file: config.yml config_directory: /etc/config/OliveTin -docker_networks: [] - homelab_user: cianhatton -configure_samba: true + +configure_mergerfs: false +configure_samba: false samba_group: smbgroup samba_user: smbuser users: @@ -51,4 +51,8 @@ directories: desired_docker_images: - ubuntu:latest - - busybox:latest + +portainer_endpoint: -1 +portainer_host: false +portainer_base_url: "http://qnap:9000" +external_docker_networks: [] diff --git a/host_vars/qnap.yml b/host_vars/qnap.yml index 7be206f..4bc9498 100644 --- a/host_vars/qnap.yml +++ b/host_vars/qnap.yml @@ -1,6 +1,7 @@ # all encrypted variables should go in the linked file. vault_file: vault_vars/qnap-vault.yml # any qnap specific variables go here +configure_mergerfs: true mounts: - path: /mnt/mergerfs state: mounted @@ -10,6 +11,10 @@ mounts: - /mnt/data/device2 options: allow_other,use_ino + +configure_samba: true +portainer_host: true + devices: - uuid: a54c1bde-1400-4975-bf24-08c603ca3a11 # /dev/sdc1 path: /mnt/data/device0 @@ -25,48 +30,35 @@ devices: external_docker_networks: - mariadb_net +portainer_endpoint: 2 + services: - name: gitea - endpoint_id: &qnap_endpoint 2 template_vars: image: gitea/gitea tag: 1.16.9 - name: mealie - endpoint_id: *qnap_endpoint - template_vars: {} - - name: linkding - endpoint_id: *qnap_endpoint template_vars: {} - name: overseerr - endpoint_id: *qnap_endpoint template_vars: {} - name: nextcloud - endpoint_id: *qnap_endpoint template_vars: default_network: mariadb_net - name: dashboards - endpoint_id: *qnap_endpoint template_vars: {} - name: nginx-proxy-manager - endpoint_id: *qnap_endpoint template_vars: {} - name: plex - endpoint_id: *qnap_endpoint template_vars: {} - name: uptime-kuma - endpoint_id: *qnap_endpoint template_vars: {} - name: vpn-stack - endpoint_id: *qnap_endpoint template_vars: {} - name: mariadb - endpoint_id: *qnap_endpoint template_vars: default_network: mariadb_net - name: photoprism - endpoint_id: *qnap_endpoint template_vars: default_network: mariadb_net - name: olivetin - endpoint_id: *qnap_endpoint template_vars: {} diff --git a/host_vars/snunmu.yml b/host_vars/snunmu.yml index ed97d53..ec35954 100644 --- a/host_vars/snunmu.yml +++ b/host_vars/snunmu.yml @@ -1 +1,7 @@ --- +vault_file: vault_vars/qnap-vault.yml + +portainer_endpoint: 23 +services: + - name: linkding + template_vars: {} diff --git a/playbooks/setup-homelab.yml b/playbooks/setup-homelab.yml index ec9dd84..18c32b0 100644 --- a/playbooks/setup-homelab.yml +++ b/playbooks/setup-homelab.yml @@ -11,15 +11,8 @@ roles: - role: setup_users -- name: Install docker on docker hosts - hosts: dockerhosts - become: true - roles: - - role: setup_docker - tags: [setup, docker] - -- name: Setup and deploy services on the QNAP - hosts: qnap +- name: Setup and deploy services. + hosts: servers become: true pre_tasks: - name: Include vault variables. @@ -29,14 +22,18 @@ roles: - role: setup_mergerfs tags: [mergerfs] + when: configure_mergerfs - role: setup_samba + when: configure_samba tags: [samba] + - role: setup_docker + tags: [setup, docker] - role: setup_portainer + when: portainer_host tags: [services, portainer] - role: setup_hosted_services tags: [services] - - name: Setup home lab on linode instances. hosts: linodes become: true diff --git a/roles/deploy_portainer_stack/tasks/main.yml b/roles/deploy_portainer_stack/tasks/main.yml index 0b63809..03ad358 100644 --- a/roles/deploy_portainer_stack/tasks/main.yml +++ b/roles/deploy_portainer_stack/tasks/main.yml @@ -56,6 +56,7 @@ chatton.portainer.portainer_stack: username: admin password: '{{ portainer.password }}' + base_url: '{{ portainer_base_url }}' docker_compose_file_path: '{{ directories.docker_compose_directory }}/{{ portainer_stack_name }}/docker-compose.yml' stack_name: '{{ portainer_stack_name }}' endpoint_id: '{{ portainer_stack_endpoint_id }}' diff --git a/roles/setup_hosted_services/tasks/main.yml b/roles/setup_hosted_services/tasks/main.yml index 2b8fc1d..2419586 100644 --- a/roles/setup_hosted_services/tasks/main.yml +++ b/roles/setup_hosted_services/tasks/main.yml @@ -1,4 +1,9 @@ --- +- name: Install Modules for Python + ansible.builtin.pip: + name: + - boto3 + - name: Docker | Pull images docker_image: name: '{{ item }}' @@ -47,7 +52,7 @@ name: deploy_portainer_stack vars: portainer_stack_name: "{{ item.name }}" - portainer_stack_endpoint_id: "{{ item.endpoint_id }}" + portainer_stack_endpoint_id: "{{ portainer_endpoint }}" portainer_stack_template_vars: "{{ item.template_vars | default({}) }}" with_items: "{{ services }}"