我有一个任务,我想在整个游戏中多次运行
e.g.
- name: run_many
debug:
msg: "I have been run"
现在不用添加此步骤,而是可以预定义/定义此方法,所以我只能说:
- < run this pre-defined step >
原因是我需要运行多次,并且如果需要更改,我不想在x个地方更新它。
目前,我正在执行一个include_tasks:显然,这是将其作为一步添加到我的输出中-但这是执行此类操作的最佳/标准方法吗?
当前有效的设置:
$ls ./roles/demo/tasks/
main.yml run_many.yml
$cat main.yml
---
- include_tasks: run_many.yml
- include_tasks: run_many.yml
播放输出:
TASK [demo: include_tasks] *******************************************************************************************************************************
task path: /home/ansible/roles/demo/tasks/main.yml:3
included: /home/ansible/roles/demo/tasks/run_many.yml for localhost
TASK [demo: run_many] ************************************************************************************************************************************
task path: /home/ansible/roles/demo/tasks/run_many.yml:1
ok: [localhost] => {
"msg": "I have been run"
}
TASK [demo: include_tasks] *******************************************************************************************************************************
task path: /home/ansible/roles/demo/tasks/main.yml:4
included: /home/ansible/roles/demo/tasks/run_many.yml for localhost
TASK [demo: run_many] ************************************************************************************************************************************
task path: /home/ansible/roles/demo/tasks/run_many.yml:1
ok: [localhost] => {
"msg": "I have been run"
}
这取决于您要执行的任务。例如,如果要对linux apache进行配置更改,然后重新启动apache并且您有多个此类更改,那么将重启逻辑放入yml并使用- include
notify: <handler name>
将有助于触发处理程序。
注:处理程序名称应与要从处理程序目录中触发的任务名称相同,或者如果您正常定义处理程序,则该名称也应相同。/handlers/tasks/main.yml
- name: OS handler
debug: msg='test'
when: ansible_distribution == "RedHat"
您可以让它对某些全局变量进行检查,并使用notify对其进行调用。如果检查成功,它将运行检查并执行
代替ansible_distribution
,您可以具有一些其他全局变量
否则使用- include
让我知道这是否回答了您的问题