ansible-role-prometheus-agent/tasks/main.yml
2020-06-02 17:34:03 +02:00

79 lines
2.4 KiB
YAML

- name: install node-exporter
apt:
pkg: prometheus-node-exporter
- name: manage tls
when: prometheus_agent.tls.manage
block:
- set_fact:
inventory_certs: "{{ certificates.certs|d({}) }}"
prometheus_certs: |
{
'prometheus_agent': {
'san': ['{{ inventory_hostname }}'],
'backend': 'selfsigned'
}
}
- include_role:
name: certificates
vars:
certificates:
certs: "{{ {}|combine(prometheus_certs, inventory_certs, recursive=True) }}"
- name: copy node-exporter config
template:
src: node-exporter.j2
dest: /etc/default/prometheus-node-exporter
notify: restart node-exporter
- name: slurp up all scraper certs
loop: "{{ prometheus_agent.scrapers.keys()|list }}"
delegate_to: "{{ item }}"
slurp:
src: /etc/ssl/prometheus_scraper.crt
register: scrapercertfiles
- name: slurp up agent cert
slurp:
src: /etc/ssl/prometheus_agent.crt
register: agentcertfiles
- name: setup stunnel client
when: prometheus_agent.tls.mode == "stunnel"
block:
- name: install stunnel
apt:
pkg: stunnel
- name: copy scraper ssl certs
loop: "{{ scrapercertfiles.results }}"
copy:
content: "{{ item.content | b64decode }}"
dest: "/etc/ssl/scraper_{{ item.item }}.crt"
- name: copy stunnel config
template:
src: stunnel-client.conf.j2
dest: /etc/stunnel/prometheus-agent.conf
notify: restart stunnel
- name: copy agent certs to scrapers
loop: "{{ prometheus_agent.scrapers.keys()|list }}"
delegate_to: "{{ item }}"
copy:
content: "{{ agentcertfiles.content | b64decode }}"
dest: "/etc/prometheus/targetcerts/{{ inventory_hostname }}.crt"
- set_fact:
labels_ansible_groups: '{ {% for g in group_names %}"ansible_group_{{g}}": 1{% if not loop.last %}, {% endif %}{% endfor %} }'
- set_fact:
merged_prometheus_labels: "{{ {}|combine((labels_ansible_groups if prometheus_agent.ansible_groups_as_labels else {}), prometheus_agent.labels) }}"
- name: setup scraper
loop: "{{ prometheus_agent.scrapers.keys()|list }}"
delegate_to: "{{ item }}"
template:
src: node-scraper.j2
dest: /etc/prometheus/conf.d/scrape_configs/agent_{{ inventory_hostname }}.conf
- name: setup alerts
loop: "{{ prometheus_agent.scrapers.keys()|list }}"
delegate_to: "{{ item }}"
template:
src: node-alerts.j2
dest: /etc/prometheus/conf.d/rule_files/agent_{{ inventory_hostname }}.conf