我正在使用一个角色(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
您知道为什么这种方法行不通吗?
答案 0 :(得分:0)
您的host_vars
目录必须位于ansible的发现的inventory_dir
中。
使用上述文件树,我想您正在使用ansible-playbook -i inventories/preprod.yml yourplaybook.yml
启动剧本。在这种情况下,ansible发现inventory_dir
为inventories
解决方案是将清单文件移动到环境的每个目录中,例如for preprod => mv inventories/preprod.yml inventories/preprod/
然后您可以使用ansible-playbook -i inventories/preprod/preprod.yml yourplaybook.yml
启动剧本,它应该会按预期运行。