Ansible剧本:逃脱'$';在Linux路径中
我有一条路径,看起来像这样-Ansible剧本:逃脱'$';在Linux路径中,ansible,ansible-2.x,Ansible,Ansible 2.x,我有一条路径,看起来像这样- base\u dir/123/path/to/G\$/子目录/html/ 当我试图在Ansible playbook中设置此路径时,它会抛出错误。如果将\$添加到转义“\”,则会引发意外的失败错误 PlaybBook- - hosts: localhost vars: account_id: 123 tasks: - name: Add \ to path debug: var: "base_dir/{{ account_id
base\u dir/123/path/to/G\$/子目录/html/
当我试图在Ansible playbook中设置此路径时,它会抛出错误。如果将\$添加到转义“\”,则会引发意外的失败错误
PlaybBook-
- hosts: localhost
vars:
account_id: 123
tasks:
- name: Add \ to path
debug:
var: "base_dir/{{ account_id }}/path/to/G\\$/subdirectory/html/"
结果-
TASK [Gathering Facts] *************************************************************************************************************************************************
task path: /playbooks/example_path.yml:2
ok: [localhost]
META: ran handlers
TASK [Add \ to path] ***************************************************************************************************************************************************
task path: /playbooks/exmaple_path.yml:6
fatal: [localhost]: FAILED! => {
"msg": "Unexpected failure during module execution."
}
PLAY RECAP *************************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=1
如模块文档中所述,var
选项需要变量名,而不是输出的标量。您将收到一个错误,因为变量名中不应包含\
。使用-vvv
运行剧本将为您提供更多的解释
在这种情况下,您需要使用msg
选项
- hosts: localhost
gather_facts: false
vars:
account_id: 123
tasks:
- name: Add \ to path
debug:
msg: "base_dir/{{ account_id }}/path/to/G\\$/subdirectory/html/"
结果
PLAY [localhost] ***************************************************************
TASK [Add \ to path] ***********************************************************
ok: [localhost] => {
"msg": "base_dir/123/path/to/G\\$/subdirectory/html/"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
下一个选项是使用。请参见下面的示例
- hosts: localhost
vars:
my_dir1: "/scratch/tmp/G1\\$"
my_dir2: '/scratch/tmp/G2\$'
tasks:
- file:
state: directory
path: "{{ item }}"
loop:
- "{{ my_dir1 }}"
- "{{ my_dir2 }}"
# ls -1 /scratch/tmp/
'G1\$'
'G2\$'