大家好,我在使用ansible时遇到的经验很少,但今天我的老板告诉我,我应该写一个ansible playbook来检查生产机器中的磁盘空间 我们有15台机器,我想进入每台机器,然后执行'df -h'命令,然后将输出发送到电子邮件。 你能给我一个这个playook的模板吗?像这样
host <ip address>
command <df -h>
SendToEmail <emails...>
谢谢你,祝你有愉快的一天!
答案 0 :(得分:1)
好的,我会尽力给你一个开始的地方。
基本上,您需要在将运行Ansible的服务器上生成一个ssh密钥(考虑这是您的主服务器或控制服务器)。
然后将ssh密钥复制到您希望使用Ansible执行命令的15个服务器中的每一个。 (ssh-copy-id)。除非您每次运行以下命令时都喜欢输入用户名和密码15次。
完成该任务后: 1)编辑/ etc / ansible(/ etc / ansible / hosts)中的Ansible主机文件,并在块下添加ip地址。该文件应如下所示:
[servers]
ip1.xxx.xxx.xxx
ip2.xxx.xxx.xxx
2)运行命令
ansible -m shell -a 'df -h' all
这将让您入门,然后您可以使用此输出使用某种邮件客户端发送电子邮件。
警告,这不是一本剧本。如果你想这样做,你应该阅读如何创建一个剧本。答案 1 :(得分:0)
创建一个ansible主机文件,如@Jesse所说。
- 示例剧本:
- name: Test
hosts: servers
gather_facts: false
tasks:
- name: Test
command: df -h
register: output
- debug: msg='{{output.stdout_lines}} | Mailx -s "{{ ansible_ssh_host }} Info space" usuario@ejemplo.com'
- name: Send mail with mailx
command: '{{output.stdout_lines}} | Mailx -s "{{ ansible_ssh_host }} Info space" usuario@ejemplo.com'
- 运行:ansible-playbook playbook.yml
- 如果ansible主机文件有其他路径,则运行:ansible-playbook playbook.yml -i inventory.yml