2025-07-09 19:53:42
#ok Ниже приведён **полный Ansible playbook** для установки **node_exporter-1.9.1.linux-amd64.tar.gz**, который лежит локально в `/tmp` на управляющей машине. Playbook:
% cat node_exporter.yml
---
- name: Установка Prometheus Node Exporter из локального архива
hosts: all
become: yes
vars:
node_exporter_user: "node_exporter"
node_exporter_group: "node_exporter"
node_exporter_bin_path: "/usr/local/bin/node_exporter"
node_exporter_service_path: "/etc/systemd/system/node_exporter.service"
node_exporter_listen_address: "0.0.0.0:9100"
tasks:
- name: Создаём системную группу для node_exporter
group:
name: "{{ node_exporter_group }}"
system: yes
- name: Создаём системного пользователя для node_exporter
user:
name: "{{ node_exporter_user }}"
group: "{{ node_exporter_group }}"
shell: /sbin/nologin
system: yes
create_home: no
- name: Копируем бинарник node_exporter в {{ node_exporter_bin_path }}
copy:
src: "file/node_exporter"
dest: "{{ node_exporter_bin_path }}"
mode: '0755'
owner: "{{ node_exporter_user }}"
group: "{{ node_exporter_group }}"
- name: Создаём systemd unit файл для node_exporter
copy:
dest: "{{ node_exporter_service_path }}"
content: |
[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User={{ node_exporter_user }}
Group={{ node_exporter_group }}
Type=simple
ExecStart={{ node_exporter_bin_path }} --web.listen-address={{ node_exporter_listen_address }}
Restart=always
[Install]
WantedBy=multi-user.target
mode: '0644'
owner: root
group: root
notify:
- Reload systemd
- Restart node_exporter
- name: Включаем автозапуск node_exporter
systemd:
name: node_exporter
enabled: yes
- name: Проверяем статус firewalld
systemd:
name: firewalld
state: started
enabled: yes
register: firewalld_status
ignore_errors: yes # Игнорируем ошибку, если firewalld не запущен
- name: Открываем порт 9100/tcp для node_exporter (постоянно)
command: firewall-cmd --zone=public --add-port=9100/tcp --permanent
when: firewalld_status.status.ActiveState == "active"
changed_when: yes # Всегда считаем, что команда что-то изменила, чтобы вызвать reload
notify: Reload firewalld
handlers:
- name: Reload systemd
systemd:
daemon_reload: yes
- name: Restart node_exporter
systemd:
name: node_exporter
state: restarted
enabled: yes
- name: Reload firewalld
command: firewall-cmd --reload
[1] https://github.com/geerlingguy/ansible-role-node_exporter
[2] https://everythingcoding.in/node-exporter-setup-through-ansible/
[3] https://stackoverflow.com/questions/72449595/ansible-role-for-node-exporter-installation
[4] https://sitidy.id/use-ansible-to-deploy-prometheus-node-exporter-47d9bcec8896
[5] https://github.com/ajidiyantoro/ansible-playbook/blob/main/node-exporter.yaml
[6] https://blog.devops.dev/how-to-install-prometheus-and-node-exporter-using-an-ansible-role-b9ccd3d4bf3c
[7] https://developers.redhat.com/articles/2024/08/28/monitor-ansible-automation-platform-using-prometheus-node-exporter-and-grafana
[8] https://galaxy.ansible.com/ui/repo/published/libredevops/prometheus/content/role/node_exporter/
Back to list