#regex #ansible #influxdb-2
Вопрос:
У меня есть задача в 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": [",
"tt"read:orgs/ea37b04111f50748/buckets",",
"tt"write:orgs/ea37b04111f50748/buckets"",
"t]",
"}"
]
}
Чтобы получить значение токена, я выполнил следующие действия:
- set_fact:
myvalue: "{{ token.stdout_lines | regex_search('regexp')}}"
vars:
regexp: 'token([^"] )":([^"] )"([^.{\}$"] )'
- debug:
var: myvalue
Вывод, который я получаю, — это нулевое значение в моем значении.
Может ли кто-нибудь указать, где я совершаю ошибку?
Большое спасибо
Ответ №1:
Не совсем уверен, что регулярное выражение является лучшим ответом в этом случае.
Почему бы не сделать что-нибудь вроде
- set_fact:
myvalue: "{{ token.stdout_lines | from_json }}"
- debug:
var: myvalue.token
Смотрите больше на веб-сайте Ansible.
Ответ №2:
Я бы попытался удалить ненужные группы. Регулярное выражение: token[^"] ":[^"] "([^.{\}$"] )