Cod*_*der 8 ansible ansible-playbook
我为ansible中的不同操作创建了不同的剧本.
我还为不同类型的Playbooks 创建了不同的Callback Scripts(并将它们与Ansible打包并安装).
将从许多不同的脚本/ cron作业调用剧本.
现在,是否可以指定callback script要为特定剧本调用的特定内容?(可能使用命令行参数?)
现在正在发生的是,为每个剧本调用所有的Callback脚本.
我不能将callback script相对位置放在playbook的位置/文件夹中,因为它已经打包在ansible包中.此外,所有的剧本也在同一个地方.
如果需要,我可以修改一些ansible源代码以适应它.
小智 6
如果您只是通过脚本运行剧本,您可以执行以下操作
ANSIBLE_STDOUT_CALLBACK="json" ansible-playbook -i hosts play.yml
您在运行 ansible-playbook 命令之前将回调设置为环境变量。
看完Ansible的代码后,我可以使用以下代码解决它...
在每个中callback_plugin,您可以指定,self.disabled = True并且根本不会调用该回调...
此外,它调用的剧本,有一个选项,以解析额外的参数作为key=value对。它将作为playbook对象的一部分extra_vars。
所以我在电脑上做了这样的事情callback_plugin。
def playbook_on_start(self):
callback_plugins = self.playbook.extra_vars.get('callback_plugin', '') // self.playbook is populated in your callback plugin by Ansible.
if callback_plugins not in ['email_reporter', 'all']:
self.disabled = True
Run Code Online (Sandbox Code Playgroud)
在调用剧本的同时,我可以做类似的事情,
ansible-playbook -e callback_plugin=email_reporter //Note -e is the argument prefix key for extra vars.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3724 次 |
| 最近记录: |