我想有一个主要的剧本,其中包括其他剧本。是否可以将变量传递给包含playbook的变量?将变量传递给包含的playbook?
正常的语法,用于传递变量包括任务不工作(见下文)
- include: someplaybook.yml variable=value
和
- include: someplaybook.yml
vars:
variable: value
我跑v2.0.2.0。
我想有一个主要的剧本,其中包括其他剧本。是否可以将变量传递给包含playbook的变量?将变量传递给包含的playbook?
正常的语法,用于传递变量包括任务不工作(见下文)
- include: someplaybook.yml variable=value
和
- include: someplaybook.yml
vars:
variable: value
我跑v2.0.2.0。
我发现唯一缺少的是引号。
- include: someplaybook.yml variable='value'
它适用于我,也应该为你工作。如果不分享你面对的错误。
确保您在角色的任务中定义了此变量“变量”,并且从这里您只是将该值传递给该变量。
另外,我建议你阅读这一点, http://docs.ansible.com/ansible/latest/playbooks_reuse.html ,并尝试在这种情况下使用的角色,这将有助于在这样的情况下,如果你想包括一个主剧本/导入多个剧本。 关于将值传递给include语句,您可以将其添加到角色的变量main.yml中。 或者,如果要传递的变量是单个主剧本中前一个任务的结果,请使用'register'并将输出保存为变量。
- debug: msg="{{result.stdout_lines}}"
这里,结果是注册变量。 使用调试模块准确知道你想传递给剧本的内容。 希望这有助于。
当我问这个问题时,我不记得确切的上下文,但是如果你阅读关于原始问题的评论,我很清楚,角色不能用来解决这个问题。我已经在使用角色 - 这与角色能够处理的情况略有不同。我忘记了确切的细节。 – CamHart
你知道角色吗?这是什么正常的语法不起作用? – Nasr
就我所知,变量在整个Playbook的运行时间范围内是全局的,所以你只需要在任意点定义变量 – ydaetskcoR
@Nasr是的我知道角色 - 他们在这种情况下不会帮助。我添加了正常的语法。 Ansible对不同类型的变量有不同的范围。简单地使用set_facts不起作用。 – CamHart