有没有办法在Ansible中评估相对路径?
tasks:
- name: Run docker containers
include: tasks/dockerup.yml src_code='..'
基本上我有兴趣将源代码路径传递给我的任务。恰好源代码是{{ansible_inventory}}
的父路径,但似乎没有任何东西可以实现开箱即用。
----进一步信息----
项目结构:
myproj
app
deploy
deploy.yml
因此,我尝试从app
访问deploy.yml
。
答案 0 :(得分:22)
我刚看了一眼来源,发现了一个我不知道的过滤器。忘记以前的字符串操作,这很简单:
{{ inventory_dir | dirname }}
上一个回答:
这应该这样做:
{{ inventory_dir.split("/")[0:-1]|join("/") }}
上一个回答:
{{ inventory_dir }}
能做你想做的吗?
同样可用,
inventory_dir
是持有Ansible库存主机文件的目录的路径名
或者,如果您的意思是"父目录"你的任务所在角色的路径,{{ role_path }}
可能会成功。
最后,
role_path
将返回当前角色的路径名(自1.8起)。这只适用于角色。
答案 1 :(得分:2)
您可以使用{{playbook_dir}}
作为当前playbook运行的绝对路径。
对我来说这是最好的方式,因为你通常知道你的剧本在哪里。
答案 2 :(得分:0)
好的,解决方法是仅为此使用单独的任务:
tasks:
- name: Get source code absolute path
shell: dirname '{{inventory_dir}}'
register: dirname
- name: Run docker containers
include: tasks/dockerup.yml src_code={{dirname.stdout}}
感谢udondan在inventory_dir
上暗示我。