如何在ansible变量中转义双引号

use*_*430 6 ansible

我有一个 ansible 剧本,它接受一个变量,传递一个带引号的变量(它需要),该变量将用于查询数据库

剧本

- name: Execute clear script
  script: scripts/clear-documents.sh {{ids}}
Run Code Online (Sandbox Code Playgroud)

命令

ansible-playbook playbooks/maintenance.yml -i hosts -t clear -e ids=["foo", "bar"]
Run Code Online (Sandbox Code Playgroud)

在此过程中,脚本接收的输入为 [foo, bar] 而不是 ["foo", "bar"]

我尝试使用反斜杠转义,但这没有帮助

ansible-playbook playbooks/maintenance.yml -i hosts -t clear -e ids=[\"foo\", \"bar\"]
Run Code Online (Sandbox Code Playgroud)

在剧本中添加双引号,使输入类似于“[foo,bar]”而不是[“foo”,“bar”]

script: scripts/clear-documents.sh "{{ids}}"
Run Code Online (Sandbox Code Playgroud)

我搜索了很多但没有得到任何合适的解决方案,有没有办法处理这个问题

注意:ansible版本 - 2.2.3.0

mda*_*iel 5

您正在寻找的东西是quote,与 @JGK 的正确用法相结合,-e ids='["foo", "bar"]'因为您没有在进入ansible的过程中引用它们,然后您也没有在该任务中离开ansible 的过程中引用它们shell:

- shell: scripts/clear-documents.sh {{ ids | quote }}
Run Code Online (Sandbox Code Playgroud)