Ansible 库存目录中的所有变量不适用

Ansible 库存目录中的所有变量不适用,ansible,ansible-inventory,Ansible,Ansible Inventory,我正在使用一个角色(zaxos.lvm ansible role)来管理一些主机上的lvm。最初,我在host_vars/server.yaml下为lvm提供了可用的VAR 这是工作布局 ├── filter_plugins ├── group_vars ├── host_vars │   ├── server1.yaml │   └── server2.yaml ├── inventories │   ├── preprod │   ├── preprod.yml │   ├── produc

我正在使用一个角色(zaxos.lvm ansible role)来管理一些主机上的lvm。最初,我在host_vars/server.yaml下为lvm提供了可用的VAR

这是工作布局

├── 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

对于我的环境来说,将主机变量放在Inventory目录下更有意义,根据Ansible doc,Inventory目录也受支持(可选目录布局)

但是,当我更改到这个布局时,变量没有初始化,主机上的LVM也没有更改

 ├── 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


你知道为什么这种方法不起作用吗?

你的
主机变量
目录必须位于ansible发现的
目录下

通过上面的文件树,我猜您是在用
ansible playbook-I inventory/prepod.yml yourplaybook.yml
启动您的playbook。在此上下文中,ansible发现
inventory\u dir
inventory

解决方案是将您的库存文件移动到您环境的每个目录中,例如prepod=>
mv inventures/prepod.yml inventures/prepod/

然后,您可以使用
ansible playbook-i inventory/prepod/prepod.yml yourplaybook.yml
启动您的playbook,它应该可以按照您的预期工作