Ansible 嵌套 host_vars 文件夹

标签 ansible ansible-2.x ansible-inventory

我正在尝试按其父级对所有 host_vars 文件进行分组,并且我具有以下文件夹结构:

- mail.yml
- hosts.yml
- group_vars/
  - pool1.yml
  - pool2.yml
- host_vars/
  - ns1.me.yml
.....

和hosts.yml:

all:
  children:
    pool1:
      hosts:
        ns1.me:
          ansible_host: 10.10.0.1
        ns2.me:
          ansible_host: 10.10.0.2
    pool2:
      hosts:
        ns3.me:
          ansible_host: 10.10.0.14

在此设置中,它工作正常,但如果我尝试在 host_vars 和 ns1.me.yml 之间添加嵌套文件夹,ansible 将无法获取变量

来自 ansible 文档:“您还可以创建以您的组或主机命名的目录。Ansible 将按字典顺序读取这些目录中的所有文件。” -https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html但不工作...

所需的文件夹结构:

- host_vars/
  - pool1/
    - ns1.me.yml
    - ns2.me.yml
  - pool2/
    - ns3.me.yml

我缺少什么? :)

最佳答案

这是对“创建以您的组或主机命名的目录”这一说法的误解。您可以在 group_vars 中的组之后创建目录,也可以在 host_vars 中的主机之后创建目录。但就你而言

- host_vars/
    pool1/
      ns1.me.yml
      ns2.me.yml
    pool2/
      ns3.me.yml

您已在 host_vars 中的组后面创建了目录。这是行不通的。


当您有更多包含主机或组变量的文件时,会使用此 Ansible 功能。例如

  mail.yml
  hosts.yml
  group_vars/
    pool1/
      vars1.yml
      vars2.yml
    pool2/
      vars1.yml
      vars2.yml
  host_vars/
    ns1.me/
      varsX.yml
      varsY.yml

关于Ansible 嵌套 host_vars 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63795286/

相关文章:

docker - 通过 Ansible 管理 Docker 容器

ansible - 如何使用ansible设置现有的linux环境变量?

ansible - 如何根据条件打破 with_items 循环

Ansible 用户定义的库存变量调用

vagrant - host_vars 和 group_vars 未加载

ansible - 寻找有关ansible变量优先级的说明

ansible - 如何在when条件中使用变量替换?

linux - Ansible:在本地主机上以不同的用户身份运行

ansible - 如何设置 Ansible 层特定的库存变量?

git - 如何使用 Ansible git 模块 pull 带有本地更改的分支?