你好家伙我有一个非常小的经验与可靠的工作,但今天我的老板告诉我,我应该写在生产机器中检查磁盘空间的有力剧本 我们有一台15台机器,输入它们中的每一个,然后执行'df -h'命令,然后将输出发送到电子邮件。 你能给我一个这个playook的模板吗?像这样问题与写作ansibleplaybook
host <ip address>
command <df -h>
SendToEmail <emails...>
谢谢你,祝你有美好的一天!
你好家伙我有一个非常小的经验与可靠的工作,但今天我的老板告诉我,我应该写在生产机器中检查磁盘空间的有力剧本 我们有一台15台机器,输入它们中的每一个,然后执行'df -h'命令,然后将输出发送到电子邮件。 你能给我一个这个playook的模板吗?像这样问题与写作ansibleplaybook
host <ip address>
command <df -h>
SendToEmail <emails...>
谢谢你,祝你有美好的一天!
好吧,我会尽力给你一个开始的地方。
基本上,您需要在服务器上生成一个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
这将让您一开始,你就可以使用这个输出发送使用某种邮件客户端的电子邮件。
警告,这不是一个剧本。你应该阅读如何创建一个剧本,如果你想这样做。
谢谢你的帮助! –
- 创建一个可靠的主机文件,就像@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
你有甚至试图写的东西? –
你是否必须编写一本剧本,或者你能否简单地使用shell模块?即ansible -m shell -a'df -h'all(将机器添加到/ etc/ansible/hosts)。然后使用你喜欢的输出。 – Jesse
不是,但这是非常重要的任务 –