aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorColin Wilk <colin.wilk@tum.de>2023-05-27 20:00:19 +0200
committerColin Wilk <colin.wilk@tum.de>2023-05-27 20:00:19 +0200
commit4dbd1e660fe815a2cc6032c54a2c1d1dbf62cd7b (patch)
tree785801b9a47719c58069147960433d1854df4c65
parent0b2823d40892ffca4c0c64536c6a821cebaf3ff6 (diff)
downloadansible-role-prometheus-target-4dbd1e660fe815a2cc6032c54a2c1d1dbf62cd7b.tar.gz
ansible-role-prometheus-target-4dbd1e660fe815a2cc6032c54a2c1d1dbf62cd7b.zip
Add molecule with some simple test cases
Signed-off-by: Colin Wilk <colin.wilk@tum.de>
-rw-r--r--molecule/.gitignore1
-rw-r--r--molecule/default/Dockerfile.j212
-rw-r--r--molecule/default/converge.yml43
-rw-r--r--molecule/default/molecule.yml39
-rw-r--r--molecule/default/tests/test_check_prometheus_targets.py16
5 files changed, 111 insertions, 0 deletions
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