变量中的值和带反斜杠的字符串可以在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'
我有一个 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'