Playbook文件复用:
1,include & import 区别
2,import_playbook
3,include_tasks
4,import_tasks
include & import 区别:
include*(动态):在运行时导入
--list-tags,--list-tasks不会显示到输出
不能使用notify触发来自include*内处理程序名称(handlers)
import*(静态):在Playbook解析时预先导入
不能与循环一起使用
将变量用于目标文件或角色名称时,不能使用inventory(主机/主机组等)中的变量
import_playbook:
[root@es1 playbook-demo]#
[root@es1 playbook-demo]# cat webservers.yml
# webservers.yml
---
- hosts: webservers
tasks:
- debug: msg="test webserver"
[root@es1 playbook-demo]#
[root@es1 playbook-demo]#
[root@es1 playbook-demo]# cat database.yml
# database.yml
---
- hosts: webservers
tasks:
- debug: msg="test database"
[root@es1 playbook-demo]#
[root@es1 playbook-demo]# cat main.yml
# main.yml
---
- import_playbook: webservers.yml
- import_playbook: databases.yml
[root@es1 playbook-demo]#
[root@es1 playbook-demo]#
[root@es1 playbook-demo]# ansible-playbook main.yml --syntax-check
playbook: main.yml
[root@es1 playbook-demo]#
include_tasks & import_tasks:
[root@es1 playbook-demo]# cat task2.yml
#task2.yml
---
- name: task2
debug: msg="hello {{user}}"
[root@es1 playbook-demo]#
[root@es1 playbook-demo]# cat main.yml
# main.yml
---
- hosts: webservers
gather_facts: no
tasks:
- include_tasks: task1.yml
vars:
user: zhangsan
- import_tasks: task2.yml
vars:
user: lisi
[root@es1 playbook-demo]#
[root@es1 playbook-demo]# ansible-playbook main.yml
PLAY [webservers] ********************************************************************************************************************************************************************************
TASK [include_tasks] *****************************************************************************************************************************************************************************
included: /etc/ansible/playbook-demo/task1.yml for 192.168.0.12, 192.168.0.13
TASK [task1] *************************************************************************************************************************************************************************************
ok: [192.168.0.12] => {
"msg": "hello zhangsan"
}
ok: [192.168.0.13] => {
"msg": "hello zhangsan"
}
TASK [task2] *************************************************************************************************************************************************************************************
ok: [192.168.0.12] => {
"msg": "hello lisi"
}
ok: [192.168.0.13] => {
"msg": "hello lisi"
}
PLAY RECAP ***************************************************************************************************************************************************************************************
192.168.0.12 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.0.13 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@es1 playbook-demo]#
[root@es1 playbook-demo]#