【问题标题】:ansible vars_files vs include_varsansible vars_files 与 include_vars
【发布时间】:2018-11-11 22:28:02
【问题描述】:

有什么区别

  • vars_files 指令

  • include_vars模块

当上述任何一项被弃用或不鼓励时,应该使用哪个?

【问题讨论】:

    标签: ansible


    【解决方案1】:

    vars_filesinclude_vars 都被标记为稳定的接口,因此它们都没有被弃用。它们都有一些共同点,但它们解决的目的不同。

    vars_files:

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

    include_vars:

    vars_files 有一个目的是从一组文件中包含变量,但如果

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

    这些是我能想到的一些情况,如果你想使用上述任何一种情况,那么你需要include_vars

    【讨论】:

      【解决方案2】:

      vars_files 在播放开始时被读取。 include_vars 在播放到达任务时被读取。你可能对Variable precedence: Where should I put a variable?也感兴趣

      【讨论】:

        【解决方案3】:

        一些更新的信息...

        • import_* 被认为是静态重用,vars_files 是一种 导入。
        • include_* 被认为是动态重用。

        正如弗拉基米尔所说,

        vars_files 在播放开始时被读取。当play到达任务时读取include_vars

        像所有静态项目一样,vars_files 在播放开始之前被读取。与 include_vars 不同,后者在播放到达时被“包含”。

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

        动态重用不会将performance strategy 从线性更改,但它确实会更改任务的处理顺序。通过动态重用,整个任务组必须在单个主机上完成,然后才能被下一个主机处理。不幸的是,所有其他主机都在等待时胡思乱想。

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

        当您需要在一组主机上收集信息或执行一项任务之前,才能为任何主机启动下一个任务时,导入语句非常有用。

        这是一个非常好的表格,它比较了所有不同的 Include_* 和 Import_* 函数。Comparing includes and imports: dynamic and static re-use

        仅供参考,这里提供了一个链接,指向有关性能策略以及如何提高性能的更多信息。 How can I improve performance for network playbooks?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-02
          • 2022-08-18
          • 1970-01-01
          • 2017-03-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多