Sergey
Книги у Джеффа Гирлинга уже больше не бесплатные. #geerlingguy
Vadim
Какой модуль и что не получилось?
не помню уже) говорю ж загуглил какой способ нашел тем и сделал/ модуль не пытался заюзать сейчас
Mai
ну так они здесь вроде лежат прям в чатике уже :)
Sergey
Я про то, что закреп уже смысла не имеет.
Александр
есть [ { "ipaddress": "10.1.36.32", "macaddress": "0C:C4:7A:FE:FC:FE", "name": "eth0" }, { "ipaddress": "10.1.36.33", "macaddress": "0C:C4:7A:FE:FC:FF", "name": "eth1" } ] из этого нужно получить { "eth0": { "ipaddress": "10.1.36.32", "macaddress": "0C:C4:7A:FE:FC:FE" }, "eth1": { "ipaddress": "10.1.36.33", "macaddress": "0C:C4:7A:FE:FC:FF" } } Помогите пожалуйста
Александр
ну у меня это содержится в некой переменной и это надо скормить модулю cobller_system в немного другом формате
Mai
python или php может справится, на bash прийдется постараться, внутри анзибля даже думать не хочу как это сделать 🙂
Александр
jinja filters конечно
Victor
ну у меня это содержится в некой переменной и это надо скормить модулю cobller_system в немного другом формате
Лукап темплейта в котором натемплейтить ямл и пооом его десериализовать. Нг звучит аак костыли
Victor
Или свой фильтр написать
Александр
мне бы ещё name удалить
Victor
на фильтрах прям красиво выглядит
Sergey
на фильтрах прям красиво выглядит
Вот если ещё научишься простыни скриншотов не кидать в чат - вообще молодец будешь!
Vitaliy
Кто знает, для ansible-lint имеет ли значение какая установлена версия ansible? Есть ли смысл гонять линт с версиями 2.9, 2.8, 2.7 ? Чтобы получить подтверждение совместимости с этими версиями ansible.
Victor
а, перечитал правила, сорян
Victor
чуть позже нормально оформлю
Vitaliy
Конечно имеет
cпасибо, тогда оставлю CI в таком виде
Ждун
кто нибудь сталкивался? module: mail, Amazon SES SMTPDataError: (554, "Transaction failed: Missing final '@domain'")
Ждун
с точно такими же кредами проверил на powershell - письмо доходит без проблем
Victor
Ясно. Пришлось удалить.
гист с гитхаба пойдет?
Grek 🇺🇦
Пойдет и пастебина, все что угодно лишь бы не полотна в чате
Victor
https://gist.github.com/vlitvin/a76977e03c12d007d89a88df4bd50fe7
Отделение Bereke Bank
У кого нибудь есть пример 3-й молекулы с DigitalOcean драйвером? В документации нихера 😡
Александр
да я уж фильтр на питоне написал
Александр
но так или иначе, альтернативная реализация интересна
Timur
да я уж фильтр на питоне написал
Да не нужен тут специальный фильтр
Timur
Встроенных хватит
Александр
вот только мне мозгов не хватило))
Sergey
АЛЕРТ! Простыня в чате!
Ждун
АЛЕРТ! Простыня в чате!
тоже мне простыня... но ваш ответ был очень полезным
Timur
myvar: - ipaddress: "10.1.36.32" macaddress: "0C:C4:7A:FE:FC:FE" name: "eth0" - ipaddress: "10.1.36.33" macaddress: "0C:C4:7A:FE:FC:FF" name: "eth1"
Александр
не очень подходит, т.к. кроме ip и мака, могут быть gateway и прочее
Timur
Добавляете любые свойства аналогично
Timur
Или вам в общем виде для произвольных ключей нужно?
Timur
В исходной задаче про gateway и прочее ничего не было
Александр
ну они могут быть, а могут и нет. В стандартном сценарии использования только ip и МАС, но всякое бывает, позможно придётся и статику серверам прописывать
Александр
В исходной задаче про gateway и прочее ничего не было
согласен, но основной посыл в том, что лист должен стать словарём, ключи в котором поле «name» в словарях листа
Александр
[root@cobbler ansible]# cat roles/cobbler_system/filter_plugins/dicts.py #!/usr/bin/python class FilterModule(object): def filters(self): return {'myitems2dict': self.myitems2dict} def myitems2dict(self, dict_list, key): rv = {} for i in dict_list: key_name = i[key] i.pop(key, None) rv[key_name] = i return rv
Александр
для меня приемлимое решение, хоть я и не питонописатель
Александр
ну чтобы name удалить
Александр
del ругался что ожидает число, я здался - сделал pop
Victor
А. Полность прочитал листинг. Понял
Timur
ну они могут быть, а могут и нет. В стандартном сценарии использования только ip и МАС, но всякое бывает, позможно придётся и статику серверам прописывать
- name: Set newvar set_fact: newvar: >- {{ newvar | default({}) | combine( { item.name: (item | dict2items | rejectattr('key', 'equalto', 'name') | list | items2dict ) }) }} loop: '{{ myvar }}' - name: debug newvar debug: var: newvar
Timur
Дает тот же результат на произвольном наборе ключей
Александр
👍
Timur
И не требует кастомных фильтров
Александр
возьму на вооружение
Alexey
ПРиветствую, возможно кто-то делал уже похожее. Получаю в переменную некую строку, в ней имя хоста, далее мне необходимо выполнить действие только если это имя хоста существует в инвентори. Вопрос в том как when написать?
Vitaliy
Уже наверное всё перепробовал, не могу понять как переопределить некоторые переменные на уровне converge.yml в Molecule. Использую import_playbook. Пробовал и перечислить в vars, и -include_vars, и vars_files: толку нет, не переопределяет. C помощью debug var вижу, что на этапе Converge у переменной нужное значение, TASK [var debug] *************************************************************** ok: [10.172.0.17] => { "firewall_enable_ipv6": false но после import_playbook при выполнении нужной задачи вижу, что прежнее. TASK [ansible-role-firewall : var debug] *************************************** ok: [10.172.0.17] => { "firewall_enable_ipv6": true Подскажите, если знаете как правильно.
Vitaliy
Сейчас попробую в другом месте... provisioner: name: ansible inventory: group_vars:
Vitaliy
Сейчас попробую в другом месте... provisioner: name: ansible inventory: group_vars:
помогло. Какой живой чат то) ладно, всем удачи!
Alexey
when: <that_var> in hostvars.keys() ты ж всё равно странное хочешь делать
К сожалению приходится.. Спасибо попробую. Просто есть операции которые получают имена хвостов из апи и не со всеми нужно проводить дальнейшие действия, а только с теми что есть в инвентори
Oleg Y.
извините, я провтыкал, почему ansible_play_hosts_all не подходит вместо hostvars.keys?
Alexey
dynamic inventory?
Ага. И общаюсь с апи с connection local
Alexey
извините, я провтыкал, почему ansible_play_hosts_all не подходит вместо hostvars.keys?
Плейбук на локал выполняется с динамик инвентори. Лезет в апи и получает словарь хвостов в переменную листа . Далее надо выполнить со всеми хостами из листа следующую таску также с апи но только если хост нашёлся в инвентори
Anonymous
Добрый день. Добавляю переменные из файлов с помощью include_vars и with_items ''' include_vars: file: "{{ item }}" with_items: - "file1" - "file2" если один из файлов отсутствует, таска фейлится. Можно ли как-то продолжить выполнение таски если один из файлов отсутсвует. ignore_errors просто скипает всю таску и не добавляет переменные из файла.
Антон
И почитайте разницу между инклуд и импорт - это важно
Гайрат
https://yaml-multiline.info/
Ага, тоже открыл его
Ян
здравствуйте товарищи! есть вопрос к пользователям AWX с Hashicorp Vault: как решали проблему обновления токена?
Nikolay
Есть ли способ в процессе выполнения плейбука перечитать и снова загрузить в память все переменные, которые ansible читает при запуске из group_vars и host_vars? У меня создаются динамически переменные в host_vars/<server_name>/dynamic_vars.yaml. Мне нужно иметь возможность прочитать их через hostvars['web01']['host_pub_key'] при выполнении `playbook_02.yml. - import_playbook: playbook_01.yml # update inventory in-memory - import_playbook: playbook_02.yml
Ян
или как-то изворачиваться с фактами