在 ansible 任务中使用正则表达式从 json 中抓取值
Using regex in scraping value from json in ansible task
我在 ansible 中有一个任务,我必须从 json 对象中提取令牌的值,如下所示:
{
"token.stdout_lines": [
"{",
"\t\"id\": \"08320829d85c7000\",",
"\t\"description\": \"\",",
"\t\"token\": \"zMiyCw7X6u_IjBpTbD1Nvt4eGk-dxBXWWOqRCgWh_KiYtp7AjD5mML5mBIEtApncBSXwU3QqexT_4VVmEv0WeA==\",",
"\t\"status\": \"active\",",
"\t\"userName\": \"telegraf\",",
"\t\"userID\": \"0831cb0c68dc7000\",",
"\t\"permissions\": [",
"\t\t\"read:orgs/ea37b04111f50748/buckets\",",
"\t\t\"write:orgs/ea37b04111f50748/buckets\"",
"\t]",
"}"
]
}
为了检索令牌的值,我遵循了以下步骤:
- set_fact:
myvalue: "{{ token.stdout_lines | regex_search('regexp')}}"
vars:
regexp: 'token([^"]+)":([^"]+)"([^.{\}$"]+)'
- debug:
var: myvalue
我得到的输出是 myvalue 中的空值。
谁能指出我哪里出错了?
非常感谢
不太确定在这种情况下正则表达式是否是最佳答案。
为什么不做一些像
- set_fact:
myvalue: "{{ token.stdout_lines | from_json }}"
- debug:
var: myvalue.token
更多信息见Ansible's website。
我会尝试删除不需要的组。正则表达式:token[^"]+":[^"]+"([^.{\}$"]+)
我在 ansible 中有一个任务,我必须从 json 对象中提取令牌的值,如下所示:
{
"token.stdout_lines": [
"{",
"\t\"id\": \"08320829d85c7000\",",
"\t\"description\": \"\",",
"\t\"token\": \"zMiyCw7X6u_IjBpTbD1Nvt4eGk-dxBXWWOqRCgWh_KiYtp7AjD5mML5mBIEtApncBSXwU3QqexT_4VVmEv0WeA==\",",
"\t\"status\": \"active\",",
"\t\"userName\": \"telegraf\",",
"\t\"userID\": \"0831cb0c68dc7000\",",
"\t\"permissions\": [",
"\t\t\"read:orgs/ea37b04111f50748/buckets\",",
"\t\t\"write:orgs/ea37b04111f50748/buckets\"",
"\t]",
"}"
]
}
为了检索令牌的值,我遵循了以下步骤:
- set_fact:
myvalue: "{{ token.stdout_lines | regex_search('regexp')}}"
vars:
regexp: 'token([^"]+)":([^"]+)"([^.{\}$"]+)'
- debug:
var: myvalue
我得到的输出是 myvalue 中的空值。
谁能指出我哪里出错了?
非常感谢
不太确定在这种情况下正则表达式是否是最佳答案。
为什么不做一些像
- set_fact:
myvalue: "{{ token.stdout_lines | from_json }}"
- debug:
var: myvalue.token
更多信息见Ansible's website。
我会尝试删除不需要的组。正则表达式:token[^"]+":[^"]+"([^.{\}$"]+)