Прежде всего, я знаю, что это своего рода дублирующий вопрос: я нашел похожие темы здесь: Поиск ключа в списке диктов в Ansible , Поиск значений Ansible из сложной структуры?
Я не знаю, должен ли я задавать свой вопрос непосредственно в этих темах или нет, если да, я искренне извиняюсь.
В любом случае, в Ansible мне нужно извлечьконкретный идентификатор в запросе API из веб-приложения.У меня есть этот код:
- name: API query
uri:
method: GET
url: "{{ apiquery }}"
headers:
Content-Type: application/json
App-Token: "{{ appToken }}"
Session-Token: "{{ currentSessionToken.json.session_token }}"
register: wantedState
- name: DEBUG | wantedState output
debug:
msg: "{{ wantedState }}"
Сообщение следующее:
ok: [localhost] => {
"msg": {
"accept_range": "State 1000",
"access_control_expose_headers": "content-type, content-range, accept-range",
"cache_control": "no-store, no-cache, must-revalidate",
"changed": false,
"connection": "close",
"content_length": "138",
"content_range": "0-1/2",
"content_type": "application/json; charset=UTF-8",
"cookies": {},
"cookies_string": "",
"date": "Thu, 24 Jan 2019 11:51:42 GMT",
"expires": "Mon, 26 Jul 1997 05:00:00 GMT",
"failed": false,
"json": {
"content-range": "0-1/2",
"count": 2,
"data": [
{
"1": "state1",
"2": 12
},
{
"1": "state11",
"2": 10
}
],
"order": "ASC",
"sort": 1,
"totalcount": 2
},
"msg": "OK (138 bytes)",
"pragma": "no-cache",
"redirected": false,
"server": "Apache/2.4.18 (Ubuntu)",
"status": 200,
"url": "..."
}
}
Мне нужно получить правильный идентификатор, связанный с переменной stateName.
Iследовал советам, данным в двух других темах, и мой синтаксис такой:
- name: DEBUG | Displaying ID
debug:
msg: "{{ (wantedState.json.data | selectattr('1', 'equalto', stateName) | list | first).2 }}"
Я получил следующее сообщение об ошибке:
"msg": "The task includes an option with an undefined variable. The error was: dict object has no element 1"
Я не знаю, почему мой запросне работает должным образом, чтобы быть честным ...
Заранее спасибо,
Симон