Files
metrics-prometheus-grafana/playbook.yml
T

177 lines
5.7 KiB
YAML

---
- name: Deploy Monitoring on general_server
hosts: general_server
become: yes
vars_files:
- group_vars/all/vars.yml
- group_vars/all/vault.yml
tasks:
- name: Создание системного юзера
ansible.builtin.user:
name: metrics
state: present
shell: /usr/sbin/nologin
- name: Создать директории для проекта
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: '0755'
owner: metrics
group: metrics
loop:
- "{{ monitoring_dir }}"
- "{{ monitoring_dir }}/grafana_provisioning"
- name: Устанавливаем Docker и утилиты
apt:
name:
- docker.io
- docker-compose
- python3-pip
- ufw
- git
- htop
- rsync
state: present
update_cache: yes
- name: Скопировать конфигурации сервисов
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ monitoring_dir }}/{{ item.dest }}"
mode: '0644'
owner: metrics
group: metrics
loop:
- { src: "prometheus.yml.j2", dest: "prometheus.yml" }
- { src: "prometheus-web.yml.j2", dest: "prometheus-web.yml" }
- { src: "node-exporter-web.yml.j2", dest: "node-exporter-web.yml" }
- { src: "grafana-datasource.yml.j2", dest: "grafana_provisioning/datasource.yml" }
- { src: "docker-compose.yml.j2", dest: "docker-compose.yml" }
notify: Restart docker-compose
- name: Запустить Docker Compose
community.docker.docker_compose_v2:
project_src: "{{ monitoring_dir }}"
state: present
handlers:
- name: Restart docker-compose
community.docker.docker_compose_v2:
project_src: "{{ monitoring_dir }}"
state: restarted
# ==============================================================================================================
- name: Deploy Exporter on other servers
hosts: all
become: yes
vars_files:
- group_vars/all/vars.yml
- group_vars/all/vault.yml
tasks:
- name: Создание системного юзера
ansible.builtin.user:
name: metrics
state: present
shell: /usr/sbin/nologin
- name: Установить понятное имя хоста с индексом
ansible.builtin.hostname:
name: "node-{{ ansible_play_hosts.index(inventory_hostname) }}"
when: ansible_play_hosts.index(inventory_hostname) > 0
notify: restart node-exporter
- name: Создать директории для проекта
ansible.builtin.file:
path: "{{ monitoring_dir }}"
state: directory
mode: '0700'
owner: metrics
group: metrics
- name: Устанавливаем Docker и утилиты
apt:
name:
- python3-pip
- ufw
- git
- htop
- rsync
state: present
update_cache: yes
- name: Создать системного пользователя для Node Exporter
ansible.builtin.user:
name: node_exporter
shell: /usr/sbin/nologin
system: true
create_home: false
- name: Создать директорию под конкретную версию
ansible.builtin.file:
path: "/opt/node_exporter-{{ node_exporter_version }}"
state: directory
owner: node_exporter
group: node_exporter
mode: '0700'
- name: Скачать и распаковать архив экспортера
ansible.builtin.unarchive:
src: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-{{ node_exporter_arch }}.tar.gz"
dest: "/opt/node_exporter-{{ node_exporter_version }}"
remote_src: true
extra_opts:
- "--strip-components=1"
creates: "/opt/node_exporter-{{ node_exporter_version }}/node_exporter"
owner: node_exporter
group: node_exporter
- name: Создать симлинк на исполняемый файл
ansible.builtin.file:
src: "/opt/node_exporter-{{ node_exporter_version }}/node_exporter"
dest: "/usr/local/bin/node_exporter"
state: link
force: true
- name: Создать директорию для конфигурации экспортера
ansible.builtin.file:
path: /etc/node_exporter
state: directory
owner: node_exporter
group: node_exporter
mode: '0750'
- name: Скопировать конфиг веб-авторизации для Node Exporter
ansible.builtin.template:
src: node-exporter-web.yml.j2
dest: /etc/node_exporter/web.yml
owner: node_exporter
group: node_exporter
mode: '0600'
- name: Создать systemd unit файл
ansible.builtin.template:
src: node_exporter.service.j2
dest: /etc/systemd/system/node_exporter.service
owner: root
group: root
mode: '0644'
notify: restart node-exporter
- name: Включить автозапуск и запустить сервис
ansible.builtin.systemd_service:
name: node_exporter
state: started
enabled: true
handlers:
- name: restart node-exporter
ansible.builtin.systemd_service:
name: node_exporter
state: restarted
daemon_reload: true