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

Can a value in a variable and a string with backslashes be combined in ansible?

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

变量 1 有值 "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:\Install\16.3.0\build\dist\package\UI.msi"

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

是否可以做到

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

我尝试了很多组合,但上面的反斜杠没有正确转义。如果不可能那么谁能解释一下原因。

谢谢。

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

是调试模块的输出,是一个JSON字符串,所以每个\都被转义了。
此处 msg 的实际值为 D:\Install.3.0\build\dist\package\UI.msi,如您所料。

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