Skip to content

Commit

Permalink
Merge branch 'main' into preflight_checksum_fix
Browse files Browse the repository at this point in the history
  • Loading branch information
alkinks authored Nov 30, 2023
2 parents 8869e19 + 6a0f4d0 commit bfa17da
Show file tree
Hide file tree
Showing 42 changed files with 356 additions and 79 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ v0.9.0
Minor Changes
-------------

- enhancement: allows using multiple web listen addresses (https://github.com/prometheus-community/ansible/pull/213)
- feat(blackbox_exporter): Create config directory (https://github.com/prometheus-community/ansible/pull/250)

v0.8.1
Expand Down
1 change: 1 addition & 0 deletions changelogs/changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -248,4 +248,5 @@ releases:
changes:
minor_changes:
- 'feat(blackbox_exporter): Create config directory (https://github.com/prometheus-community/ansible/pull/250)'
- 'enhancement: allows using multiple web listen addresses (https://github.com/prometheus-community/ansible/pull/213)'
release_date: '2023-11-29'
6 changes: 4 additions & 2 deletions roles/alertmanager/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ provisioner:
alertmanager_binary_local_dir: '/tmp/alertmanager-linux-amd64'
alertmanager_config_dir: /opt/am/etc
alertmanager_db_dir: /opt/am/lib
alertmanager_web_listen_address: '127.0.0.1:9093'
alertmanager_web_listen_address:
- '127.0.0.1:9093'
- '127.0.1.1:9093'
alertmanager_web_external_url: 'http://localhost:9093/alertmanager'
alertmanager_resolve_timeout: 10m
alertmanager_slack_api_url: "http://example.com"
Expand All @@ -31,4 +33,4 @@ provisioner:
peers:
- "127.0.0.1:6783"
- "alertmanager.demo.do.prometheus.io:6783"
version: 0.19.0
alertmanager_version: 0.25.0
12 changes: 6 additions & 6 deletions roles/alertmanager/molecule/alternative/prepare.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
- name: Download alertmanager binary to local folder
become: false
ansible.builtin.get_url:
url: "https://github.com/prometheus/alertmanager/releases/download/v{{ version\
\ }}/alertmanager-{{ version }}.linux-amd64.tar.gz"
dest: "/tmp/alertmanager-{{ version }}.linux-amd64.tar.gz"
url: "https://github.com/prometheus/alertmanager/releases/download/v{{ alertmanager_version\
\ }}/alertmanager-{{ alertmanager_version }}.linux-amd64.tar.gz"
dest: "/tmp/alertmanager-{{ alertmanager_version }}.linux-amd64.tar.gz"
mode: 0644
register: _download_archive
until: _download_archive is succeeded
Expand All @@ -19,15 +19,15 @@
- name: Unpack alertmanager binaries
become: false
ansible.builtin.unarchive:
src: "/tmp/alertmanager-{{ version }}.linux-amd64.tar.gz"
src: "/tmp/alertmanager-{{ alertmanager_version }}.linux-amd64.tar.gz"
dest: "/tmp"
creates: "/tmp/alertmanager-{{ version }}.linux-amd64/alertmanager"
creates: "/tmp/alertmanager-{{ alertmanager_version }}.linux-amd64/alertmanager"
check_mode: false

- name: Link to alertmanager binaries directory
become: false
ansible.builtin.file:
src: "/tmp/alertmanager-{{ version }}.linux-amd64"
src: "/tmp/alertmanager-{{ alertmanager_version }}.linux-amd64"
dest: "/tmp/alertmanager-linux-amd64"
state: link
check_mode: false
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ def test_service(host):

@pytest.mark.parametrize("sockets", [
"tcp://127.0.0.1:9093",
"tcp://127.0.0.1:6783"
"tcp://127.0.1.1:9093",
"tcp://127.0.0.1:6783",
])
def test_socket(host, sockets):
assert host.socket(sockets).is_listening
21 changes: 21 additions & 0 deletions roles/alertmanager/tasks/preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,27 @@
ansible.builtin.package_facts:
when: "not 'packages' in ansible_facts"

- name: Assert that used version supports listen address type
ansible.builtin.assert:
that:
- >-
alertmanager_web_listen_address is string
or
(
alertmanager_version is version('0.25.0', '>=') and
alertmanager_web_listen_address | type_debug == "list"
)
- name: Naive assertion of proper listen address
ansible.builtin.assert:
that:
- >-
[alertmanager_web_listen_address] |
flatten |
reject('match', '.+:\\d+$') |
list |
length == 0
- name: Discover latest version
ansible.builtin.set_fact:
alertmanager_version: "{{ (lookup('url', 'https://api.github.com/repos/prometheus/alertmanager/releases/latest', headers=_github_api_headers,
Expand Down
9 changes: 9 additions & 0 deletions roles/alertmanager/templates/alertmanager.service.j2
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,16 @@ ExecStart={{ _alertmanager_binary_install_dir }}/alertmanager \
{% endfor %}
{{ pre }}-config.file={{ alertmanager_config_dir }}/alertmanager.yml \
{{ pre }}-storage.path={{ alertmanager_db_dir }} \
{% if alertmanager_version is version('0.25.0', '>=') and
alertmanager_web_listen_address is iterable and
alertmanager_web_listen_address is not mapping and
alertmanager_web_listen_address is not string %}
{% for address in alertmanager_web_listen_address %}
{{ pre }}-web.listen-address={{ address }} \
{% endfor %}
{% else %}
{{ pre }}-web.listen-address={{ alertmanager_web_listen_address }} \
{% endif %}
{{ pre }}-web.external-url={{ alertmanager_web_external_url }}{% for flag, flag_value in alertmanager_config_flags_extra.items() %} \
{{ pre }}-{{ flag }}={{ flag_value }}{% endfor %}

Expand Down
5 changes: 4 additions & 1 deletion roles/blackbox_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ provisioner:
inventory:
group_vars:
all:
blackbox_exporter_web_listen_address: "127.0.0.1:9000"
blackbox_exporter_web_listen_address:
- '127.0.0.1:9000'
- '127.0.1.1:9000'
blackbox_exporter_cli_flags:
log.level: "warn"
blackbox_exporter_configuration_modules:
tcp_connect:
prober: tcp
timeout: 5s
blackbox_exporter_version: 0.23.0
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ def test_service(host):
raise # Re-raise the original assertion error


def test_socket(host):
s = host.socket("tcp://127.0.0.1:9000")
assert s.is_listening
@pytest.mark.parametrize("sockets", [
"tcp://127.0.0.1:9000",
"tcp://127.0.1.1:9000",
])
def test_socket(host, sockets):
assert host.socket(sockets).is_listening
18 changes: 17 additions & 1 deletion roles/blackbox_exporter/tasks/preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,26 @@
ansible.builtin.package_facts:
when: "not 'packages' in ansible_facts"

- name: Assert that used version supports listen address type
ansible.builtin.assert:
that:
- >-
blackbox_exporter_web_listen_address is string
or
(
blackbox_exporter_version is version('0.23.0', '>=') and
blackbox_exporter_web_listen_address | type_debug == "list"
)
- name: Naive assertion of proper listen address
ansible.builtin.assert:
that:
- "':' in blackbox_exporter_web_listen_address"
- >-
[blackbox_exporter_web_listen_address] |
flatten |
reject('match', '.+:\\d+$') |
list |
length == 0
- name: Discover latest version
ansible.builtin.set_fact:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,16 @@ ExecStart=/usr/local/bin/blackbox_exporter \
{% for flag, flag_value in blackbox_exporter_cli_flags.items() -%}
--{{ flag }}={{ flag_value }} \
{% endfor -%}
{% if blackbox_exporter_version is version('0.23.0', '>=') and
blackbox_exporter_web_listen_address is iterable and
blackbox_exporter_web_listen_address is not mapping and
blackbox_exporter_web_listen_address is not string %}
{% for address in blackbox_exporter_web_listen_address %}
--web.listen-address={{ address }}{{ " \\" if not loop.last else "" }}
{% endfor %}
{% else %}
--web.listen-address={{ blackbox_exporter_web_listen_address }}
{% endif %}

SyslogIdentifier=blackbox_exporter
KillMode=process
Expand Down
4 changes: 3 additions & 1 deletion roles/chrony_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ provisioner:
group_vars:
all:
chrony_exporter_binary_local_dir: "/tmp/chrony_exporter-linux-amd64"
chrony_exporter_web_listen_address: "127.0.0.1:8080"
chrony_exporter_web_listen_address:
- '127.0.0.1:8080'
- '127.0.1.1:8080'
chrony_exporter_enabled_collectors:
- sources
chrony_exporter_disabled_collectors:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import os
import testinfra.utils.ansible_runner
import pytest

testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
Expand Down Expand Up @@ -37,10 +38,9 @@ def test_protecthome_property(host):
assert p.get("ProtectHome") == "yes"


def test_socket(host):
sockets = [
"tcp://127.0.0.1:8080"
]
for socket in sockets:
s = host.socket(socket)
assert s.is_listening
@pytest.mark.parametrize("sockets", [
"tcp://127.0.0.1:8080",
"tcp://127.0.1.1:8080",
])
def test_socket(host, sockets):
assert host.socket(sockets).is_listening
18 changes: 17 additions & 1 deletion roles/chrony_exporter/tasks/preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,26 @@
ansible.builtin.package_facts:
when: "not 'packages' in ansible_facts"

- name: Assert that used version supports listen address type
ansible.builtin.assert:
that:
- >-
chrony_exporter_web_listen_address is string
or
(
chrony_exporter_version is version('0.5.0', '>=') and
chrony_exporter_web_listen_address | type_debug == "list"
)
- name: Naive assertion of proper listen address
ansible.builtin.assert:
that:
- "':' in chrony_exporter_web_listen_address"
- >-
[chrony_exporter_web_listen_address] |
flatten |
reject('match', '.+:\\d+$') |
list |
length == 0
- name: Assert collectors are not both disabled and enabled at the same time
ansible.builtin.assert:
Expand Down
9 changes: 9 additions & 0 deletions roles/chrony_exporter/templates/chrony_exporter.service.j2
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,16 @@ ExecStart={{ chrony_exporter_binary_install_dir }}/chrony_exporter \
{% if chrony_exporter_tls_server_config | length > 0 or chrony_exporter_http_server_config | length > 0 or chrony_exporter_basic_auth_users | length > 0 %}
'--web.config.file=/etc/chrony_exporter/web_config.yaml' \
{% endif %}
{% if chrony_exporter_version is version('0.5.0', '>=') and
chrony_exporter_web_listen_address is iterable and
chrony_exporter_web_listen_address is not mapping and
chrony_exporter_web_listen_address is not string %}
{% for address in chrony_exporter_web_listen_address %}
'--web.listen-address={{ address }}' \
{% endfor %}
{% else %}
'--web.listen-address={{ chrony_exporter_web_listen_address }}' \
{% endif %}
'--web.telemetry-path={{ chrony_exporter_web_telemetry_path }}'

SyslogIdentifier=chrony_exporter
Expand Down
6 changes: 4 additions & 2 deletions roles/mysqld_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ provisioner:
group_vars:
all:
mysqld_exporter_binary_local_dir: "/tmp/mysqld_exporter-linux-amd64"
mysqld_exporter_web_listen_address: "127.0.0.1:8080"
mysqld_exporter_web_listen_address:
- '127.0.0.1:8080'
- '127.0.1.1:8080'
mysqld_exporter_enabled_collectors:
- slave_hosts
mysqld_exporter_disabled_collectors:
Expand All @@ -18,4 +20,4 @@ provisioner:
mysqld_exporter_basic_auth_users:
randomuser: examplepassword
go_arch: amd64
mysqld_exporter_version: 0.13.0
mysqld_exporter_version: 0.15.0
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import os
import testinfra.utils.ansible_runner
import pytest

testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
Expand All @@ -21,10 +22,9 @@ def test_service(host):
raise # Re-raise the original assertion error


def test_socket(host):
sockets = [
"tcp://127.0.0.1:8080"
]
for socket in sockets:
s = host.socket(socket)
assert s.is_listening
@pytest.mark.parametrize("sockets", [
"tcp://127.0.0.1:8080",
"tcp://127.0.1.1:8080",
])
def test_socket(host, sockets):
assert host.socket(sockets).is_listening
18 changes: 17 additions & 1 deletion roles/mysqld_exporter/tasks/preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,26 @@
ansible.builtin.package_facts:
when: "not 'packages' in ansible_facts"

- name: Assert that used version supports listen address type
ansible.builtin.assert:
that:
- >-
mysqld_exporter_web_listen_address is string
or
(
mysqld_exporter_version is version('0.15.0', '>=') and
mysqld_exporter_web_listen_address | type_debug == "list"
)
- name: Naive assertion of proper listen address
ansible.builtin.assert:
that:
- "':' in mysqld_exporter_web_listen_address"
- >-
[mysqld_exporter_web_listen_address] |
flatten |
reject('match', '.+:\\d+$') |
list |
length == 0
- name: Assert collectors are not both disabled and enabled at the same time
ansible.builtin.assert:
Expand Down
9 changes: 9 additions & 0 deletions roles/mysqld_exporter/templates/mysqld_exporter.service.j2
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,16 @@ ExecStart={{ mysqld_exporter_binary_install_dir }}/mysqld_exporter \
{% if mysqld_exporter_tls_server_config | length > 0 or mysqld_exporter_http_server_config | length > 0 or mysqld_exporter_basic_auth_users | length > 0 %}
--web.config.file={{ mysqld_exporter_config_dir }}/web_config.yaml \
{% endif %}
{% if mysqld_exporter_version is version('0.15.0', '>=') and
mysqld_exporter_web_listen_address is iterable and
mysqld_exporter_web_listen_address is not mapping and
mysqld_exporter_web_listen_address is not string %}
{% for address in mysqld_exporter_web_listen_address %}
--web.listen-address={{ address }} \
{% endfor %}
{% else %}
--web.listen-address={{ mysqld_exporter_web_listen_address }} \
{% endif %}
--web.telemetry-path={{ mysqld_exporter_web_telemetry_path }} \
--config.my-cnf={{ mysqld_exporter_config_dir }}/{{ mysqld_exporter_config_file }}

Expand Down
6 changes: 4 additions & 2 deletions roles/node_exporter/molecule/alternative/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ provisioner:
group_vars:
all:
node_exporter_binary_local_dir: "/tmp/node_exporter-linux-amd64"
node_exporter_web_listen_address: "127.0.0.1:8080"
node_exporter_web_listen_address:
- '127.0.0.1:8080'
- '127.0.1.1:8080'
node_exporter_textfile_dir: ""
node_exporter_enabled_collectors:
- entropy
Expand All @@ -19,4 +21,4 @@ provisioner:
node_exporter_basic_auth_users:
randomuser: examplepassword
go_arch: amd64
node_exporter_version: 1.0.0
node_exporter_version: 1.5.0
Loading

0 comments on commit bfa17da

Please sign in to comment.