我有这个结构
hosts
host_vars/server-foo/public.yml
group_vars/staging/public.yml
并在hosts
文件中我定义了一个这样的组
[staging]
server-foo
我试图定义一个仅对server-foo
为真的变量,所以我将该行添加到文件host_vars/server-foo/public.yml
bar: true
当我尝试运行剧本时,我得到一个错误
fatal: [staging-accounts] => error while evaluating conditional: bar
如果我将bar: true
添加到group_vars/staging/public.yml
,则会选择该变量而不会出现任何问题。
任何想法我做错了什么?我相信我一直在遵循ansible建议的方法来定义主机特定变量。
答案 0 :(得分:5)
定义的结构是正确的,因为host_vars/<server>/public.yml
应该被选中。确保<server>
文件夹名称与清单文件中的服务器条目相同。例如,如果清单中有IP地址,但域名作为文件夹名称则不起作用,则必须匹配。