aboutsummaryrefslogtreecommitdiff
path: root/tasks/main.yml
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