我正在开发一个项目,该项目将使用一些设备,这些设备需要configuration相同的游戏,但需要单独的variables。 我有一个vars文件,其中包括一些库,每个设备一个。 库的名称与设备的名称相匹配,例如:
(Device1的)
- {xxx: "AAA", yyy: "BBB", zzz: "CCC"} - {xxx: "AAA", yyy: "BBB", zzz: "CCC"}
(设备2)
- {xxx: "AAA", yyy: "BBB", zzz: "CCC"} - {xxx: "AAA", yyy: "BBB", zzz: "CCC"}
剧本本身应该找出哪个库与设备匹配,使用该库的variables,而不是其他的。 我目前的尝试是这样做的:
- name: do this command: "do some of item.xxx with some item.zzz - include_vars: device-library.yaml when: "{{item}} == {{ansible_hostname}}"
但我总是得到:
致命:[xxx.xxx.xxx.xxx]:失败! => {“failed”:true,“msg”:“ERROR!'item'is undefined”}
当这个项目只是一个设备,我们一直使用with_items: stuff.yaml ,它工作得很好。
我的问题是:我必须用什么来代替{{item}} ,还是有更好的方法?
从这个声明:
剧本本身应该找出哪个库与设备匹配,使用该库的variables,而不是其他的。
我的结论是你试图复制Ansible最基本的function之一。
你应该做什么:
host_vars ; host_vars目录; .yaml扩展名); 或者覆盖多个服务器,您可以使用group_vars子目录执行相同的操作,并根据清单文件中定义的组名命名文件。
请参阅文档以获取更多信息。