feat(alertmanager_receiver): add role

This commit is contained in:
2025-08-09 12:34:23 +02:00
parent d64a0edf12
commit 2898da2cb5
16 changed files with 332 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
---
- name: Ensure valid alertmanager_receiver_state
ansible.builtin.fail:
msg: >-2
Unsupported value '{{ alertmanager_receiver_state }}' for
alertmanager_receiver_state. Supported values are
{{ alertmanager_receiver_states | map(quote) | join(', ')
when: alertmanager_receiver_state not in alertmanager_receiver_states
- name: Ensure valid alertmanager_receiver_deployment_method
ansible.builtin.fail:
msg: >-2
Unsupported value '{{ alertmanager_receiver_deployment_method }}' for
alertmanager_receiver_deployment_method. Supported values are
{{ alertmanager_receiver_deployment_methods | map(quote) | join(', ')
when: alertmanager_receiver_deployment_method not in alertmanager_receiver_deployment_methods
- name: Ensure role fails when required configuration is missing
ansible.builtin.fail:
msg: >-2
Required configuration key '{{ _config_key }}' is undefined
when: hostvars[inventory_hostname][_config_key] is undefined
loop:
- "alertmanager_receiver_config_matrix_homeserver_url"
- "alertmanager_receiver_config_matrix_user_id"
- "alertmanager_receiver_config_matrix_access_token"
loop_control:
loop_var: "_config_key"

View File

@@ -0,0 +1,12 @@
---
- name: Ensure configuration folder '{{ alertmanager_receiver_config_path }}' is {{ alertmanager_receiver_state }}
ansible.builtin.file:
path: "{{ alertmanager_receiver_config_path }}"
state: >-2
{{ (alertmanager_receiver_state == 'present') | ternary('directory', 'absent') }}
- name: Ensure configuration file '{{ alertmanager_receiver_config_file_path }}' is written
ansible.builtin.copy:
dest: "{{ alertmanager_receiver_config_file_path }}"
content: "{{ alertmanager_receiver_merged_config | to_nice_yaml(indent=2, width=200) }}"
when: alertmanager_receiver_state == 'present'

View File

@@ -0,0 +1,23 @@
---
- name: Ensure container image '{{ alertmanager_receiver_container_image }}' is {{ alertmanager_receiver_state }}
community.docker.docker_image:
name: "{{ alertmanager_receiver_container_image }}"
state: "{{ alertmanager_receiver_state }}"
source: "{{ alertmanager_receiver_container_image_source }}"
force_source: "{{ alertmanager_receiver_container_image_force_source }}"
- name: Ensure container '{{ alertmanager_receiver_container_name }}' is {{ alertmanager_receiver_container_state }}
community.docker.docker_container:
name: "{{ alertmanager_receiver_container_name }}"
image: "{{ alertmanager_receiver_container_image }}"
env: "{{ alertmanager_receiver_container_env | default(omit, true) }}"
user: "{{ alertmanager_receiver_container_user | default(omit, true) }}"
ports: "{{ alertmanager_receiver_container_ports }}"
labels: "{{ alertmanager_receiver_container_labels }}"
command: "{{ alertmanager_receiver_container_command | default(omit, true) }}"
volumes: "{{ alertmanager_receiver_container_merged_volumes }}"
networks: "{{ alertmanager_receiver_container_networks | default(omit, true) }}"
etc_hosts: "{{ alertmanager_receiver_container_etc_hosts }}"
dns_servers: "{{ alertmanager_receiver_container_dns_servers }}"
restart_policy: "{{ alertmanager_receiver_container_restart_policy }}"
state: "{{ alertmanager_receiver_container_state }}"

View File

@@ -0,0 +1,23 @@
---
- name: Ensure container image '{{ alertmanager_receiver_container_image }}' is {{ alertmanager_receiver_state }}
containers.podman.podman_image:
name: "{{ alertmanager_receiver_container_image }}"
state: "{{ alertmanager_receiver_state }}"
pull: "{{ alertmanager_receiver_container_image_source == 'pull' }}"
force: "{{ alertmanager_receiver_container_image_force_source }}"
- name: Ensure container '{{ alertmanager_receiver_container_name }}' is {{ alertmanager_receiver_container_state }}
containers.podman.podman_container:
name: "{{ alertmanager_receiver_container_name }}"
image: "{{ alertmanager_receiver_container_image }}"
env: "{{ alertmanager_receiver_container_env | default(omit, true) }}"
user: "{{ alertmanager_receiver_container_user | default(omit, true) }}"
ports: "{{ alertmanager_receiver_container_ports }}"
labels: "{{ alertmanager_receiver_container_labels }}"
command: "{{ alertmanager_receiver_container_command | default(omit, true) }}"
volumes: "{{ alertmanager_receiver_container_merged_volumes }}"
network: "{{ alertmanager_receiver_container_networks | default(omit, true) }}"
etc_hosts: "{{ alertmanager_receiver_container_etc_hosts }}"
dns_servers: "{{ alertmanager_receiver_container_dns_servers }}"
restart_policy: "{{ alertmanager_receiver_container_restart_policy }}"
state: "{{ alertmanager_receiver_container_state }}"

View File

@@ -0,0 +1,22 @@
---
- name: Ensure preconditions are met
ansible.builtin.include_tasks:
file: "check.yml"
- name: Ensure user '{{ alertmanager_receiver_user }}' is {{ alertmanager_receiver_state }}
ansible.builtin.user:
name: "{{ alertmanager_receiver_user }}"
state: "{{ alertmanager_receiver_state }}"
system: "{{ alertmanager_receiver_user_system }}"
create_home: "{{ alertmanager_receiver_user_create_home }}"
groups: "{{ alertmanager_receiver_user_groups | default(omit, true) }}"
append: "{{ alertmanager_receiver_user_append | default(omit) }}"
register: alertmanager_receiver_user_info
- name: Ensure configuration is up to date
ansible.builtin.include_tasks:
file: "configure.yml"
- name: Deploy using {{ alertmanager_receiver_deployment_method }}
ansible.builtin.include_tasks:
file: "deploy-{{ alertmanager_receiver_deployment_method }}.yml"