feat(alertmanager_receiver): add role
This commit is contained in:
28
roles/alertmanager_receiver/tasks/check.yml
Normal file
28
roles/alertmanager_receiver/tasks/check.yml
Normal 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"
|
12
roles/alertmanager_receiver/tasks/configure.yml
Normal file
12
roles/alertmanager_receiver/tasks/configure.yml
Normal 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'
|
23
roles/alertmanager_receiver/tasks/deploy-docker.yml
Normal file
23
roles/alertmanager_receiver/tasks/deploy-docker.yml
Normal 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 }}"
|
23
roles/alertmanager_receiver/tasks/deploy-podman.yml
Normal file
23
roles/alertmanager_receiver/tasks/deploy-podman.yml
Normal 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 }}"
|
22
roles/alertmanager_receiver/tasks/main.yml
Normal file
22
roles/alertmanager_receiver/tasks/main.yml
Normal 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"
|
Reference in New Issue
Block a user