blob: e9a017a67b9d8b002da32915ff5ec025a015f790 (
plain) (
blame)
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
130
|
- name: Setup Prometheus User
user:
name: "{{prometheus_user}}"
home: "{{prometheus_home_dir}}"
state: present
- set_fact: "prometheus_extract_dir=prometheus-{{prometheus_version}}.{{prometheus_os}}-{{prometheus_architecture}}"
- name: Create configuration directory
file:
state: directory
dest: "{{prometheus_home_dir}}/conf"
mode: '0700'
owner: "{{prometheus_user}}"
- name: Create Data directory
file:
state: directory
dest: "{{prometheus_data_dir}}"
mode: '0700'
owner: "{{prometheus_user}}"
- name: Download Prometheus
get_url:
url: "{{prometheus_url}}"
dest: "{{prometheus_home_dir}}/prometheus-{{prometheus_version}}.tgz"
mode: '0600'
owner: "{{prometheus_user}}"
checksum: 'sha256:{{prometheus_checksum}}'
# There's a bug in become_user that doesn't set permissions on the temp directory
# which is asinine when my user has sudo persmissions.
- name: Extract Prometheus
shell: |
#!/bin/sh
set -e
if ! [ -e "{{prometheus_home_dir}}/{{prometheus_extract_dir}}" ] ; then
su - '{{prometheus_user}}' -c 'cd "{{prometheus_home_dir}}"; tar xzf prometheus-{{prometheus_version}}.tgz'
exit 50
fi
register: res
changed_when: res is defined and res.rc == 50
# failed_when: res is defined and ( res.rc != 50 or res.rc != 0 )
ignore_errors: true
notify: Restart Prometheus
- name: Link prometheus directory
file:
state: link
src: '{{prometheus_extract_dir}}'
dest: '{{prometheus_home_dir}}/prometheus'
force: yes
- name: Link configuration files
file:
state: link
src: '../conf/{{item}}'
dest: '{{prometheus_home_dir}}/prometheus/{{item}}'
force: yes
loop:
- prometheus.yml
- name: Write prometheus configuration file
copy:
content: '{{prometheus_config | to_nice_json}}'
dest: '{{prometheus_home_dir}}/conf/prometheus.yml'
owner: '{{prometheus_user}}'
mode: '0600'
notify: Restart prometheus
tags:
- configuration
- name: Write prometheus web configuration file
copy:
content: '{{prometheus_web_config | to_nice_json}}'
dest: '{{prometheus_home_dir}}/conf/web_conf.yml'
owner: '{{prometheus_user}}'
mode: '0600'
when: prometheus_web_config is defined
notify: Restart prometheus
tags:
- configuration
- name: Write other config files
copy:
content: '{{item.content}}'
dest: '{{prometheus_home_dir}}/conf/{{item.filename}}'
owner: '{{prometheus_user}}'
mode: '0600'
loop: '{{prometheus_other_config | dict2items(key_name="filename", value_name="content")}}'
when: prometheus_other_config is defined
notify: Restart prometheus
tags:
- configuration
- name: Create Runit Directory
file:
state: directory
dest: /etc/sv/prometheus
owner: root
mode: '0755'
- name: Write runit service
template:
src: prometheus.runit
dest: /etc/sv/prometheus/run
owner: root
mode: '0755'
tags:
- configuration
- name: Enable Runit service
file:
state: link
src: /etc/sv/prometheus
dest: /var/service/prometheus
- name: Include Aertmanager tasks
include_tasks:
file: alertmanager.yml
apply:
tags:
- alertmanager
tags:
- alertmanager
when: alertmanager
- name: Include Blackbox Exporter tasks
include_tasks:
file: blackbox.yml
apply:
tags:
- blackbox
tags:
- blackbox
when: blackbox_exporter
- name: Include Discord tasks
include_tasks:
file: discord.yml
apply:
tags:
- discord
tags:
- discord
when: alertmanager_discord
|