Я хочу получить значение ключа (который будет каждый раз иметь другое имя ключа) из вывода стороннего модуля.
Простая репликация того, чего я пытаюсь достичь, заключается в следующем: следующим образом: у меня есть переменная -
secure_name: "ALIAS_HTTPD_HOSTNAME1'
Затем я запускаю задачу:
- name: retrieve param name
shell:
cmd: "echo {{ secure_name }} | cut -'_' -f2-"
register secure_param_name
У меня есть третий модуль, который принимает выше {{secure_param_name.stdout | upper }} в качестве параметра для извлечения пары имя-значение из стороннего программного обеспечения для хранения пар ключей безопасности.
Вывод стороннего модуля сохраняется в регистре var, который называется: secure_results
Вывод вызова стороннего модуля:
{
"changed": false,
"_ansible_no_log: false,
"HTTPD_HOSTNAME1": "SERVERNAME1"
}
если я выдаю:
-debug: msg="{{ secure_results.HTTPD_HOSTNAME1 }}"
я получаю требуемый вывод SERVERNAME1
Однако я не хочу жестко кодировать каждый параметр, который я sh получу. Я sh смогу использовать значение secure_param_name.stdout для создания имени переменной
Я пытался:
-debug: msg="{{'secure_results.'+secure_param_name.stdout }}
, но это только возвращает: secure_results.HTTPD_HOSTNAME1
Как мне разрешить вышеуказанное имя переменной Dynami c? использование 2 наборов {{{{}}}} не работает.
Я также пробовал:
- debug: msg="{{ vars['secure_results.' ~ secure_param_name.stdout] }}"
эта ошибка с 'объектом dict' не имеет значения u'secure_results .HTTPD_HOSTNAME1 '
Меня немного смущает, почему не удается найти объект словаря' secure_results.HTTPD_HOSTNAME1 'при размещении этой же строки в {{}} получает значение, как показано в первой отладке выше.
Любая помощь высоко ценится