当我尝试从包含斜杠(“ /”)的变量连接字符串时,Ansible失败。
变量:
PLAY_USER_HOME: "/home/pl"
version: "1.1"
用于concat的尝试方法:
- debug:
var: "{{''.join((PLAY_USER_HOME, '/pns-', version))}}"
- debug:
var: "{{PLAY_USER_HOME}}/pns-{{version}}"
两次都抛出以下错误:
fatal: [192.168.178.25]: FAILED! => {"msg": "template error while
templating string: unexpected '/'. String: {{/home/pl/pns-1.1}}"}
当我将变量从"/home/pl"
更改为"_home_pl"
时,它可以正常工作。调试只是出于任何原因抱怨'_home_pl' is undefined
:
ok: [192.168.178.25] => {
"_home_pl/pns-1.1": "VARIABLE IS NOT DEFINED!: '_home_pl' is undefined"
}
这是一个错误还是我做错了什么?我的Ansible版本是2.8.3
感谢您的帮助!
答案 0 :(得分:2)
在两种情况下,debug
应该使用 msg
而不是 var
。正确的语法是
- debug:
msg: "{{ ''.join((PLAY_USER_HOME, '/pns-', version)) }}"
- debug:
msg: "{{ PLAY_USER_HOME }}/pns-{{ version }}"