库存目录中的Anvar无效

时间:2019-05-10 07:01:49

标签: ansible ansible-inventory

我正在使用一个角色(zaxos.lvm-ansible-role)在一些主机上管理lvms。最初,我可以在host_vars / server.yaml下找到适用于lvm的vars。

这是工作布局

├── filter_plugins
├── group_vars
├── host_vars
│   ├── server1.yaml
│   └── server2.yaml
├── inventories
│   ├── preprod
│   ├── preprod.yml
│   ├── production
│   │   ├── group_vars
│   │   └── host_vars
│   ├── production.yaml
│   ├── staging
│   │   ├── group_vars
│   │   └── host_vars
│   └── staging.yml
├── library
├── main.yaml
├── module_utils
└── roles
    └── zaxos.lvm-ansible-role
        ├── defaults
        │   └── main.yml
        ├── handlers
        │   └── main.yml
        ├── LICENSE
        ├── meta
        │   └── main.yml
        ├── README.md
        ├── tasks
        │   ├── create-lvm.yml
        │   ├── main.yml
        │   ├── mount-lvm.yml
        │   ├── remove-lvm.yml
        │   └── unmount-lvm.yml
        ├── tests
        │   ├── inventory
        │   └── test.yml
        └── vars
            └── main.yml

对于我的环境,更有意义的是将host_vars放在清单目录下,根据Ansible文档,该目录也受支持(备用目录布局)。

但是,当我更改为这种布局时,不会初始化var,并且主机上的lvms也不会更改。

 ├── filter_plugins
├── inventories
│   ├── preprod
│   │   ├── group_vars
│   │   └── host_vars
│   │       ├── server1.yaml
│   │       └── server2.yaml
│   ├── preprod.yml
│   ├── production
│   │   ├── group_vars
│   │   └── host_vars
│   ├── production.yaml
│   ├── staging
│   │   ├── group_vars
│   │   └── host_vars
│   └── staging.yml
├── library
├── main.yaml
├── module_utils
└── roles
    └── zaxos.lvm-ansible-role
        ├── defaults
        │   └── main.yml
        ├── handlers
        │   └── main.yml
        ├── LICENSE
        ├── meta
        │   └── main.yml
        ├── README.md
        ├── tasks
        │   ├── create-lvm.yml
        │   ├── main.yml
        │   ├── mount-lvm.yml
        │   ├── remove-lvm.yml
        │   └── unmount-lvm.yml
        ├── tests
        │   ├── inventory
        │   └── test.yml
        └── vars
            └── main.yml

您知道为什么这种方法行不通吗?

1 个答案:

答案 0 :(得分:0)

您的host_vars目录必须位于ansible的发现的inventory_dir中。

使用上述文件树,我想您正在使用ansible-playbook -i inventories/preprod.yml yourplaybook.yml启动剧本。在这种情况下,ansible发现inventory_dirinventories

解决方案是将清单文件移动到环境的每个目录中,例如for preprod => mv inventories/preprod.yml inventories/preprod/

然后您可以使用ansible-playbook -i inventories/preprod/preprod.yml yourplaybook.yml启动剧本,它应该会按预期运行。