变量是否具有正在执行的当前ansible-playbook的路径?

Jos*_*ger 89 ansible

是否有一个ansible变量,它具有正在执行的当前ansible-playbook的绝对路径?

一些上下文: 我正在运行/创建一个ansible脚本localhost来配置一个mysql docker并希望相对于ansible脚本挂载数据卷.

例如,假设我已经将存储库签出~/branch1/,然后运行ansible-playbook dev.yml我认为它应该将卷保存到~/branch1/.docker_volume/.如果我~/branch2从那时开始运行它应该将卷配置为~/branch2/.docker_volume/.

ctr*_*lok 159

你可以使用playbook_dir变量.

  • 我在ansible代码中找到它:https://github.com/ansible/ansible/blob/a183972477de03c8f924525135908d4db258d44f/lib/ansible/vars/hostvars.py#L31 (3认同)
  • @slayedbylucifer https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html 它列在魔法变量部分中 (3认同)
  • 我遇到了类似的问题,你的答案解决了.谢谢.但是,我找不到记录`playbook_dir`变量的地方.你能指点我的文件吗?或者,你能解释一下你是如何知道这个变量的吗? (2认同)
  • 此外,还有一个有趣的回复https://github.com/lorin/ansible-quickref与所有变量. (2认同)

Cra*_*ray 40

似乎没有一个变量能够完全保留您想要的变量.

但是,引用文档:

同样可用的inventory_dir是包含Ansible库存主机文件的目录inventory_file的路径名,是指向Ansible库存主机文件的路径名和文件名.

playbook_dir包含playbook基目录.

最后,role_path将返回当前角色的路径名(自1.8起).这只适用于角色.

根据您的设置,这些或$ pwd基于解决方案可能就足够了.