Ansible

Ansible 小手册系列 二十三(动态和静态包含)

2018-01-25  本文已影响167人  lework

Ansible有两种可重用内容的操作模式:动态和静态。
在Ansible 2.0阶段使用static来设置操作模式,Ansible 2.4则引入了include和import的概念。

如果您使用import*包含Task(import_playbookimport_tasks等),它将是静态的。
如果您使用include*包含Task(include_tasksinclude_role等),它将是动态的。

使用include包含Task(用于task文件和Playbook级包括)仍然可用,但现在被认为已被弃用。

静态和动态之间的差异


Ansible预处理Playbook解析期间的所有静态导入,而动态包含是在运行期间遇到该任务时处理的。

当涉及Ansible task选项,如tags和when:

对于静态导入,父任务选项将被复制到import中包含的所有子任务。
对于动态包含,任务选项仅在评估时应用于动态任务,不会被复制到子任务。

优缺点


使用include*语句的主要优点是循环。当循环与include*一起使用时,包含的任务或角色将为循环中的每个项目执行一次。

import*语句相比,使用include*有一些限制:

与动态相比,使用import*也可能有一些限制:

总而言之,没有使用with的包含,就使用import,使用了with,那就用include。

上一篇 下一篇

猜你喜欢

热点阅读