diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml index 2578ab6..4406898 100644 --- a/molecule/default/verify.yml +++ b/molecule/default/verify.yml @@ -53,3 +53,32 @@ - stat_opt_adguard_data.stat.pw_name == 'root' - stat_opt_adguard_data.stat.gr_name == 'root' - stat_opt_adguard_data.stat.mode == '0755' + + - name: "Test: file /opt/adguard/docker-compose.yml" + block: + - name: "Slurp file /opt/adguard/docker-compose.yml" + ansible.builtin.slurp: + src: "/opt/adguard/docker-compose.yml" + register: slurp_opt_adguard_docker_compose_yml + + + - name: "Set fact for file content /opt/adguard/docker-compose.yml" + ansible.builtin.set_fact: + opt_adguard_docker_compose_yml_json: "{{ slurp_opt_adguard_docker_compose_yml.content | b64decode | from_yaml | to_json | from_json }}" + + - name: "Verify file /opt/adguard/docker-compose.yml" + ansible.builtin.assert: + that: + - opt_adguard_docker_compose_yml_json['version'] is defined + - opt_adguard_docker_compose_yml_json['version'] == '3.9' + - opt_adguard_docker_compose_yml_json['services'] is defined + - opt_adguard_docker_compose_yml_json['services']|length == 1 + - opt_adguard_docker_compose_yml_json['services']['adguard'] is defined + - opt_adguard_docker_compose_yml_json['services']['adguard']['image'] == 'adguard/adguardhome:latest' + - opt_adguard_docker_compose_yml_json['networks'] is defined + - opt_adguard_docker_compose_yml_json['networks']|length == 1 + - opt_adguard_docker_compose_yml_json['volumes'] is defined + - opt_adguard_docker_compose_yml_json['volumes']|length == 2 + - opt_adguard_docker_compose_yml_json['volumes']['conf'] is defined + - opt_adguard_docker_compose_yml_json['volumes']['data'] is defined + - opt_adguard_docker_compose_yml_json['secrets'] is not defined diff --git a/molecule/with_extra_sidecars/converge.yml b/molecule/with_extra_sidecars/converge.yml new file mode 100644 index 0000000..b2b50da --- /dev/null +++ b/molecule/with_extra_sidecars/converge.yml @@ -0,0 +1,7 @@ +--- +- name: Converge + hosts: all + tasks: + - name: "Include ednxzu.deploy_adguard" + ansible.builtin.include_role: + name: "ednxzu.deploy_adguard" diff --git a/molecule/with_extra_sidecars/group_vars/all.yml b/molecule/with_extra_sidecars/group_vars/all.yml new file mode 100644 index 0000000..a0ff264 --- /dev/null +++ b/molecule/with_extra_sidecars/group_vars/all.yml @@ -0,0 +1,37 @@ +--- +# defaults file for deploy_adguard +deploy_adguard_directory: /opt/adguard +deploy_adguard_timezone: "Europe/Paris" +deploy_adguard_enable_admin_interface: true +deploy_adguard_enable_dhcp: false +deploy_adguard_enable_doh: true +deploy_adguard_enable_dot: false +deploy_adguard_enable_doq: false +deploy_adguard_enable_dnscrypt: false +deploy_adguard_start_service: false +deploy_adguard_virtual_ip: + enable: true + interface: eth0 + vip_addr: "192.168.1.53" +deploy_adguard_node_exporter: + enable: true + protocol: http + port: 80 + username: admin + password: password + exporter_port: 9617 + interval: 10s + log_limit: 10000 +deploy_adguard_consul: + enable: false + consul_addr: http://127.0.0.1:8500 + consul_token: someUUIDhere + configuration: + service: + name: adguard + address: "{{ ansible_default_ipv4.address }}" + port: 80 + tags: [] + connect: + sidecar_service: {} +deploy_adguard_config: {} diff --git a/molecule/with_extra_sidecars/molecule.yml b/molecule/with_extra_sidecars/molecule.yml new file mode 100644 index 0000000..211e350 --- /dev/null +++ b/molecule/with_extra_sidecars/molecule.yml @@ -0,0 +1,37 @@ +--- +dependency: + name: galaxy + options: + requirements-file: ./requirements.yml +driver: + name: docker +platforms: + - name: instance + image: geerlingguy/docker-${MOLECULE_TEST_OS}-ansible + command: "" + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup + cgroupns_mode: host + privileged: true + pre_build_image: true +provisioner: + name: ansible + config_options: + defaults: + remote_tmp: /tmp/.ansible +verifier: + name: ansible +scenario: + name: with_extra_sidecars + test_sequence: + - dependency + - cleanup + - destroy + - syntax + - create + - prepare + - converge + - idempotence + - verify + - cleanup + - destroy diff --git a/molecule/with_extra_sidecars/verify.yml b/molecule/with_extra_sidecars/verify.yml new file mode 100644 index 0000000..4406898 --- /dev/null +++ b/molecule/with_extra_sidecars/verify.yml @@ -0,0 +1,84 @@ +--- +- name: Verify + hosts: all + gather_facts: false + tasks: + - name: "Test: file /etc/hosts" + block: + - name: "Stat file /etc/hosts" + ansible.builtin.stat: + path: "/etc/hosts" + register: stat_etc_hosts + + - name: "Verify file /etc/hosts" + ansible.builtin.assert: + that: + - stat_etc_hosts.stat.exists + - stat_etc_hosts.stat.isreg + - stat_etc_hosts.stat.pw_name == 'root' + - stat_etc_hosts.stat.gr_name == 'root' + + - name: "Test: directory /opt/adguard" + block: + - name: "Stat directory /opt/adguard" + ansible.builtin.stat: + path: "/opt/adguard" + register: stat_opt_adguard + + - name: "Stat directory /opt/adguard/conf" + ansible.builtin.stat: + path: "/opt/adguard/conf" + register: stat_opt_adguard_conf + + - name: "Stat directory /opt/adguard/data" + ansible.builtin.stat: + path: "/opt/adguard/data" + register: stat_opt_adguard_data + + - name: "Verify directory /etc/consul.d" + ansible.builtin.assert: + that: + - stat_opt_adguard.stat.exists + - stat_opt_adguard.stat.isdir + - stat_opt_adguard.stat.pw_name == 'root' + - stat_opt_adguard.stat.gr_name == 'root' + - stat_opt_adguard.stat.mode == '0755' + - stat_opt_adguard_conf.stat.exists + - stat_opt_adguard_conf.stat.isdir + - stat_opt_adguard_conf.stat.pw_name == 'root' + - stat_opt_adguard_conf.stat.gr_name == 'root' + - stat_opt_adguard_conf.stat.mode == '0755' + - stat_opt_adguard_data.stat.exists + - stat_opt_adguard_data.stat.isdir + - stat_opt_adguard_data.stat.pw_name == 'root' + - stat_opt_adguard_data.stat.gr_name == 'root' + - stat_opt_adguard_data.stat.mode == '0755' + + - name: "Test: file /opt/adguard/docker-compose.yml" + block: + - name: "Slurp file /opt/adguard/docker-compose.yml" + ansible.builtin.slurp: + src: "/opt/adguard/docker-compose.yml" + register: slurp_opt_adguard_docker_compose_yml + + + - name: "Set fact for file content /opt/adguard/docker-compose.yml" + ansible.builtin.set_fact: + opt_adguard_docker_compose_yml_json: "{{ slurp_opt_adguard_docker_compose_yml.content | b64decode | from_yaml | to_json | from_json }}" + + - name: "Verify file /opt/adguard/docker-compose.yml" + ansible.builtin.assert: + that: + - opt_adguard_docker_compose_yml_json['version'] is defined + - opt_adguard_docker_compose_yml_json['version'] == '3.9' + - opt_adguard_docker_compose_yml_json['services'] is defined + - opt_adguard_docker_compose_yml_json['services']|length == 1 + - opt_adguard_docker_compose_yml_json['services']['adguard'] is defined + - opt_adguard_docker_compose_yml_json['services']['adguard']['image'] == 'adguard/adguardhome:latest' + - opt_adguard_docker_compose_yml_json['networks'] is defined + - opt_adguard_docker_compose_yml_json['networks']|length == 1 + - opt_adguard_docker_compose_yml_json['volumes'] is defined + - opt_adguard_docker_compose_yml_json['volumes']|length == 2 + - opt_adguard_docker_compose_yml_json['volumes']['conf'] is defined + - opt_adguard_docker_compose_yml_json['volumes']['data'] is defined + - opt_adguard_docker_compose_yml_json['secrets'] is not defined diff --git a/templates/docker-compose.yml.j2 b/templates/docker-compose.yml.j2 index df76051..14bf883 100644 --- a/templates/docker-compose.yml.j2 +++ b/templates/docker-compose.yml.j2 @@ -60,7 +60,7 @@ services: - data:/opt/adguardhome/work networks: - internal -{% if deploy_adguard_node_exporter %} +{% if deploy_adguard_node_exporter['enable'] %} node_exporter: image: ebrianne/adguard-exporter:latest @@ -100,6 +100,8 @@ volumes: device: {{ deploy_adguard_directory }}/data type: none +{% if deploy_adguard_node_exporter['enable'] %} secrets: adguard_passw: file: {{ deploy_adguard_directory }}/password +{% endif %}