diff --git a/Makefile b/Makefile index 5f21ef8..b1849f9 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,10 @@ qnap: homelab: ansible-playbook playbooks/setup-homelab.yml +verify: + ansible-playbook playbooks/verify-homelab.yml + deps: pip install -r requirements.txt + pip3 install "ansible-lint" ansible-galaxy install -r requirements.yml diff --git a/group_vars/servers.yml b/group_vars/servers.yml index 6597f45..bcd0754 100644 --- a/group_vars/servers.yml +++ b/group_vars/servers.yml @@ -55,3 +55,7 @@ directories: backups_dir: /mnt/mergerfs/backups # path where photoprism photos are stored photoprism_dir: /mnt/mergerfs/photoprism + +desired_docker_images: + - ubuntu:latest + - busybox:latest diff --git a/playbooks/verify-homelab.yml b/playbooks/verify-homelab.yml new file mode 100644 index 0000000..e9cee4e --- /dev/null +++ b/playbooks/verify-homelab.yml @@ -0,0 +1,48 @@ +- hosts: all + become: true + pre_tasks: + - name: Include vault variables. + include_vars: '../{{vault_file}}' + tags: + - always + tasks: + - name: Docker Compose Files Exist + command: >- + stat {{directories.docker_compose_directory}}/{{ item.name }}/docker-compose.yml + with_items: '{{services}}' + changed_when: false + register: docker_compose_stat + + - name: Assert all Docker Compose files were created + assert: + that: item.rc == 0 + with_items: '{{docker_compose_stat.results}}' + + - name: Populate service facts + service_facts: {} + - name: Assert docker is installed and started + assert: + that: + - ansible_facts.services.docker.state == "running" + - ansible_facts.services['docker.service'].status == "enabled" + - name: Inspect all images + docker_image_info: {} + register: image_details + - name: Assert desired images exist + assert: + that: {{item in image_details.images | map(attribute='RepoTags') | flatten }} + with_items: '{{desired_docker_images}}' + + - name: Fetch Sudoers Files + command: 'stat /etc/sudoers.d/{{item.name}}' + changed_when: false + register: sudoers_stat + with_items: '{{users}}' + when: item.passwordless_sudo == true + + - name: Assert sudoers files are created + assert: + that: item.rc == 0 + with_items: '{{sudoers_stat.results}}' + + diff --git a/verify-homelab.yml b/verify-homelab.yml deleted file mode 100644 index fba1c3e..0000000 --- a/verify-homelab.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -- hosts: linodes - tasks: - # TODO - # Verify sudoers - # Verify ssh authorized key - # Verify docker installed - # Verify docker images pulled - # Verify app config files - - - name: Docker Compose Files Exist - command: "stat {{docker_compose_directory}}/{{ item.name }}/docker-compose.yml" - with_items: "{{services}}" - changed_when: false - register: stat - - name: Assert all Docker Compose files were created - assert: - that: item.rc == 0 - with_items: "{{stat.results}}"