我正在开发一个项目,该项目将使用许多设备,这些设备需要配置相同的播放,但不同的变量。我有一个 vars 文件,其中包含许多库,每个设备一个。库名称与设备名称匹配,例如:
(设备 1)
- {xxx: "AAA", yyy: "BBB", zzz: "CCC"}
- {xxx: "AAA", yyy: "BBB", zzz: "CCC"}
Run Code Online (Sandbox Code Playgroud)
(设备 2)
- {xxx: "AAA", yyy: "BBB", zzz: "CCC"}
- {xxx: "AAA", yyy: "BBB", zzz: "CCC"}
Run Code Online (Sandbox Code Playgroud)
该剧本身应该找出哪个库与设备匹配,使用该库的变量而不使用其他变量。我目前的尝试是这样完成的:
- name: do this
command: "do some of item.xxx with some item.zzz
- include_vars: device-library.yaml
when: "{{item}} == {{ansible_hostname}}"
Run Code Online (Sandbox Code Playgroud)
但我总是得到:
致命:[xxx.xxx.xxx.xxx]:失败!=> {"failed": true, "msg": "ERROR!'item' 未定义"}
当这个项目只是一台设备时,我们with_items: stuff.yaml
一直在使用,而且效果很好。
我的问题是:我必须用什么来代替{{item}}
,还是有更好的方法?