Skip to content

Commit

Permalink
test: unified prepare playbook for alternative molecule scenarios
Browse files Browse the repository at this point in the history
Signed-off-by: gardar <[email protected]>
  • Loading branch information
gardar committed Sep 18, 2024
1 parent c59483a commit b471a1f
Show file tree
Hide file tree
Showing 20 changed files with 196 additions and 13 deletions.
104 changes: 104 additions & 0 deletions .config/molecule/alternative/prepare.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
---
- name: Run local preparation
hosts: localhost
gather_facts: false
vars:
__role_name: "{{ lookup('ansible.builtin.env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
__binary_name: "{{ __role_name }}"
__binary_url: "{{ lookup('ansible.builtin.vars', __role_name ~ '_binary_url') }}"
__binary_local_dir: "{{ lookup('ansible.builtin.vars', __role_name ~ '_binary_local_dir') }}"
__tls_server_config: "{{ lookup('ansible.builtin.vars', __role_name ~ '_tls_server_config', default={}) }}"
tasks:
- name: "Create local binary directory"
ansible.builtin.file:
path: "{{ __binary_local_dir }}"
state: directory
mode: 0755

- name: "Fetch binary"
become: false
ansible.builtin.unarchive:
src: "{{ __binary_url }}"
dest: "{{ __binary_local_dir }}"
remote_src: true
list_files: true
extra_opts:
- "--strip-components=1"
creates: "{{ __binary_local_dir }}/{{ __binary_name }}"
check_mode: false
register: __download_binary

- name: Generate self signed certificates
when: "'cert_file' in __tls_server_config"
block:
- name: Install pyOpenSSL for certificate generation
ansible.builtin.pip:
name: "pyOpenSSL"

- name: Create private key
community.crypto.openssl_privatekey:
path: "/tmp/tls.key"

- name: Create CSR
community.crypto.openssl_csr:
path: "/tmp/tls.csr"
privatekey_path: "/tmp/tls.key"

- name: Create certificate
community.crypto.x509_certificate:
path: "/tmp/tls.cert"
csr_path: "/tmp/tls.csr"
privatekey_path: "/tmp/tls.key"
provider: selfsigned

- name: Filter out incompatible distro/ansible version combos
ansible.builtin.add_host:
name: "{{ item }}"
groups: target_hosts
loop: >-
{{
groups['all']
| map('extract', hostvars)
| rejectattr('exclude_ansible_vers', 'defined')
| map(attribute='inventory_hostname')
| list
| union(
groups['all']
| map('extract', hostvars)
| selectattr('exclude_ansible_vers', 'defined')
| rejectattr('exclude_ansible_vers', 'search', ansible_version.major ~ '.' ~ ansible_version.minor)
| map(attribute='inventory_hostname')
| list
)
}}
when: item not in groups['target_hosts']
changed_when: false

- name: Run target preparation
hosts: target_hosts
any_errors_fatal: true
vars:
__role_name: "{{ lookup('ansible.builtin.env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
__tls_server_config: "{{ lookup('ansible.builtin.vars', __role_name ~ '_tls_server_config', default={}) }}"
tasks:
- name: Copy self signed certificates
when: "'cert_file' in __tls_server_config"
block:
- name: "Create cert dir"
ansible.builtin.file:
path: "{{ __tls_server_config.cert_file | dirname }}"
state: directory
owner: root
group: root
mode: u+rwX,g+rwX,o=rX

- name: "Copy cert and key"
ansible.builtin.copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: "{{ item.mode | default('0644') }}"
loop:
- src: "/tmp/tls.cert"
dest: "{{ __tls_server_config.cert_file }}"
- src: "/tmp/tls.key"
dest: "{{ __tls_server_config.key_file }}"
4 changes: 4 additions & 0 deletions roles/alertmanager/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand Down Expand Up @@ -34,3 +36,5 @@ provisioner:
- "127.0.0.1:6783"
- "alertmanager.demo.do.prometheus.io:6783"
alertmanager_version: 0.25.0
alertmanager_binary_url: "https://github.com/prometheus/alertmanager/releases/download/v{{ alertmanager_version\
\ }}/alertmanager-{{ alertmanager_version }}.linux-amd64.tar.gz"
5 changes: 5 additions & 0 deletions roles/bind_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand All @@ -19,3 +21,6 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
bind_exporter_version: 0.7.0
bind_exporter_binary_url: "https://github.com/prometheus-community/bind_exporter/releases/download/v{{\
\ bind_exporter_version }}/bind_exporter-{{ bind_exporter_version\
\ }}.linux-{{ go_arch }}.tar.gz"
3 changes: 3 additions & 0 deletions roles/cadvisor/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
cadvisor_binary_url: "https://github.com/google/cadvisor/releases/download/v{{ cadvisor_version }}/cadvisor-v{{ cadvisor_version }}-linux-{{ go_arch }}"
cadvisor_binary_local_dir: "/tmp"
cadvisor_port: "8000"
go_arch: amd64
Expand Down
5 changes: 4 additions & 1 deletion roles/chrony_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand All @@ -11,7 +13,6 @@ provisioner:
- sources
chrony_exporter_disabled_collectors:
- tracking

chrony_exporter_tls_server_config:
cert_file: /etc/chrony_exporter/tls.cert
key_file: /etc/chrony_exporter/tls.key
Expand All @@ -21,3 +22,5 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
chrony_exporter_version: 0.6.0
chrony_exporter_binary_url: "https://github.com/superq/chrony_exporter/releases/download/v{{ chrony_exporter_version\
\ }}/chrony_exporter-{{ chrony_exporter_version }}.linux-{{ go_arch }}.tar.gz"
4 changes: 4 additions & 0 deletions roles/fail2ban_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
fail2ban_exporter_binary_local_dir: "/tmp/fail2ban_exporter-linux-amd64_local"
fail2ban_exporter_web_listen_address: "127.0.1.1:9191"
go_arch: amd64
fail2ban_exporter_version: 0.10.1
fail2ban_exporter_binary_url: "https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/releases/v{{ fail2ban_exporter_version }}/downloads/\
fail2ban_exporter_{{ fail2ban_exporter_version }}_linux_{{ go_arch }}.tar.gz"
6 changes: 5 additions & 1 deletion roles/ipmi_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
ipmi_exporter_binary_local_dir: "/tmp/ipmi_exporter-linux-amd64"
ipmi_exporter_web_listen_address: "127.0.0.1:8080"

ipmi_exporter_tls_server_config:
cert_file: /etc/ipmi_exporter/tls.cert
key_file: /etc/ipmi_exporter/tls.key
Expand All @@ -15,3 +16,6 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
ipmi_exporter_version: 1.6.1
ipmi_exporter_binary_url: "https://github.com/prometheus-community/ipmi_exporter/releases/download/v{{\
\ ipmi_exporter_version }}/ipmi_exporter-{{ ipmi_exporter_version }}.linux-{{\
\ go_arch }}.tar.gz"
6 changes: 5 additions & 1 deletion roles/memcached_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
memcached_exporter_binary_local_dir: "/tmp/memcached_exporter-linux-amd64"
memcached_exporter_web_listen_address: "127.0.0.1:8080"

memcached_exporter_tls_server_config:
cert_file: /etc/memcached_exporter/tls.cert
key_file: /etc/memcached_exporter/tls.key
Expand All @@ -15,3 +16,6 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
memcached_exporter_version: 0.12.0
memcached_exporter_binary_url: "https://github.com/prometheus/memcached_exporter/releases/download/v{{\
\ memcached_exporter_version }}/memcached_exporter-{{ memcached_exporter_version }}.linux-{{\
\ go_arch }}.tar.gz"
5 changes: 4 additions & 1 deletion roles/mongodb_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
mongodb_exporter_binary_local_dir: "/tmp/mongodb_exporter-linux-amd64_local"
mongodb_exporter_web_listen_address: "127.0.1.1:9216"

mongodb_exporter_tls_server_config:
cert_file: /etc/mongodb_exporter/tls.cert
key_file: /etc/mongodb_exporter/tls.key
Expand All @@ -15,3 +16,5 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
mongodb_exporter_version: 0.40.0
mongodb_exporter_binary_url: "https://github.com/percona/mongodb_exporter/releases/download/v{{ mongodb_exporter_version }}/\
mongodb_exporter-{{ mongodb_exporter_version }}.linux-{{ go_arch }}.tar.gz"
6 changes: 5 additions & 1 deletion roles/mysqld_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand All @@ -11,7 +13,6 @@ provisioner:
- slave_hosts
mysqld_exporter_disabled_collectors:
- global_variables

mysqld_exporter_tls_server_config:
cert_file: /etc/mysqld_exporter/tls.cert
key_file: /etc/mysqld_exporter/tls.key
Expand All @@ -21,3 +22,6 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
mysqld_exporter_version: 0.15.0
mysqld_exporter_binary_url: "https://github.com/prometheus/mysqld_exporter/releases/download/v{{\
\ mysqld_exporter_version }}/mysqld_exporter-{{ mysqld_exporter_version\
\ }}.linux-{{ go_arch }}.tar.gz"
5 changes: 4 additions & 1 deletion roles/nginx_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
nginx_exporter_binary_local_dir: "/tmp/nginx_exporter-linux-amd64_local"
nginx_exporter_web_listen_address: "127.0.0.1:9113"

nginx_exporter_tls_server_config:
cert_file: /etc/nginx_exporter/tls.cert
key_file: /etc/nginx_exporter/tls.key
Expand All @@ -15,3 +16,5 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
nginx_exporter_version: 1.1.0
nginx_exporter_binary_url: "https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v{{ nginx_exporter_version }}/\
nginx-prometheus-exporter_{{ nginx_exporter_version }}_linux_{{ go_arch }}.tar.gz"
6 changes: 5 additions & 1 deletion roles/node_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand All @@ -12,7 +14,6 @@ provisioner:
- entropy
node_exporter_disabled_collectors:
- diskstats

node_exporter_tls_server_config:
cert_file: /etc/node_exporter/tls.cert
key_file: /etc/node_exporter/tls.key
Expand All @@ -22,3 +23,6 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
node_exporter_version: 1.5.0
node_exporter_binary_url: "https://github.com/prometheus/node_exporter/releases/download/v{{\
\ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-{{\
\ go_arch }}.tar.gz"
6 changes: 5 additions & 1 deletion roles/postgres_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand All @@ -11,7 +13,6 @@ provisioner:
- postmaster
postgres_exporter_disabled_collectors:
- replication

postgres_exporter_tls_server_config:
cert_file: /etc/postgres_exporter/tls.cert
key_file: /etc/postgres_exporter/tls.key
Expand All @@ -21,3 +22,6 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
postgres_exporter_version: 0.15.0
postgres_exporter_binary_url: "https://github.com/prometheus-community/postgres_exporter/releases/download/v{{\
\ postgres_exporter_version }}/postgres_exporter-{{ postgres_exporter_version\
\ }}.linux-{{ go_arch }}.tar.gz"
5 changes: 5 additions & 0 deletions roles/process_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand All @@ -26,3 +28,6 @@ provisioner:
cmdline:
- crond
{% endraw %}
process_exporter_binary_url: "https://github.com/ncabatoff/process-exporter/releases/download/v{{\
\ process_exporter_version }}/process-exporter-{{ process_exporter_version }}.linux-{{\
\ go_arch }}.tar.gz"
4 changes: 4 additions & 0 deletions roles/prometheus/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand Down Expand Up @@ -88,3 +90,5 @@ provisioner:
replacement: 127.0.0.1:9115 # Blackbox exporter.
prometheus_version: 2.25.2
prometheus_stop_timeout: 1min
prometheus_binary_url: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version\
\ }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz"
4 changes: 4 additions & 0 deletions roles/pushgateway/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
Expand All @@ -16,3 +18,5 @@ provisioner:
randomuser: examplepassword
go_arch: amd64
pushgateway_version: 1.5.1
pushgateway_binary_url: "https://github.com/prometheus/pushgateway/releases/download/v{{ pushgateway_version\
\ }}/pushgateway-{{ pushgateway_version }}.linux-{{ go_arch }}.tar.gz"
14 changes: 10 additions & 4 deletions roles/redis_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
---
provisioner:
playbooks:
prepare: "${MOLECULE_PROJECT_DIRECTORY}/../../.config/molecule/alternative/prepare.yml"
inventory:
group_vars:
all:
redis_exporter_binary_local_dir: "/tmp/redis_exporter-linux-amd64"
redis_exporter_web_listen_address: "127.0.0.1:8080"

redis_exporter_tls_server_ca_cert_file: /etc/redis_exporter/tls.cert
redis_exporter_tls_server_cert_file: /etc/redis_exporter/tls.cert
redis_exporter_tls_server_key_file: /etc/redis_exporter/tls.key
redis_exporter_tls_server_config:
cert_file: /etc/redis_exporter/tls.cert
key_file: /etc/redis_exporter/tls.key
redis_exporter_tls_server_cert_file: "{{ redis_exporter_tls_server_config.cert_file }}"
redis_exporter_tls_server_key_file: "{{ redis_exporter_tls_server_config.key_file }}"
go_arch: amd64
redis_exporter_version: 1.58.0
redis_exporter_binary_url: "https://github.com/oliver006/redis_exporter/releases/download/v{{\
\ redis_exporter_version }}/redis_exporter-v{{ redis_exporter_version }}.linux-{{\
\ go_arch }}.tar.gz"
Loading

0 comments on commit b471a1f

Please sign in to comment.