#ansible #ansible-2.x #ansible-facts #ansible-template
Вопрос:
Команда, у меня есть задача, в которой я пытаюсь ссылаться на значение из словаря, определенного в моем файле значений. но попадание ниже ошибки, какой-нибудь намек? я выполняю это упражнение, чтобы использовать эту ссылку в моих других задачах позже, но первый шаг отладки сам по себе не удался.
Я сослался на эту ссылку [ссылка на ansible dict][1]
ценности.yaml
loop_device: "loop"
available_device_default_config:
- device: any
partitions:
- number: 1
start: 0%
end: 100%
storage_class: services
задача
- name: lookup dictionary vars
debug:
var: available_device_default_config.device
ошибка вывода задачи
34 TASK [local_volume_mount : lookup dictionary vars] *****************************
Wednesday 28 April 2021 21:51:34 0000 (0:00:04.915) 0:00:05.052 *******
ok: [node1] => {
"available_device_default_config.device": "VARIABLE IS NOT DEFINED!"
}
ожидаемый результат:
ok: [node1] => {
"any"
}
Я попробовал ниже, но безуспешно
var: "{{ available_device_default_config.device }}"
var: "{{ available_device_default_config['device'] }}"
Комментарии:
1. Я добавил ожидаемый результат, который мне удалось получить, используя статические значения, непосредственно включенные в задачу.
Ответ №1:
Переменная available_device_default_config
определяется как список диктовок. Таким образом, вы не можете получить прямой доступ к свойству device
, потому что оно является свойством первого элемента в available_device_default_config
. Вам нужно разобраться в этом с помощью available_device_default_config[0]
- name: "set facts"
set_fact:
available_device_default_config:
- device: any
partitions:
- number: 1
start: 0%
end: 100%
storage_class: services
- name: "lookup dictionary vars"
debug:
msg: "{{ available_device_default_config }}"
- name: "lookup dictionary vars"
debug:
msg: "{{ available_device_default_config[0].device }}"
Результатом было бы
TASK [set facts] ****************************************************************
ok: [localhost]
TASK [lookup dictionary vars] ***************************************************
ok: [localhost] =>
msg:
- device: any
partitions:
- end: 100%
number: 1
start: 0%
storage_class: services
TASK [lookup dictionary vars] ***************************************************
ok: [localhost] =>
msg: any
Комментарии:
1. не могли бы вы также намекнуть, как можно просто выполнить поиск по имени вместо индекса 0? например, для значения устройства, что такое значение подраздела?