Lework Study hard, improve every day.

Ansible Role OPS 之【资源巡检】

2019-10-12
lework
本文 1217 字,阅读全文约需 4 分钟

Ansible Role: os-check

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

要求

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

测试环境

ansible 2.7.0 os Centos 7 X64 python 2.7.5

角色变量

check_day: "%Y-%m-%d"
# 设置报告存储的目录
check_report_path: /tmp
check_report_file_suffix: "-"

# 设置smtp账号信息
check_mail_host: ""
check_mail_port: ""
check_mail_username: ""
check_mail_password: ""
check_mail_to: []
check_mail_subject: "System Check Report []"

依赖

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

Github地址

https://github.com/lework/Ansible-roles/tree/master/os-check

Example Playbook

---
- hosts: all
  gather_facts: false
  vars:
   check_report_path: /tmp
   check_mail_host: "smtp.lework.com"
   check_mail_port: "465"
   check_mail_username: "ops@lework.com"
   check_mail_password: "le123456"
   check_mail_to: ["ops@lework.com"] 
  roles:
   - os-check

执行流程

  1. 使用脚本files\check_linux.sh在远端执行获取资源数据,并以json结构体返回。
  2. 使用jinja2模板将获取的数据渲染到模板文件中templates\report-cssinline.html,生成的文件存放在指定的目录中。
    • report-cssinline.html 是将css设置以inline的方式存储的html文件,report.html才是源模板文件,修改完源模板文件后,使用Responsive Email CSS Inliner进行转换下,才能更好的兼容邮件显示。
    • 其中模板中使用的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
原文地址 https://lework.github.io/2019/10/12/ansible-role-os-check/

Similar Posts

Comments