Админим с Буквой
5.52K subscribers
303 photos
8 videos
59 files
1.16K links
Канал о системном администрировании, DevOps и немного Инфобеза.

По всем вопросам обращаться к @bykva. Рекламу не размещаю.
Download Telegram
извлекаем значение из переменной в ansible

случай довольно "тяжелый", тут бы в пору в дурку звонить, но понадобилось мне извлечь в переменную несколько значений из словаря, который в массиве, который в словаре, который в массиве. и сделать это всё по конкретным именам ключей, а вывод воплотить в конкретно оформленную строку. в общем наслаждайтесь.

Дано(для простоты оставлены только нужные для селекта ключи):

user_list:
- name: core
ssh_keys:
- name: main
type: "ecdsa-sha2-nistp256"
value: "AAAA..."

Нужно получить:

pubkey: "ecdsa-sha2-nistp256 AAAA....."

Как это в итоге получилось, для переменной в hostvars:

pubkey: "{% set core_main_ssh_params =
user_list |
selectattr('name', 'equalto', 'core') |
sum(attribute='ssh_keys', start=[]) |
selectattr('name', 'equalto', 'main') |
list | first -%}
{{ core_main_ssh_params.type }} {{ core_main_ssh_params.value }}"

#ansible #jinja #дичь