【问题标题】:Ansible nested host_vars foldersAnsible 嵌套的 host_vars 文件夹
【发布时间】:2020-09-09 01:12:33
【问题描述】:

我正在尝试按其父级对所有 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

我错过了什么? :)

【问题讨论】:

    标签: ansible ansible-2.x ansible-inventory


    【解决方案1】:

    这是对语句“创建以您的组或主机命名的目录”的误解。您可以在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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多