Playbook 部署Node_exporter

目录结构

[root@localhost src]# tree
.
├── hosts
├── install.yml
└── roles
    └── node
        ├── files
        │   └── node_exporter-1.3.1.linux-amd64.tar.gz
        ├── handlers
        │   └── main.yml
        ├── README.md
        ├── tasks
        │   └── main.yml
        ├── templates
        │   ├── node_exporter.service.j2
        │   └── node.yaml.j2
        └── vars
            └── main.yml

主机文件

[root@localhost src]# cat hosts 
[node_exporter]
10.10.181.17

入口文件

[root@localhost src]# cat install.yml 
---
- name: "Deployment to node"
  gather_facts: false
  hosts: node_exporter
  roles:
    - { role: 'node', tags: 'install_node'}

变量文件

[root@localhost src]# more roles/node/vars/main.yml 
---
# vars file for prom_node
NODE_EXPORTER_VERSION: 1.3.1
NODE_PACKAGE: node_exporter-{{ NODE_EXPORTER_VERSION }}.linux-amd64.tar.gz
INSTALL_DIR: /usr/local/src

# prometheus service password is Ye5zHuxUQANGj6Bczq
BASIC_AUTH_USER: "prometheus"
BASIC_AUTH_PASS: "$2y$12$v0NACvxbfJ/3KeyhQOSyjOkdLOXh26qBQEo5VqqTlAvwSDUVcO9yS"

触发动作

[root@localhost src]# more roles/node/handlers/main.yml 
- name: restart node_exporter
  systemd:
     name: node_exporter
     state: restarted
     daemon_reload: yes
     enabled: yes

任务文件

[root@localhost src]# more roles/node/tasks/main.yml 
---
# tasks file for prom_node
- name: "拷贝 node 压缩包"
  unarchive:
    src: "{{ NODE_PACKAGE }}"
    dest: "{{ INSTALL_DIR }}"

- name: "修改包名"
  shell: cd {{ INSTALL_DIR }} && mv node_exporter-{{ NODE_EXPORTER_VERSION }}.linux-amd64 node_exporter


- name: "启动文件"
  template:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
  with_items:
    - { src: "node_exporter.service.j2", dest: "/usr/lib/systemd/system/node_exporter.service" }
    - { src: "node.yaml.j2", dest: "{{ INSTALL_DIR }}/node_exporter/node.yaml" }
  notify: 
    - restart node_exporter



#- name: "status for node_exporter"
#  shell: systemctl status node_exporter;ss -tnl |grep 9100


#- name: "启动Faild"
#  debug:
#    msg: "node_exporter is not running"
#  when: _check.rc != 0


#- debug:
#    msg: "{{ _check.stdout_lines }}"
#  when: _check.rc == 0

摸版文件

[root@localhost src]# more roles/node/templates/node_exporter.service.j2 
[Unit]
Description=node_exporter

[Service]
User=root
ExecStart={{ INSTALL_DIR }}/node_exporter/node_exporter --web.config={{ INSTALL_DIR }}/node_exporter/node.yaml
[Install]
WantedBy=default.target
[root@localhost src]# more roles/node/templates/node.yaml.j2 
basic_auth_users:
  {{ BASIC_AUTH_USER }}: {{ BASIC_AUTH_PASS}}

执行结果

[root@localhost src]# ansible-playbook -i hosts install.yml -k
SSH password: 

PLAY [Deployment to node] ******************************************************************************************************************************************************************************************************************

TASK [拷贝 node 压缩包] *************************************************************************************************************************************************************************************************************************
changed: [10.10.181.17]

TASK [node : 设置为systemd服务,开机自启动] ***********************************************************************************************************************************************************************************************************
changed: [10.10.181.17]

TASK [restart node] ************************************************************************************************************************************************************************************************************************
changed: [10.10.181.17]

TASK [status for node_exporter] ************************************************************************************************************************************************************************************************************
changed: [10.10.181.17]

TASK [node : 启动Faild] **********************************************************************************************************************************************************************************************************************
skipping: [10.10.181.17]

TASK [node : debug] ************************************************************************************************************************************************************************************************************************
ok: [10.10.181.17] => {
    "msg": [
        "● node_exporter.service - node_exporter", 
        "   Loaded: loaded (/usr/lib/systemd/system/node_exporter.service; enabled; vendor preset: disabled)", 
        "   Active: active (running) since Tue 2020-06-29 18:44:35 CST; 646ms ago", 
        " Main PID: 14658 (node_exporter)", 
        "    Tasks: 3", 
        "   Memory: 1.1M", 
        "   CGroup: /system.slice/node_exporter.service", 
        "           └─14658 /usr/local/src/node_exporter/node_exporter", 
        "", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - sockstat\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - stat\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - textfile\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - time\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - timex\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - uname\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - vmstat\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - xfs\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\" - zfs\" source=\"node_exporter.go:104\"", 
        "Jun 29 18:44:35 localhost.localdomain node_exporter[14658]: time=\"2021-06-29T18:44:35+08:00\" level=info msg=\"Listening on :9100\" source=\"node_exporter.go:170\"", 
        "LISTEN     0      128       [::]:9100                  [::]:*                  "
    ]
}

PLAY RECAP *********************************************************************************************************************************************************************************************************************************
10.10.181.17               : ok=5    changed=4    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0  

Last updated