Отделение Bereke Bank
В смысле кастомный? Вы заранее не знаете какой будет порт?
например, его можно переопределить с помощью переменной переменную можно всунуть в converge.yml так? а дальше в testinfa как?
Anonymous
С testifra не подскажу, к сожалению. Но для аналогичной задачи через ansible verifier я инклюдил файл с переменными через vars_file
Anton
коллеги, помогите найти ответ на мой идиотский вопрос. в чем сокральный смысл ролей? просто сейчас переписываю свой плайбук в роль и не вижу какого то сильно большого профита. в гугле все показанные примеры так же не реализуют весь профит от роли
Anton
где то кто то говорил что роль как функция ЯП. но разрабы ansible говорят что ansible это не язык программировая
George
Роль имеет смысл делать если: а) хочешь скрыть очевидную, но длинную простыню б) переиспользовать код в) иметь для роли отдельные тесты. г) хочешь положить к ней дефолты, которые 99% времени не нужны.
George
Ансибл не обеспечивает изоляции от паталогического связывания, так что роль не является аналогом функции.
Anton
ну те это нормально использовать роль как некий примитив?
Anton
Коллеги, кто может подсказать как избавиться от параметра False возвращаемого в списке из json_query? Зашел в тупик пытаясь от него избавиться
Sergey
"Нужно больше подробностей, милорд!"
Anton
фильтр примерно так выглядит: - set_fact: versions: "{{ hostvars|json_query(jquery)|unique }}" vars: - jquery: "*[@.var1=='{{ var1 }}' && @.var2=='<какое-то значение>' && @.version][]" Возвращает: ok: [1.0.106.0] => { "versions": [ false, "8.0.5" ] } хочется избавиться от false
Anatoliy
Добрый день, правильно ли я понимаю, что теперь если что-то передается в vars, то это по сути константа пример include_role: name: somerole vars: varname: varvalue т.е. внутри роли я не смогу переопределить varname и это штатное поведение?
Anatoliy
где бы в документации об этом почитать. не нашел сходу
Anatoliy
спасибо
Radik
всем привет подскажите, пожалуйста, ссылкой или советом. суть такая. прогоняется роль, создаётся вм в vmware, возвращает json со всеми параметрами новой вм. хочу использовать переменную с ip этой новой вм, для дальнейшей работы с ней непрерывно от 1 роли. как я могу забирать данную информацию из json и использовать её дальше
Radik
register, потом add_host.
можно немного подробнее про add_host, пожалуйста
Radik
это уже гуглится извините
Radik
register, потом add_host.
у меня на самом деле большая проблема с инвентори я не могу придумать, как правильно содержать актуальным его использую динамеский инвентори из доки
Radik
в том плане, что я его получаю с помощью ямлика но не могу понять как использовать полученную информацию выводить если в файл, то как его потом юзать
Sergey
у меня на самом деле большая проблема с инвентори я не могу придумать, как правильно содержать актуальным его использую динамеский инвентори из доки
А в чём она заключается? Канонический подход, который работал ещё 5 лет назад, заключался в том, что в инвентори создавались пустые группы, которые скриптом динамического инвентори уже наполнялись хостами.
Radik
А в чём она заключается? Канонический подход, который работал ещё 5 лет назад, заключался в том, что в инвентори создавались пустые группы, которые скриптом динамического инвентори уже наполнялись хостами.
так. я уже писал сообщение вчера или позавчера. все ссылки на inventory.py для vmware ведут в никуда. в репе нет больше contrib. в офф доке обычный ямлик, который я и юзаю
Radik
вернее, я неправильно выразился. сейчас используется pyvomi в котором как раз и имеется тот самый inventory.py
Radik
а ямлик уже обычный ямлик с информацией для скрипта. наверно правильным будет вопрос: как заполнять то пустые группы инфой из динамического инвентори
Anatoliy
Ищи Ansible variables precedence
вот на это я наступил пару дней назад https://github.com/ansible/ansible/issues/22025 на мой взгляд не самое очевидное поведение несмотря на вроде бы соблюденный приоритет переменных по факту, передваемое в vars является константами, а не переменными. по крайней мере "локальными константами" если можно так выразиться и ИМХО, set_fact работал еще в каких-то 2.8 последних, 2.9 начальных версиях ansible несмотря на дату закрытия issue больше года назад
Dmitry
Господа бывалые, подскажите, вот такую конструкцию реально адаптировать из докеркомпоуза в плейбук или проще через entrypoint.sh сразу подключать? entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;"
Dmitry
Почему кронтаску не выполнять?
поднимать крон ни на хостовой ни в контейнере не хочется лишний раз, пример выше уже стабильно работает и обновляет больше года весь прод
hbox2
Всем доброй пятницы! подскажите такой момент: openvswitch_port умеет интерфейс в системе создавать? вот так создаётся: shell: ovs-vsctl add-port bridge port -- set Interface port type=internal
Dmitry
Что хочешь получить в итоге? Я бы просто сделал systemd-юнит.
Контейнер, который в фоне крутится и раз в 12 часов делает certbot renew, тоже самое и с nginx, только у того nginx -s reload
Dmitry
Как это относится к Ансиблу?
ансиблом я запускаю эти контейнеры
Dmitry
у docker_container модуля есть command, но туда однострочник я этот не могу адаптировать, и поэтому не уверен, вообще реально ли
Anna
Подскажите, есть ли какие-то инструменты для автоматизации заведения виртуалки на vmware esxi. Типа терраформа.. чтоб сами виртуалки перед настройками ансиблом тоже автоматом заводить, ставлю centos7 везде.
Отделение Bereke Bank
Подскажите, есть ли какие-то инструменты для автоматизации заведения виртуалки на vmware esxi. Типа терраформа.. чтоб сами виртуалки перед настройками ансиблом тоже автоматом заводить, ставлю centos7 везде.
terraform + ansible provisoner. ну если есть много повторяющихся тасок (типа одинаковая для всех первоначальная настройка) - можно предварительно собрать образ packer-ом. Правда не знаю умеет ли он в вмваре
Anna
Нет, там просто задать ip, маску, шлюз, днс, русский добавить, часовой пояс и разные данные по cpu, памяти, дискам
Anna
Roman
Он с vmware работает?
Есть провайдер,так что да
Anna
Спасибо
Roman
Нет, там просто задать ip, маску, шлюз, днс, русский добавить, часовой пояс и разные данные по cpu, памяти, дискам
Создаёшь базовую ВМ - нужный софт и всё такое. Терраформом создаёшь остальные виртуалки из неё. Тем же тф можно настроить сеть (с адресами) на ВМ и задать цпу, рам, етс.
Отделение Bereke Bank
Админы спят. Ато выгнали бы за офтоп)
Denis 災 nobody
Это мы можем..
Grek 🇺🇦
Так у ансибда есть модуль для вари, готовь темплейт и разворачивай. Можно через гостевые тулзы потом софт накатывать
Aleksandr
Привет. Коллеги, как правильно составить конструкцию проверки принадлежности хоста к одной из групп? т.е. условие надо выполнить если хост входит в одну из перечисленных групп
Aleksandr
нет. речь идет о плейбуке. Я делаю блок, который хочу выполнять по условию
Aleksandr
when: inventory_hostname in groups["aaa_servers", "bbb_servers"]
Aleksandr
так не работает)
Sergey
так не работает)
Как именно работает - см.выше. Механизм отбора хостов по группам и назначения им задач - базовый для Ансибла. Ты не хочешь странного.
Sergey
иначе ты просто пытаешься воспроизвести штатную функциональность, только как попало.
Aleksandr
как ты показал - это не то. Я хочу прогонять плейбук по группе хостов, но только несколько задач делать для конкретных хостов
Aleksandr
для одного хоста все просто - when: inventory_hostname in ololo_group
Alexander
when: target_group in group_names
Alexander
Но @tnt4brain прав. В общем случае следует делать все более явно через отдельные плеи
Aleksandr
нифига он не прав
Aleksandr
мне что плей на 100500 тасков разбивать на 3 штуки?
Aleksandr
ради 1 таска который я хочу прогонять по конкретному хосту
Alexander
нифига он не прав
Ваше мнение. Я написал выше как решить ваш вопрос без этого
Aleksandr
то что Вы написали это немного не то условие которое мне нужно. Ваше условие это когда имя группы одно. а у меня их несколько.
Alexander
Это как раз то, что вы просили. Будет выполняться только в случае если хост будет в этой группе. Что не так?
Aleksandr
т.е. [aaa_hosts] aa1 aa2 aa3 [bbb_hosts] bb1 bb2 bb3 [ccc_hosts] cc1 cc2 cc3 when: inventory_hostname in groups["aaa_hosts", "bbb_hosts"] вот что я хочу
Alexander
Вы немного не понимаете механику работы ансибла и фактов. Используйте то, что я написал + фильтры для листов
Alexander
Или делайте двойное условие на примере как я писал выше
Aleksandr
все я понимаю. Ваше условие: when: target_group in group_names group_names - массив который содержит список групп в которых находится хост. target_group - это одна конкретная группа. Как мне в вашем условии задать проверку принадлежности хоста либо группе aaa_hosts либо bbb_hosts?
Aleksandr
Вот так вот - работает: when: (inventory_hostname in groups['aaa_servers']) or (inventory_hostname in groups['bbb_servers']) но это не красиво кмк.
Aleksandr
тормозит от чего? от одного when? что за бред ты несешь?
Gleb
лол, причем тут when
Aleksandr
а из-за чего конкретно ты про меня наговариваешь?