变量中的值和带反斜杠的字符串可以组合在ansible中吗?

时间:2016-08-15 14:33:47

标签: ansible jinja2

我有一个ansible playbook,其中一个变量我从命令传递。我试图附加一个Windows文件夹路径。我能找到的一种方法是将路径添加到另一个变量,然后加入这两个变量。我想知道是否可以避免变量并将路径放在这样的: " {{variable2}} \ build \ dist \ package \ ui.msi"

variable1具有值" d:\ install" var_build_file_name由用户输入 variable2由variable1和var_build_number组合而成。

这是剧本中的实际内容:

  vars:
    installerFolder: "{{ UploadFolder }}{{ var_build_file_name | regex_replace('(\\.zip)','\') }}"
    packagePath: '\build\dist\package\UI.msi'

  - name: Install new version.
    debug:
      msg: "{{ installerFolder }}{{ packagePath }}"

这是剧本命令:

ansible-playbook Install.yml -i ../inventory/hosts.ini --extra-vars "target=servername var_build_file_name=16.3.0.zip UploadFolder=D:\Install\\"

我得到的输出是:

" msg":" D:\\安装\\ 16.3.0 \\ build \\ dist \\ package \\ UI.msi"

在上面的输出中,如何显示两个反斜杠而不是一个?

可以吗

msg: "{{ installerFolder }} '\build\dist\package\UI.msi' "

我尝试了很多组合,但反斜杠没有得到适当的转义。如果不可能,那么有人可以启发原因。

感谢。

1 个答案:

答案 0 :(得分:1)

"msg": "D:\\Install\\16.3.0\\build\\dist\\package\\UI.msi"

它是调试模块的输出,它是一个JSON字符串,因此每个\都被转义。
这里的msg的实际值是D:\Install\16.3.0\build\dist\package\UI.msi,正如您所期望的那样。

你绝对可以使用这种语法:msg: '{{ installerFolder }}\build\dist\package\UI.msi'