From 4dbd1e660fe815a2cc6032c54a2c1d1dbf62cd7b Mon Sep 17 00:00:00 2001 From: Colin Wilk Date: Sat, 27 May 2023 20:00:19 +0200 Subject: Add molecule with some simple test cases Signed-off-by: Colin Wilk --- molecule/.gitignore | 1 + molecule/default/Dockerfile.j2 | 12 ++++++ molecule/default/converge.yml | 43 ++++++++++++++++++++++ molecule/default/molecule.yml | 39 ++++++++++++++++++++ .../default/tests/test_check_prometheus_targets.py | 16 ++++++++ 5 files changed, 111 insertions(+) create mode 100644 molecule/.gitignore create mode 100644 molecule/default/Dockerfile.j2 create mode 100644 molecule/default/converge.yml create mode 100644 molecule/default/molecule.yml create mode 100644 molecule/default/tests/test_check_prometheus_targets.py (limited to 'molecule') diff --git a/molecule/.gitignore b/molecule/.gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/molecule/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/molecule/default/Dockerfile.j2 b/molecule/default/Dockerfile.j2 new file mode 100644 index 0000000..42750e4 --- /dev/null +++ b/molecule/default/Dockerfile.j2 @@ -0,0 +1,12 @@ +FROM {{ item.image }} + +# Install dependencies. +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + sudo wget \ + python3-pip python3-dev python3-setuptools python3-wheel python3-apt \ + && rm -rf /var/lib/apt/lists/* \ + && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \ + && apt-get clean + +ENTRYPOINT ["bash", "-c", "sleep infinity"] diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml new file mode 100644 index 0000000..f9bd174 --- /dev/null +++ b/molecule/default/converge.yml @@ -0,0 +1,43 @@ +--- +- name: Converge + hosts: application + pre_tasks: + - name: Create targets + ansible.builtin.file: + path: '{{ item }}' + state: touch + modification_time: preserve + access_time: preserve + mode: '0644' + become: true + delegate_to: '{{ prometheus_target_host }}' + loop: + - /opt/target1.yml + - /opt/target2.yml + - /opt/target3.yml + + vars: + prometheus_target_handler_command_enabled: true + prometheus_target_handler_command: + cmd: echo test + prometheus_target_handler_shell_enabled: true + prometheus_target_handler_shell: + cmd: echo test + prometheus_target_exporter_defaults: + node_exporter: + path: /opt/target1.yml + host: '{{ inventory_hostname }}' + blackbox_exporter: + path: /opt/target2.yml + host: '{{ inventory_hostname }}_AA' + + roles: + - role: kliwniloc.prometheus_target + prometheus_target_exporter: + - id: node_exporter + - { id: blackbox_exporter, host: test1 } + - { id: blackbox_exporter, host: test2 } + - role: kliwniloc.prometheus_target + prometheus_target_exporter: + - id: blackbox_exporter + path: /opt/target3.yml diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml new file mode 100644 index 0000000..a8623d0 --- /dev/null +++ b/molecule/default/molecule.yml @@ -0,0 +1,39 @@ +--- +dependency: + name: galaxy + + +driver: + name: docker + + +platforms: + + - name: application + image: ${MOLECULE_DISTRO:-debian:10} + dockerfile: Dockerfile.j2 + pre_build_image: false + docker_networks: + - name: molecule-container-net + driver_options: + # Setting the mtu size due to issues with docker and VPN + com.docker.network.driver.mtu: 1420 + networks: + - name: molecule-container-net + + - name: prometheus + image: ${MOLECULE_DISTRO:-debian:10} + dockerfile: Dockerfile.j2 + pre_build_image: false + networks: + - name: molecule-container-net + + +provisioner: + name: ansible + playbooks: + converge: ${MOLECULE_PLAYBOOK:-converge.yml} + + +verifier: + name: testinfra diff --git a/molecule/default/tests/test_check_prometheus_targets.py b/molecule/default/tests/test_check_prometheus_targets.py new file mode 100644 index 0000000..8a0f413 --- /dev/null +++ b/molecule/default/tests/test_check_prometheus_targets.py @@ -0,0 +1,16 @@ +testinfra_hosts = ['prometheus'] + + +def test_check_hosts_added(host): + t1 = host.file('/opt/target1.yml') + t2 = host.file('/opt/target2.yml') + t3 = host.file('/opt/target3.yml') + + assert t1.exists + assert t2.exists + assert t3.exists + + assert ' - application' in t1.content_string + assert ' - test1' in t2.content_string + assert ' - test2' in t2.content_string + assert ' - application_AA' in t3.content_string -- cgit v1.2.3