我有一个 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
您正在寻找的东西是quote,与 @JGK 的正确用法相结合,-e ids='["foo", "bar"]'因为您没有在进入ansible的过程中引用它们,然后您也没有在该任务中离开ansible 的过程中引用它们shell:
- shell: scripts/clear-documents.sh {{ ids | quote }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38271 次 |
| 最近记录: |