如何在json查询中将双引号键作为变量

  • 本文关键字:变量 json 查询 ansible
  • 更新时间 :
  • 英文 :


我需要把双引号键作为JSON查询中的变量。如果我把关键字串直接用反斜杠,它工作得很好,但是当我把它用作变量

时就不行了
---
- hosts: localhost
gather_facts: no
vars:
cert: |
{
"apiVersion": "v1",
"data": {
"ca.crt": "xxxx",
"tls.crt": "yyyyy",
"tls.key": "zzzzz"
}

}
cert_type: "ca.crt"
tasks:
- debug:
#msg: "{{cert|from_json|json_query('data.`{{cert_type}}`')}}"  ## Does not work 
msg: "{{cert|from_json|json_query('data."ca.crt"')}}"   ## works

不要嵌套Jinja{{...}}模板标记。当你这样写:

msg: "{{cert|from_json|json_query('data.`{{cert_type}}`')}}"  ## Does not work 

您正在寻找字面值字符串{{cert_type}}。您想要执行变量插值,它可能看起来像这样(使用Jinja的字符串连接操作符):

- debug:
msg: >-
{{cert|from_json|json_query('data."' ~ cert_type ~ '"') }}

或者这样(使用python风格的format方法):

- debug:
msg: >-
{{cert|from_json|json_query('data."{}"'.format(cert_type)) }}

给定您的示例剧本,上述两个任务的结果是:

TASK [debug] ********************************************************************************************
ok: [localhost] => {
"msg": "xxxx"
}

相关内容

  • 没有找到相关文章

最新更新