Anonymous
С testifra не подскажу, к сожалению.
Но для аналогичной задачи через ansible verifier я инклюдил файл с переменными через vars_file
Anton
коллеги, помогите найти ответ на мой идиотский вопрос. в чем сокральный смысл ролей? просто сейчас переписываю свой плайбук в роль и не вижу какого то сильно большого профита. в гугле все показанные примеры так же не реализуют весь профит от роли
Sergey
Anton
где то кто то говорил что роль как функция ЯП. но разрабы ansible говорят что ansible это не язык программировая
George
Роль имеет смысл делать если: а) хочешь скрыть очевидную, но длинную простыню б) переиспользовать код в) иметь для роли отдельные тесты. г) хочешь положить к ней дефолты, которые 99% времени не нужны.
George
Ансибл не обеспечивает изоляции от паталогического связывания, так что роль не является аналогом функции.
Anton
ну те это нормально использовать роль как некий примитив?
Sergey
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
Sergey
Anton
Anatoliy
Добрый день, правильно ли я понимаю, что теперь если что-то передается в vars, то это по сути константа
пример
include_role:
name: somerole
vars:
varname: varvalue
т.е. внутри роли я не смогу переопределить varname и это штатное поведение?
Anatoliy
где бы в документации об этом почитать. не нашел сходу
Sergey
Anatoliy
спасибо
Radik
всем привет
подскажите, пожалуйста, ссылкой или советом.
суть такая. прогоняется роль, создаётся вм в vmware, возвращает json со всеми параметрами новой вм.
хочу использовать переменную с ip этой новой вм, для дальнейшей работы с ней непрерывно от 1 роли.
как я могу забирать данную информацию из json и использовать её дальше
Sergey
Radik
это уже гуглится
извините
Radik
Radik
register, потом add_host.
у меня на самом деле большая проблема с инвентори
я не могу придумать, как правильно содержать актуальным его
использую динамеский инвентори из доки
Radik
в том плане, что я его получаю с помощью ямлика
но не могу понять
как использовать полученную информацию
выводить если в файл, то как его потом юзать
Radik
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
Sergey
Sergey
Dmitry
у docker_container модуля есть command, но туда однострочник я этот не могу адаптировать, и поэтому не уверен, вообще реально ли
Lamobot
Dmitry
Anna
Подскажите, есть ли какие-то инструменты для автоматизации заведения виртуалки на vmware esxi. Типа терраформа.. чтоб сами виртуалки перед настройками ансиблом тоже автоматом заводить, ставлю centos7 везде.
Roman
Sebor▂▅▇█▓▒░
Anna
Нет, там просто задать ip, маску, шлюз, днс, русский добавить, часовой пояс и разные данные по cpu, памяти, дискам
Anna
Anna
Спасибо
Roman
Нет, там просто задать ip, маску, шлюз, днс, русский добавить, часовой пояс и разные данные по cpu, памяти, дискам
Создаёшь базовую ВМ - нужный софт и всё такое. Терраформом создаёшь остальные виртуалки из неё. Тем же тф можно настроить сеть (с адресами) на ВМ и задать цпу, рам, етс.
Отделение Bereke Bank
Админы спят. Ато выгнали бы за офтоп)
Denis 災 nobody
Это мы можем..
Grek 🇺🇦
Так у ансибда есть модуль для вари, готовь темплейт и разворачивай. Можно через гостевые тулзы потом софт накатывать
Aleksandr
Привет. Коллеги, как правильно составить конструкцию проверки принадлежности хоста к одной из групп? т.е. условие надо выполнить если хост входит в одну из перечисленных групп
Sergey
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'])
но это не красиво кмк.
Gleb
Aleksandr
тормозит от чего? от одного when? что за бред ты несешь?
Gleb
лол, причем тут when
Aleksandr
а из-за чего конкретно ты про меня наговариваешь?