logo
0
0
Login

Ansible Role: os-check

针对linux系统进行资源巡检,生成巡检报告后通过邮件发送给接收人

要求

此角色仅在linux系统上执行。

环境

ansible [core 2.12.2] os Centos 7 X64 python version = 2.7.5

依赖

  • 过滤器插件 filter_plugins/os-check.py [get_check_data]
  • 目标机bash

说明,此处的过滤器插件要放在ansible指定的filter_plugins的位置,将ansible的配置文件放在ansible 默认的配置文件下面,即: /etc/ansible 目录下

修改 /etc/ansible/ansible.cfg 配置文件,指定filter_plugins 路径

filter_plugins 目录下 存放 os-check.py 脚本文件

image-20220511145245431

image-20220511145049544

执行流程

  1. 使用脚本roles/os-check/files/check_linux.sh在目标节点执行获取资源数据,并以json结构体返回。

  2. 使用jinja2模板将获取的数据渲染到模板文件中roles/os-check/templates/report-cssinline.html,生成的文件存放在指定的目录中。

    • report-cssinline.html 是将css设置以inline的方式存储的html文件,report.html才是源模板文件,修改完源模板文件后,使用Responsive Email CSS Inliner[2]进行转换下,才能更好的兼容邮件显示。
    • 其模板中使用的get_check_data过滤器是从hostvars中获取每台主机的脚本执行结果,进行分析整理传递给模板,使用传递回来的数据进行渲染。
  3. 获取生成的模板文件内容,并通过smtp发送给接收人。

统计的系统资源

  • Hostname
  • Main IP
  • OS
  • CPU Used
  • CPU LoadAvg
  • Mem Used
  • Swap Used
  • Disk Size Used
  • Disk Inode Used
  • Tcp Connection Used
  • Timestamp

如何跑起来?

  1. 克隆好项目之后,将roles放置在自己ansible项目的roles目录下
  2. 确认ansible.cfg配置文件中filter_plugin的位置,将克隆项目的filter_plugins/os-check.py放在配置文件指定的filter_plugin中
  3. 创建oss-check运行的playbooks
  4. 添加定时任务,30 9 */2 * * /root/ansible-os-check/check.sh
--- - name: 服务器巡检 hosts: all gather_facts: false vars: check_report_path: /tmp check_mail_host: "smtp.163.com" check_mail_port: "465" check_mail_username: "demo@163.com" check_mail_password: "demo@163.com邮箱的密码" check_mail_to: [ "接收人的邮箱地址" ] check_mail_subject: "XXX 区域服务器巡检报告" roles: - os-check

4.执行ansible-playbook

ansible-playbook -i hosts main.yaml

或者使用普通用户,通过su提权

[all] 192.168.1.7 ansible_ssh_user=xxx ansible_ssh_pass=xxx ansible_become_pass=xxx
ansible-playbook -i hosts main.yaml -b --become-user root --become-method su

最终效果

image-20220511121609379

image-20220511121619962

About

针对linux系统进行资源巡检,生成巡检报告后通过邮件发送给接收人