**
ansible自动化巡检基本模板
**
- name: 自动化巡检
hosts: all
gather_facts: yes
tasks:
- name: 检查磁盘使用率
shell: df -h
register: disk_usage
- name: 检查处理器使用率
shell: top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}'
register: cpu_usage
- name: 检查内存使用率
shell: free | grep Mem | awk '{print $3/$2 * 100.0}'
register: memory_usage
- name: 检查指定进程是否存活
shell: ps -ef | grep "{{ process_name }}" | grep -v grep
register: process_status
ignore_errors: yes
- name: 检查指定端口是否监听
wait_for:
host: 127.0.0.1
port: "{{ item }}"
state: started
timeout: 5
loop: "{{ ports_to_check }}"
register: port_status
ignore_errors: yes
- name: 生成报告
template:
src: report_template.j2
dest: "{{ report_file }}"
vars:
disk_usage: "{{ disk_usage.stdout }}"
cpu_usage: "{{ cpu_usage.stdout }}"
memory_usage: "{{ memory_usage.stdout }}"
process_status: "{{ process_status.stdout }}"
port_status: "{{ port_status.results }}"
- name: 发送报告到邮箱
mail:
host: smtp.example.com
port: 587
username: your_username
password: your_password
to: your_email@example.com
subject: "巡检报告"
body: "{{ lookup('file', report_file) }}"
上述剧本中有几个需要注意的地方:
需要在 hosts 部分指定要执行巡检的目标主机。
process_name 变量用于指定要检查的进程名,您可以根据实际情况进行修改。
ports_to_check 变量是一个列表,用于指定要检查的端口号。您可以根据需要添加或修改端口号。
report_template.j2 是一个报告模板文件,您可以根据需要创建一个模板文件,并在生成报告任务中指定模板文件的路径。
report_file 变量用于指定生成的报告文件路径。请确保在主机上有写入权限。
在发送报告到邮箱的任务中,您需要根据实际情况修改 SMTP 服务器的主机、端口、用户名和密码,以及收件人的邮箱地址。
**
再介绍一下使用到的模块
**
在上述的 Ansible 剧本中,我们使用了以下模块和命令:
shell 模块:用于在目标主机上执行 shell 命令。在我们的剧本中,我们使用了 shell 模块来执行各种命令,如 df -h(检查磁盘使用率)、top -bn1 | grep “Cpu(s)” | awk ‘{print $2 + $4}’(检查处理器使用率)和 free | grep Mem | awk ‘{print $3/$2 * 100.0}’(检查内存使用率)等。
register 关键字:用于将命令的输出保存到一个变量中,以便后续任务使用。我们在几个任务中使用 register 关键字来保存命令的输出,例如 register: disk_usage、register: cpu_usage、register: memory_usage、register: process_status 和 register: port_status。
ignore_errors 关键字:用于在任务执行失败时忽略错误并继续执行下一个任务。我们在检查指定进程是否存活和检查指定端口是否监听的任务中使用了 ignore_errors: yes,这是因为如果进程不存在或端口未监听,命令可能会返回非零的退出状态。
wait_for 模块:用于等待目标主机上的某个条件满足,例如等待端口开始监听。在我们的剧本中,我们使用 wait_for 模块来检查指定的多个端口是否处于监听状态。
template 模块:用于根据模板文件生成目标文件。我们使用 template 模块来生成报告文件,将模板文件中的变量替换为实际的巡检结果。
lookup 函数:用于在 Ansible 控制节点上查找文件内容。我们使用 lookup 函数来读取生成的报告文件内容,并将其作为邮件的正文内容。
mail 模块:用于发送电子邮件。我们使用 mail 模块来发送包含巡检报告的电子邮件。在任务中,我们指定了 SMTP 服务器的主机、端口、用户名和密码,以及收件人的邮箱地址。
这些模块和命令使得我们能够在目标主机上执行各种命令,收集巡检数据,并生成报告。最后,我们使用邮件模块将报告发送到指定的邮箱地址。请注意,这只是一个示例剧本,您可以根据需要添加更多的任务和模块来执行其他操作或检查其他方面的内容。