ansible变量文件与include变量

ansible变量文件与include变量,ansible,Ansible,两者的区别是什么 变量文件:指令 及 -包括变量模块 当上述任何一项不推荐或不鼓励时,应使用哪一项?在播放开始时读取。当剧本完成任务时阅读。您可能还对两个vars\u文件和include\u vars都被标记为稳定接口,因此它们都不推荐使用。两者都有一些共同点,但解决的目的不同 变量文件: vars_file指令只能在定义用于指定变量文件的播放时使用。这些文件中的变量包含在剧本中。因为它是在游戏开始时使用的,它很可能意味着其他一些游戏(在此游戏之前)创建了这些vars文件,或者它们是在运行配置之

两者的区别是什么

变量文件:指令

-包括变量模块

当上述任何一项不推荐或不鼓励时,应使用哪一项?

在播放开始时读取。当剧本完成任务时阅读。您可能还对

两个vars\u文件和include\u vars都被标记为稳定接口,因此它们都不推荐使用。两者都有一些共同点,但解决的目的不同

变量文件:

vars_file指令只能在定义用于指定变量文件的播放时使用。这些文件中的变量包含在剧本中。因为它是在游戏开始时使用的,它很可能意味着其他一些游戏(在此游戏之前)创建了这些vars文件,或者它们是在运行配置之前静态创建的;意味着它们是该剧的配置变量

包括变量:

vars_文件的一个用途是包含一组文件中的vars,但如果

  • vars文件是动态创建的,您希望将其包括在游戏中
  • 在有限的范围内包含变量
  • 您有多个VAR文件,并且希望根据某些条件将其包括在内,例如,如果本地数据库存在,则包括本地数据库的配置,否则包括远程托管数据库的配置
  • include_变量具有高于vars_的文件,因此,它可用于覆盖默认配置(vars)
  • include_变量的评估是惰性的(在使用时进行评估)
  • 您希望使用循环动态地包含变量
  • 您希望读取一个文件并将所有这些变量放在命名字典中,而不是读取全局变量命名空间中的所有变量
  • 您希望包含目录中的所有文件或目录中的某些文件子集(基于前缀或排除列表),而不知道vars文件的确切名称

这些是我能想到的一些案例,如果你想使用上述案例中的任何一个,那么你需要包括一些更新的信息。

  • 被认为是静态重用,vars_文件是一种 进口
  • 被认为是动态重用
正如弗拉基米尔所提到的

播放开始时读取vars_文件。当游戏到达任务时,将读取include_变量

与所有静态项一样,vars_文件在播放开始前读取。不同于include_vars,它在游戏到达时被“包含”

静态重用和动态重用之间最大的区别之一是如何处理其中的变量或任务。默认情况下,所有静态重用项都是通过处理的,所有主机彼此保持同步。每个任务必须在所有主机上完成,然后才能开始下一个任务。被跳过的主机实际上会得到一个要处理的noop任务

动态重用不会改变线性化,但会改变任务的处理顺序。通过动态重用,整个任务组必须在一台主机上完成,然后才能由下一台主机处理。不幸的是,所有其他的主人都在等待的时候玩弄他们的屁股

当您需要通过一系列具有已注册输出的任务“循环”主机,并在下一个主机启动之前使用该信息执行某些操作时,Include语句非常有用

当您需要在一组主机上收集信息或执行任务,然后才能为任何主机启动下一个任务时,Import语句非常有用

这是一个非常好的表,它比较了所有不同的Include_*和Import_*函数

仅供参考,这里有一个链接,可以链接到有关绩效策略以及如何提高绩效的更多信息