From 84e90d698379865aee0ce6492ebfc6b13f855587 Mon Sep 17 00:00:00 2001 From: friedrich goerz Date: Thu, 25 Nov 2021 11:32:42 +0100 Subject: [PATCH] DEV-195: added update-monitoring.yml + merged DEv-240-branchgit status! - plz review DEV-240 FIRST --- update-monitoring.yml | 110 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 update-monitoring.yml diff --git a/update-monitoring.yml b/update-monitoring.yml new file mode 100644 index 0000000..683525d --- /dev/null +++ b/update-monitoring.yml @@ -0,0 +1,110 @@ +--- + +# updates prometheus config in case of adding/removing server via smardigo + +# Parameters: +# playbook inventory +# stage := the type of the stage (e.g. dev, int, qa, prod) +# tenant_id := (unique key for the tenant, e.g. customer) +# cluster_name := (business name for the cluster, e.g. product, department ) +# cluster_size := (WIP node count for the cluster) (Currently max is 2 master/slave) +# cluster_services_str := (services to setup, e.g. 'connect,wordpress') +# smardigo message callback +# scope_id := (scope id of the management process) +# process_instance_id := (process instance id of the management process) +# smardigo_management_action := (smardigo management action anme of the management process) + +############################################################# +# Creating inventory dynamically for given parameters +############################################################# + +- hosts: localhost + gather_facts: false + connection: local + + pre_tasks: + - name: "Check if ansible version is at least 2.10.x" + assert: + that: + - ansible_version.major >= 2 + - ansible_version.minor >= 10 + msg: "The ansible version has to be at least ({{ ansible_version.full }})" + tags: + - always + + - set_fact: + cluster_services: "{{ cluster_services_str | split(',') }}" + tags: + - always + + tasks: + - name: Add prometheus servers to hosts if necessary + add_host: + name: "{{ stage }}-prometheus-01" + groups: + - "stage_{{ stage }}" + - "{{ item }}" + changed_when: False + with_items: "{{ cluster_services }}" + tags: + - always + +############################################################# +# update monitoring +############################################################# + +- hosts: "stage_{{ stage }}" + serial: "{{ serial_number | default(1) }}" + remote_user: root + vars: + ansible_ssh_host: "{{ stage_server_domain }}" + + pre_tasks: + - name: "Import autodiscover pre-tasks" + include_tasks: tasks/autodiscover_pre_tasks.yml + tags: + - always + + - name: "Parsing cluster_services_str into cluster_services" + set_fact: + cluster_services: "{{ cluster_services_str | split(',') }}" + tags: + - always + + tasks: + - include_role: + name: prometheus + tags: + - always + +############################################################# +# Sending smardigo management message to process +############################################################# + +- hosts: "stage_{{ stage }}" + serial: "{{ serial_number | default(1) }}" + gather_facts: false + connection: local + run_once: true + + tasks: + - name: "Sending smardigo management message <{{ smardigo_management_action }}> to <{{ scope_id }}/{{ process_instance_id }}>" + uri: + url: "{{ smardigo_management_url }}" + method: POST + body_format: json + body: "{{ lookup('template','smardigo-management-message.json.j2') }}" + headers: + accept: "*/*" + Content-Type: "application/json" + Smardigo-User-Token: "{{ smardigo_management_token }}" + status_code: [200] + delegate_to: 127.0.0.1 + retries: 5 + delay: 5 + when: + - scope_id is defined + - process_instance_id is defined + - smardigo_management_action is defined + tags: + - always