编写ansible剧本的问题

时间:2017-10-20 04:25:04

标签: ansible

大家好,我在使用ansible时遇到的经验很少,但今天我的老板告诉我,我应该写一个ansible playbook来检查生产机器中的磁盘空间 我们有15台机器,我想进入每台机器,然后执行'df -h'命令,然后将输出发送到电子邮件。 你能给我一个这个playook的模板吗?像这样

host <ip address>
command <df -h>
SendToEmail <emails...>
谢谢你,祝你有愉快的一天!

2 个答案:

答案 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

相关问题