ansible.utils.to_paths – Развернуть сложное значение в словарь путей и значений
Примечание
Этот плагин входит в состав коллекции ansible.utils (версия 2.0.0).
Для его установки используйте: ansible-galaxy collection install ansible.utils.
Чтобы использовать его в книге задач, укажите: ansible.utils.to_paths.
Новое в версии 1.0.0: из ansible.utils
Описание
- Развернуть сложное значение в словарь путей и значений.
- Пути разделяются точкой, когда это возможно.
- Для индексов списков и ключей, содержащих специальные символы, используются квадратные скобки.
- to_paths также доступен как плагин фильтра.
- Используя параметры ниже-
lookup('ansible.utils.to_paths', var, prepend, wantlist)
Параметры
| Параметр | Варианты/Значения по умолчанию | Конфигурация | Комментарии |
|---|---|---|---|
| prepend строка | Добавляет префикс к каждому элементу пути. Полезно для добавления исходного имени переменной var. | ||
| var сырой / обязательный | Значение var будет использовано. | ||
| wantlist булево |
| Если установлено в True, возвращаемое значение всегда будет списком. Это также можно сделать с помощью query или q вместо lookup. https://docs.ansible.com/ansible/latest/plugins/lookup.html
|
Примеры
#### Simple examples
- ansible.builtin.set_fact:
a:
b:
c:
d:
- 0
- 1
e:
- True
- False
- ansible.builtin.set_fact:
paths: "{{ lookup('ansible.utils.to_paths', a) }}"
# TASK [ansible.builtin.set_fact] ********************************************
# ok: [nxos101] => changed=false
# ansible_facts:
# paths:
# b.c.d[0]: 0
# b.c.d[1]: 1
# b.c.e[0]: True
# b.c.e[1]: False
- name: Use prepend to add the initial variable name
ansible.builtin.set_fact:
paths: "{{ lookup('ansible.utils.to_paths', a, prepend='a') }}"
# TASK [Use prepend to add the initial variable name] **************************
# ok: [nxos101] => changed=false
# ansible_facts:
# paths:
# a.b.c.d[0]: 0
# a.b.c.d[1]: 1
# a.b.c.e[0]: True
# a.b.c.e[1]: False
#### Using a complex object
- name: Make an API call
ansible.builtin.uri:
url: "https://nxos101/restconf/data/openconfig-interfaces:interfaces"
headers:
accept: "application/yang.data+json"
url_password: password
url_username: admin
validate_certs: False
register: result
delegate_to: localhost
- name: Flatten the complex object
ansible.builtin.set_fact:
paths: "{{ lookup('ansible.utils.to_paths', result.json) }}"
# TASK [Flatten the complex object] ******************************************
# ok: [nxos101] => changed=false
# ansible_facts:
# paths:
# interfaces.interface[0].config.enabled: 'true'
# interfaces.interface[0].config.mtu: '1500'
# interfaces.interface[0].config.name: eth1/71
# interfaces.interface[0].config.type: ethernetCsmacd
# interfaces.interface[0].ethernet.config['auto-negotiate']: 'true'
# interfaces.interface[0].ethernet.state.counters['in-crc-errors']: '0'
# interfaces.interface[0].ethernet.state.counters['in-fragment-frames']: '0'
# interfaces.interface[0].ethernet.state.counters['in-jabber-frames']: '0'
# interfaces.interface[0].ethernet.state.counters['in-mac-control-frames']: '0'
# <...>
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого поиска:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| _raw строка | успех | Словарь пар ключ-значение. Ключ — это путь. Значение — это значение. |
Авторы
- Bradley Thornton (@cidrblock)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/ansible/utils/to_paths_lookup.html