2017-10-20 55 views
-2

你好家伙我有一个非常小的经验与可靠的工作,但今天我的老板告诉我,我应该写在生产机器中检查磁盘空间的有力剧本 我们有一台15台机器,输入它们中的每一个,然后执行'df -h'命令,然后将输出发送到电子邮件。 你能给我一个这个playook的模板吗?像这样问题与写作ansibleplaybook

host <ip address> 
command <df -h> 
SendToEmail <emails...> 

谢谢你,祝你有美好的一天!

+0

你有甚至试图写的东西? –

+0

你是否必须编写一本剧本,或者你能否简单地使用shell模块?即ansible -m shell -a'df -h'all(将机器添加到/ etc/ansible/hosts)。然后使用你喜欢的输出。 – Jesse

+0

不是,但这是非常重要的任务 –

回答

1

好吧,我会尽力给你一个开始的地方。

基本上,您需要在服务器上生成一个ssh密钥,您将在其中运行Ansible(考虑这是您的主服务器或控制服务器)。

然后将您的ssh密钥复制到您希望使用Ansible执行命令的15个服务器中的每一个。 (ssh-copy-id)。除非您每次运行下面的命令时都要输入您的用户名和密码15次。

一旦完成任务: 1)编辑/ etc/ansible(/ etc/ansible/hosts)中的Ansible hosts文件并在一个块下添加IP地址。该文件应该是这样的:

[servers] 
ip1.xxx.xxx.xxx 
ip2.xxx.xxx.xxx 

2)执行命令

ansible -m shell -a 'df -h' all 

这将让您一开始,你就可以使用这个输出发送使用某种邮件客户端的电子邮件。

警告,这不是一个剧本。你应该阅读如何创建一个剧本,如果你想这样做。

+0

谢谢你的帮助! –

0

- 创建一个可靠的主机文件,就像@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" [email protected]' 
     - name: Send mail with mailx 
     command: '{{output.stdout_lines}} | Mailx -s "{{ ansible_ssh_host }} Info space" [email protected]' 

-Run有:ansible-playbook playbook.yml

与如果ansible主机文件具有其他路径-Or运行:ansible-playbook playbook.yml -i inventory.yml