ansible 变量传递到include

Task Include Files And Encouraging Reuseapache

假设您想在play或playbook中重复使用任务列表。 您能够使用include文件来执行此操做。 使用include的任务列表是定义系统将要实现的角色的好方法。 请记住,playbook中play的目标是将一组系统映射到多个角色。 让咱们看看这是什么样子ssh

一个task include 文件只包含一个平面的任务列表,以下所示:wordpress

---this

# possibly saved as tasks/foo.ymlrest

 - name: placeholder foo部署

   command: /bin/foo变量

 - name: placeholder barfile

   command: /bin/barservice

include指令看起来像这样,而且能够混合在一个playbook中的常规任务: tasks:语法

  - include: tasks/foo.yml 您也能够将变量传递给include。 咱们称之为“参数化include”。 例如,要部署到多个wordpress实例,我能够将全部个人wordpress任务封装在一个wordpress.yml文件中,并使用以下所示:

tasks:   - include: wordpress.yml wp_user=timmy   - include: wordpress.yml wp_user=alice   - include: wordpress.yml wp_user=bob

从1.0开始,变量也能够使用替代语法传递到包含文件,这也支持结构化变量: tasks:

  - include: wordpress.yml     vars:         wp_user: timmy         ssh_keys:           - keys/one.txt           - keys/two.txt

使用任何一种语法,而后能够在包含的文件中使用传入的变量。 咱们将在变量中介绍它们。 你能够这样引用它们:

{{ wp_user }} (除了明确传递的参数以外,vars部分中的全部变量也能够在这里使用。)

include也能够在'handler'部分使用,例如,若是你想定义如何从新启动apache,你对全部的Playbook只作一次。 你可能会制做一个看似以下的handlers.yml:

--- # this might be in a file like handlers/handlers.yml - name: restart apache   service: name=apache state=restarted

而在你的main Playbook文件中,只要把它include进来,放到play的底部:

handlers:   - include: handlers/handlers.yml

相关文章
相关标签/搜索