diff options
| author | Colin Wilk <colin.wilk@tum.de> | 2023-10-11 15:34:10 +0200 |
|---|---|---|
| committer | Colin Wilk <colin.wilk@tum.de> | 2023-10-11 15:49:45 +0200 |
| commit | c9c812343831be1bb56965b2aeff41eecdae0a11 (patch) | |
| tree | 4a5eec53821831cfc746788f631e8b283bfebe3b /molecule | |
| parent | 6da60ee68e98d97f2c58ea7dca39d85c9b81370b (diff) | |
| download | ansible-role-prometheus-target-c9c812343831be1bb56965b2aeff41eecdae0a11.tar.gz ansible-role-prometheus-target-c9c812343831be1bb56965b2aeff41eecdae0a11.zip | |
Add run_once option for handlers
This adds the run_once option for the two handler types (shell and
command). The variables `prometheus_target_handler_command_run_once`
and `prometheus_target_handler_shell_run_once` are introduced to
control this behavior.
For this change a switch from the Ansible Handlers to regular tasks was
necessary to enforce run_once behavior with delegated hosts. If you
don't rely on handler specific features such as deferring, nothing
changes when using the role.
Signed-off-by: Colin Wilk <colin.wilk@tum.de>
Diffstat (limited to 'molecule')
| -rw-r--r-- | molecule/default/converge.yml | 12 | ||||
| -rw-r--r-- | molecule/default/molecule.yml | 9 | ||||
| -rw-r--r-- | molecule/default/tests/test_check_prometheus_targets.py | 14 |
3 files changed, 26 insertions, 9 deletions
diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index 9346988..cb6a281 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -83,7 +83,7 @@ ################################################################################ ################################################################################ - name: Deploy with hooks - hosts: application + hosts: application_group pre_tasks: - name: Create targets ansible.builtin.file: @@ -96,23 +96,23 @@ delegate_to: '{{ prometheus_target_host }}' loop: - /opt/hook_target.yml - - /opt/hook1 - - /opt/hook1 + - /opt/hook2 vars: prometheus_target_host: prometheus prometheus_target_handler_command_enabled: true prometheus_target_handler_command: - cmd: touch /opt/hook1 + cmd: mkdir /opt/hook1 # Fails if run twice + prometheus_target_handler_command_run_once: true prometheus_target_handler_shell_enabled: true prometheus_target_handler_shell: - cmd: touch /opt/hook2 + cmd: echo hello >> /opt/hook2 roles: - role: kliwniloc.prometheus_target prometheus_target_exporter: - id: node_exporter - host: application + host: '{{ inventory_hostname }}' path: /opt/hook_target.yml ################################################################################ diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index a8623d0..de1ac40 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -20,6 +20,15 @@ platforms: com.docker.network.driver.mtu: 1420 networks: - name: molecule-container-net + groups: [application_group] + + - name: application2 + image: ${MOLECULE_DISTRO:-debian:10} + dockerfile: Dockerfile.j2 + pre_build_image: false + networks: + - name: molecule-container-net + groups: [application_group] - name: prometheus image: ${MOLECULE_DISTRO:-debian:10} diff --git a/molecule/default/tests/test_check_prometheus_targets.py b/molecule/default/tests/test_check_prometheus_targets.py index ddf3a22..2eeb21b 100644 --- a/molecule/default/tests/test_check_prometheus_targets.py +++ b/molecule/default/tests/test_check_prometheus_targets.py @@ -58,12 +58,20 @@ def test_check_hosts_added_hooks(host): t2 = host.file('/opt/hook1') t3 = host.file('/opt/hook2') - assert t1.content_string == \ - ' - application\n' - + assert t1.exists assert t2.exists assert t3.exists + assert t1.content_string == \ + ' - application\n' \ + ' - application2\n' \ + or t1.content_string == \ + ' - application2\n' \ + ' - application\n' + + assert t3.content_string == \ + 'hello\n' \ + 'hello\n' """ Test lineinfile strategy parameters |