Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- - name: Deploy monitoring stack with hidden bugs
- hosts: monitoring_servers
- become: true
- vars:
- prometheus_version: "2.37.0"
- node_exporter_version: "1.5.0"
- prometheus_dir: "/opt/prometheus"
- node_exporter_dir: "/opt/node_exporter"
- tasks:
- - name: Create system users for services
- user:
- name: "{{ item.name }}"
- comment: "{{ item.comment }}"
- system: yes
- create_home: no
- shell: /bin/false
- loop:
- - { name: prometheus, comment: "Prometheus Monitoring" }
- - { name: node_exporter, comment: "Node Exporter" }
- - name: Install required packages
- apt:
- name: "{{ item }}"
- state: present
- loop:
- - wget
- - tar
- - slurm
- - curl
- - name: Download and install Prometheus
- unarchive:
- src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz"
- dest: "/tmp"
- remote_src: yes
- register: prometheus_download
- - name: Move Prometheus to installation directory
- command: "mv /tmp/prometheus-{{ prometheus_version }}.linux-amd64 {{ prometheus_dir }}"
- creates: "{{ prometheus_dir }}"
- - name: Download and install Node Exporter
- unarchive:
- src: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz"
- dest: "/tmp"
- remote_src: yes
- - name: Move Node Exporter to installation directory
- command: "mv /tmp/node_exporter-{{ node_exporter_version }}.linux-amd64 {{ node_exporter_dir }}"
- creates: "{{ node_exporter_dir }}"
- - name: Create Prometheus configuration
- copy:
- content: |
- global:
- scrape_interval: 15s
- scrape_configs:
- - job_name: 'node'
- static_configs:
- - targets: ['localhost:9100']
- dest: "{{ prometheus_dir }}/prometheus.yml"
- mode: 0644
- - name: Change ownership of installation directories
- file:
- path: "{{ item }}"
- owner: "{{ item.split('/')[-1] }}"
- group: "{{ item.split('/')[-1] }}"
- recurse: yes
- loop:
- - "{{ prometheus_dir }}"
- - "{{ node_exporter_dir }}"
- - name: Create systemd service for Node Exporter
- copy:
- content: |
- [Unit]
- Description=Node Exporter
- After=network.target
- [Service]
- User=node_exporter
- Group=node_exporter
- ExecStart={{ node_exporter_dir }}/node_exporter
- [Install]
- WantedBy=multi-user.target
- dest: /etc/systemd/system/node-exporter.service
- mode: 0644
- - name: Create systemd service for Prometheus
- copy:
- content: |
- [Unit]
- Description=Prometheus
- After=network.target
- [Service]
- User=prometheus
- Group=prometheus
- ExecStart={{ prometheus_dir }}/prometheus --config.file={{ prometheus_dir }}/prometheus.yml --storage.tsdb.path={{ prometheus_dir }}/data
- [Install]
- WantedBy=multi-user.target
- dest: /etc/systemd/system/prometheus.service
- mode: 0644
- - name: Enable and start services
- systemd:
- name: "{{ item }}"
- enabled: yes
- state: started
- loop:
- - node-exporter
- - prometheus
- - name: Open firewall ports
- ufw:
- port: "{{ item }}"
- state: enabled
- proto: tcp
- loop:
- - 9090 # Prometheus
- - 9100 # Node Exporter
- - name: Deploy Node Exporter on target servers
- hosts: target_servers
- become: true
- vars:
- node_exporter_version: "1.5.0"
- node_exporter_dir: "/opt/node_exporter"
- tasks:
- - name: Create node_exporter user
- user:
- name: node_exporter
- comment: "Node Exporter"
- system: yes
- create_home: no
- shell: /bin/false
- - name: Download and install Node Exporter
- unarchive:
- src: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz"
- dest: "/tmp"
- remote_src: yes
- - name: Move Node Exporter to installation directory
- command: "mv /tmp/node_exporter-{{ node_exporter_version }}.linux-amd64 {{ node_exporter_dir }}"
- creates: "{{ node_exporter_dir }}"
- - name: Change ownership of Node Exporter directory
- file:
- path: "{{ node_exporter_dir }}"
- owner: node_exporter
- group: node_exporter
- recurse: yes
- - name: Create systemd service for Node Exporter
- copy:
- content: |
- [Unit]
- Description=Node Exporter
- After=network.target
- [Service]
- User=node_exporter
- Group=node_exporter
- ExecStart={{ node_exporter_dir }}/node_exporter
- [Install]
- WantedBy=multi-user.target
- dest: /etc/systemd/system/node-exporter.service
- mode: 0644
- - name: Enable and start Node Exporter service
- systemd:
- name: node-exporter
- enabled: yes
- state: started
- - name: Open firewall for Node Exporter
- ufw:
- port: 9100
- state: enabled
- proto: tcp
Advertisement
Add Comment
Please, Sign In to add comment