-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmodify_alertmanager_secret.yml
129 lines (126 loc) · 4.01 KB
/
modify_alertmanager_secret.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
- name: Decode and modify alertmanager secret configuration
ansible.builtin.set_fact:
modified_alertmanager_secret_content: >
{{ (fetched_alertmanager_secret.resources[0].data['alertmanager.yaml'] | b64decode | from_yaml) | combine({
'receivers': [
{
"name": receiver_name | trim,
"webhook_configs": [
{
"url": receiver_url,
"send_resolved": true,
}
]
},
{
"name": "grafana-oncall-heartbeat",
"webhook_configs": [
{
"url": receiver_url + "heartbeat/",
"send_resolved": false,
}
]
}
],
'route': {
'receiver': receiver_name | trim,
'group_by': [
"namespace",
"alertname"
],
'routes': [
{
'receiver': receiver_name | trim,
'match': {
'severity': 'info | warning | critical'
}
},
{
'receiver': receiver_name | trim,
'group_by': [
"alertname",
"name"
],
'match': {
'alertname': 'ArgoCDSyncAlert'
}
},
{
'receiver': receiver_name | trim,
'group_by': [
"alertname",
"name"
],
'match': {
'alertname': 'ArgocdServiceUnhealthy'
}
},
{
'receiver': receiver_name | trim,
'group_by': [
"alertname",
"pod"
],
'match': {
'alertname': 'KubePodCrashLooping'
}
},
{
"match": {
"alertname": "Watchdog"
},
"receiver": "grafana-oncall-heartbeat",
"group_wait": "0s",
"group_interval": "1m",
"repeat_interval": "50s"
}
]
}
}, recursive=True) }}
- name: Update CR status to AlertmanagerConfigModified
kubernetes.core.k8s:
state: present
definition:
apiVersion: grafanacloud.stakater.com/v1alpha1
kind: Config
metadata:
name: "{{ cr_name }}"
namespace: "{{ cr_namespace }}"
status:
conditions:
- lastTransitionTime: "{{ ansible_date_time.iso8601 }}"
status: 'True'
type: "Processing"
reason: "AlertmanagerConfigModified"
message: "Decoded and modified the alertmanager secret configuration"
- name: Re-encode modified alertmanager content for cluster
ansible.builtin.set_fact:
encoded_alertmanager_secret_content: "{{ modified_alertmanager_secret_content | to_nice_yaml | b64encode }}"
vars:
provision_mode_check: "{{ provision_mode }}"
when: provision_mode_check == "hubAndSpoke"
- name: Create a new ManifestWork for each cluster to patch alertmanager-main secret
kubernetes.core.k8s:
state: present
definition:
apiVersion: work.open-cluster-management.io/v1
kind: ManifestWork
metadata:
name: "{{ receiver_name }}-manifestwork-grafana-oncall"
namespace: "{{ transformed_namespace }}"
spec:
workload:
manifests:
- apiVersion: v1
kind: Secret
metadata:
name: alertmanager-main
namespace: openshift-monitoring
data:
alertmanager.yaml: "{{ encoded_alertmanager_secret_content }}"
vars:
provision_mode_check: "{{ provision_mode }}"
when:
- provision_mode_check == "hubAndSpoke"
- create_integration_for | length > 0
register: manifestwork_creation_results