引入额外任务
tasks:
- include: add.yml
绑定 kv 对,从而改变额外任务里的变量
tasks:
- include: add.yml
var1=hello
var2=world
绑定 tags 标记
可以通过tags执行相应的额外任务
tasks:
- include: add1.yml
tags: add1
- include: add2.yml
tags: add2
ansible-playbook test.play --tags add1 # 仅执行 add1.yml 任务
绑定 loop 循环
tasks:
- include: add.yml
loop:
- [1,2,3]
# add.yml
- debug:
msg: "loop-item: {{ item }} in add.yml "
绑定 when 条件
tasks:
- include: add.yml
when: 1 < 2
ansible 在当前版本2.9中,推荐使用 import_tasks 和 include_tasks 来替换 include,include 未来有可能不在支持。(为啥总感觉 ansible 各种变呢)
import_tasks 静态任务导入,静态任务简单来说,就是不能从任务外传递变量到任务中。
include_tasks 动态任务导入。支持循环传递变量
import_tasks 绑定 when 的时候,会将 when 的条件一对一的应用到任务文件中列出的所有任务
include_tasks 绑定 when 的时候,会将 when 的条件仅应用到任务文件。即只要条件为真,任务文件里的所有任务都会执行。
关于新版写法,绑定 tags 的方式,和旧版差异比较大,例如
include_tasks
---
- hosts: localhost
remote_user: zyh
gather_facts: no
tasks:
- name: test
include_tasks:
file: add.yml
apply:
tags:
- add
tags:
- always
# add.yml
- debug:
msg: "{{ item }} is ok"
loop: [1,2,3]