我可以在剧本上导入前任务或后任务吗?

时间:2019-03-08 21:18:46

标签: ansible

有几本剧本,我想在这些剧本中添加相同的pre_tasks和post_tasks。所以我将import_tasks添加到剧本中。看起来像这样

---
- hosts: central
  tasks:
  - import_tasks: pre_tasks.yml
  roles:
  - do_something
  become: no

但是我遇到了这个错误

  

错误!包含的任务文件必须包含任务列表

我如何将pre_tasks导入到剧本中,还是有更好的方法将pre_tasks / post_tasks应用于多个剧本?

1 个答案:

答案 0 :(得分:0)

您可以在剧本中导入前任务或后任务。

这是一个包含playbook.yml和common.yml的示例-如果我们想将common.yml包含在playbook.yml中,则此示例说明如何正确构建文件:

playbook.yml

- hosts: haproxy  
  pre_tasks: 
  - name: Import common tasks
    import_tasks: 'common.yml'

  tasks:  
  - debug:
      msg: 'Hello from playbook.yml'

common.yml (这是错误的,如果从类似问题的脚本中调用会重现您的错误)

pre_tasks:
  - debug: 
      msg: 'Hello from common.yml'

common.yml (正确的导入结构)

- debug: 
    msg: 'Hello from common.yml'

因此,关键是不要在包含的文件中包含pre_taskspost_tasks伪指令。这样做会产生您提到的相同错误