针对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 脚本文件


使用脚本roles/os-check/files/check_linux.sh在目标节点执行获取资源数据,并以json结构体返回。
使用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中获取每台主机的脚本执行结果,进行分析整理传递给模板,使用传递回来的数据进行渲染。获取生成的模板文件内容,并通过smtp发送给接收人。
filter_plugins/os-check.py放在配置文件指定的filter_plugin中--- - 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

