辨析 ansible 之 import 和 include

Posted 看,未来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了辨析 ansible 之 import 和 include相关的知识,希望对你有一定的参考价值。

辨析 ansible 之 import 和 include

概括起来讲,import_tasks 是静态的,include_tasks 是动态的。(学过 C++ 的朋友想一下静态联编和动态联编就明白了。)

在 ansible 中二者还会有更多的一些特性。

二者都可以用来将任务导入。

在使用 import_tasks 引用变量时,要确保变量定义在 vars/vars_file或命令行中。这个属于语言细节,注意一下。

使用 set_fact 是过不去的。

when 关键字对 include_tasks 和 import_tasks 有着本质区别。这个就属于编译特性了。这个特性在 ansible 中得以展现。

当对 import_tasks 使用 when 进行条件判断时,when 对应的条件会被应用于 include 文件中的每一个任务,意思是每要执行一个任务时,都要先进行条件判断。总结起来就是顺序执行 include 文件中列出的每一个任务前,都要进行条件判断,满足条件就执行,不满足就跳过,需要多次判断。
当对 include_tasks 使用 when 进行条件判断时,when 对应的条件只应用一次,发生在是否include这个文件,若include,则执行这个include文件中所有的任务,不再进行其他判断。

相同的还有 tag,在静态联编中才会被打开。

使用 loop 或 with_items 关键字对 include 文件进行循环操作时,只能配合 include_tasks。

这个也是属于编译特性的东西,只有动态联编才能对未来传参。

以上是关于辨析 ansible 之 import 和 include的主要内容,如果未能解决你的问题,请参考以下文章

python库、包、模块概念辨析

Linux 之辨析UPDATE/UPGRADE和安装/卸载软件(apt-get)

Ansible最佳实践之Playbook控制任务的执行

大数据之二:Hadoop与Spark辨析

OOM之类对象实例实体之辨析

深入了解C++:auto与函数模板之推导规则辨析