eld*_*dos 15 ansible ansible-playbook
当我lineinfile在ansible中使用它不是写字',"字符
lineinfile: 'dest=/home/xyz state=present line="CACHES="default""'
它是给予,CACHES=default
但所需的输出是CACHES="default"
怎么做到这一点?
ted*_*r42 19
看来你可以逃脱报价:
- lineinfile: dest=/tmp/xyz state=present line="CACHES=\"default\""
Run Code Online (Sandbox Code Playgroud)
这给出了这个输出:
$ cat /tmp/xyz
CACHES="default"
Run Code Online (Sandbox Code Playgroud)
您不需要转义双引号内的单引号:
- lineinfile: dest=/tmp/xyz state=present line="CACHES=\"default\" foo='x'"
cat /tmp/xyz
CACHES="default" foo='x'
Run Code Online (Sandbox Code Playgroud)
Ansible 1.9.2包含一个错误(https://github.com/ansible/ansible/issues/10864),该错误无法在行的开头或结尾插入转义的双引号。
例如,以下
-名称:/ home / core / linetest lineinfile:dest =“ / home / core / linetest” line =“ \” ma \“ ok \” in \“”
会导致缺少第一个和最后一个双引号(即使您对其进行了转义)。
#/ home / core / linetest ma“ ok”在
为了弥补此错误,您可以在开始和结束的双引号中添加一个PREFIX,然后将其删除。
-名称:PREFIX使用'KUCF'首先和最后转义的双引号 lineinfile:dest =“ / home / core / linetest” line =“ KUCF \” main \“ KUCF” -名称:删除“ KUCF”前缀 替换:dest =“ / home / core / linetest” regexp =“ KUCF”替换=“”
这应该给你
#/ home / core / linetest “主要”
确保您选择的PREFIX不会在目标文件的上下文中使用。通常,PREFIX越长越随机,它与目标文件中现有内容发生冲突的可能性就越小。
或者,您可以将Ansible升级到最新分支。