在 Ansible 中,vars 是非常重要的一个概念,它可以让我们在 playbook 中定义和使用变量。这些变量可以用来存储主机属性、自定义参数或者其它需要在 playbook 中使用的值。在 Ansible 中,vars 的来源有很多种,下面我们来详细了解一下。

第一种来源是主机组中定义的 vars。在 Ansible 的 inventory 文件中,我们可以定义主机组,并在主机组中为每个主机定义 vars。这些 vars 只对当前主机组中的所有主机生效,可以用来定义一些共同的属性或参数。这样,我们就可以在 playbook 中直接引用这些 vars,而不需要对每个主机单独定义。

第二种来源是 playbook 中定义的 vars。在 playbook 中,我们可以使用 vars 关键字来定义变量。这些变量只在当前 playbook 中生效,可以用来存储一些特定于当前 playbook 的值。与在主机组中定义的 vars 不同,playbook 中定义的 vars 只对当前 playbook 中的 tasks 生效。

第三种来源是外部文件中定义的 vars。有时候我们可能需要将一些变量存储在外部文件中,然后在 playbook 中引用这些变量。在 Ansible 中,我们可以使用 include_vars 模块来导入外部文件中的 vars。这样,我们就可以将一些敏感或者频繁变动的变量存储在外部文件中,方便管理和维护。

第四种来源是 facts。在 Ansible 中,facts 是指存储主机属性的变量,比如主机名、操作系统版本等。这些 facts 可以通过 setup 模块来获取,并且可以在 playbook 中通过 ansible_facts 来引用。这样,我们就可以在 playbook 中获取到主机的一些基本属性,方便根据主机属性执行不同的 tasks。

第五种来源是 ansible-playbook 命令行参数中传入的 vars。在运行 playbook 的时候,我们可以通过命令行参数 -e 或 --extra-vars 来传入额外的变量。这样,我们就可以在运行 playbook 的时候动态传入一些参数,而不需要事先定义在 playbook 中。

综上所述,Ansible 中的 vars 可以来自于多种不同的来源,包括主机组、playbook、外部文件、facts 以及命令行参数。通过灵活地使用这些 vars,我们可以更加高效地管理和维护 playbook,实现自动化运维的目标。希望这些信息对您有所帮助。