Jinja2 模板中的相对路径

Rya*_*yan 2 jinja2 ansible

我有一个 .xml.j2 模板,我通过 ansible 填充该模板。我有一个由 ansible 传入的变量,它可能是相对路径或绝对路径。如果路径是相对路径,我需要在前面添加父目录路径。jinja2 有没有办法检查路径是相对路径还是绝对路径,并进行相应处理?如果没有,我可以在ansible中执行此操作并传入修改后的变量吗?

tec*_*raf 5

Ansible 为您提供了realpath过滤器(以及其他一些用于操作路径的有用过滤器):

debug:
  msg: "{{ '.' | realpath }}"
Run Code Online (Sandbox Code Playgroud)

回答您稍后的评论:

不幸的是,我不仅仅需要真正的路径。我需要“如果它是真实路径,那就太好了。如果不是,则将此路径添加到它前面,该路径在另一个变量中设置”

您可以使用==运算符来验证 是path相对的还是绝对的:

path == path | realpath
Run Code Online (Sandbox Code Playgroud)

更不用说像/在前面检查这样琐碎的事情了。

  • 这似乎不适用于像“../../folder”这样的输入。文档说“获取链接的真实路径”,所以也许这仅适用于符号链接?我希望有一些更通用的东西是合理的。 (3认同)