定义任务/步骤并运行多次/替代include_tasks

问题描述 投票:0回答:1

我有一个任务,我想在整个游戏中多次运行

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"
}
ansible
1个回答
0
投票

这取决于您要执行的任务。例如,如果要对linux apache进行配置更改,然后重新启动apache并且您有多个此类更改,那么将重启逻辑放入yml并使用- include

进行调用是没有意义的

相反,使用处理程序,https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#handlers-running-operations-on-change

notify: <handler name>将有助于触发处理程序。

注:处理程序名称应与要从处理程序目录中触发的任务名称相同,或者如果您正常定义处理程序,则该名称也应相同。/handlers/tasks/main.yml

  - name: OS handler
    debug: msg='test'
    when: ansible_distribution == "RedHat"

您可以让它对某些全局变量进行检查,并使用notify对其进行调用。如果检查成功,它将运行检查并执行

代替ansible_distribution,您可以具有一些其他全局变量

否则使用- include让我知道这是否回答了您的问题

© www.soinside.com 2019 - 2024. All rights reserved.