






















如果Playbook很长或很复杂,可以尝试将其分成较小的文件以便与管理。适宜食用模块化方式将多个Playbook组合成一个主要的Playbook,或者将文件中的任务列表插入到Play中。和杨可以更轻便、更加便于管理的操作项目中的Play和任务序列。
Ansible支持两种方式将内容带入到Playbook,可以使用包含内容,也可以使用导入内容。
包含内容(include)是一个动态的过程。在playbook运行期间,Ansible会在内容到达时再去处理所包含的内容。
导入内容(import)是一个静态操作。在最开始的时候Ansible运行Playbook时就将它解析好并导入到要执行的这个Playbook中了。
使用import_playbook指令可以将外部的Playbook导入到当前的Playbook中。
导入的Playbook是一个完成的playbook,因此要使用import_playbook指令需要在Play的位置导入,而不能在tasks处进行导入Playbook。如果你导入了多喝playbook,则将按照导入的顺序一次运行.
---
- name: Play1
import_playbook: web.yml
- name: Play2
hosts: localhost
tasks:
- debug:
msg: This is Play 2
- name: Play3
import_playbook: db.yml
...
在上面的例子中,会一次执行三个Play,并且导入操作可以和展开的Play穿插使用。
可以将任务文件中的任务列表导入或包含在Play中。任务文件是包含一个任务平面列表的文件:
vim tasks_firewalld.yml
- name: Install the firewall
yum:
name: firewalld
state: latest
- name: Start the firewall
service:
state: started
name: firewalld
enabled: true
使用import_tasks功能将任务文件静态导入Playbook的Play中。在一开始解析Playbook时就会将该任务文件插入到Play中。
- name: Play
hosts: localhost
tasks:
- debug:
msg: This is Play
- name: I'm Import Task
import_tasks: db.yml
使用include_tasks可以将任务文件动态包含进Tasks中。
- name: Play
hosts: localhost
tasks:
include_tasks: db.yml
在Play运行到达该Tasks前,Ansible不会处理该任务文件的任何内容。使用include_tasks时,包含时设置的when等条件语句将确定任务是否包含在Play中。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。