在角色任务中包含变量

Man*_*rer 6 ansible ansible-playbook

在一个角色中,我试图从另一个角色加载一些变量.(如果该角色包含在当前游戏中,则可以访问变量,但事实并非如此.)

所以我尝试了这个:

- include_vars: ../../another_role/defaults/main.yml
Run Code Online (Sandbox Code Playgroud)

但它不起作用,没有错误,但变量仍未定义.所以我试着变得聪明并将文件符号链接到vars/another_role_defaults.yml我想要使​​用vars的角色,然后像这样包含它:

- include_vars: another_role_defaults.yml
Run Code Online (Sandbox Code Playgroud)

相同的结果,没有错误(如果找不到文件,为什么不抛出错误??)但变量仍未定义.我也试过这个,但是还是没有雪茄.

- include_vars: ../vars/another_role_defaults.yml
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Man*_*rer 9

这到底是我自己的错...我通过使用debug模块对此进行了测试,tags如下所示:

- include_vars: ../../another_role/defaults/main.yml

- debug: msg={{ variable }}
  tags: foo
Run Code Online (Sandbox Code Playgroud)

然后像这样执行剧本:

  ansible-playbook -vvvv playbook.yml --tags foo
Run Code Online (Sandbox Code Playgroud)

一旦我遗漏了标签,它就可以了(当然).问题是我应该将标签添加到include_vars命令中,如下所示:

- include_vars: ../../another_role/defaults/main.yml
  tags: foo

- debug: msg={{ variable }}
  tags: foo
Run Code Online (Sandbox Code Playgroud)

  • 半小时不是半天) (3认同)