Отделение Bereke Bank
inqfen
Ну он же ансиблом его будет ставить!
Или на соседней машине ансибл будет запущен
UglyKoyote
а какие там уроки? что ты от вагранта хочешь?
Anonymous
Ещё бы знать как вагрант к ансиблу относится
все просто - по вагранту нет канала (чата)
inqfen
Зато есть канал по хашикорпу. И даже если бы и его не было - есть тот же девопс
Anonymous
а какие там уроки? что ты от вагранта хочешь?
понять как создавать и конфигурировать рабочие окружения (создавать-убивать виртуальные машины конфигурировать их, ставить на них автоматом софт, ) для разработки и продакшна, чтобы потом сделать из этого всего какой нибудь ci и желательно на каком нибудь готовом проекте-примере и чем подход создавать виртуальные машины лучше чем вместо них использовать контейнеры
es]x
помогите разобраться какую бы я цифру не выбирал в vars_promt результат всегда 3 - name: PROD set_fact: network=1 when: ( net == "1" ) - name: DMZ set_fact: network=2 when: ( net == "2" ) - name: CHECK set_fact: network=3 when: ( net != "1" or net != "2")
Vladimir
Коллеги, а "склеивать" словари как-то можно? Допустим словарь с одним и тем же названием определяется в плейбуке, в роли и в group_vars. Ключи и значения разные. Можно ли все эти ключи и значения собрать в одну портянку и подсунуть таску? В плейбуке: dictionary name: key1: item1: ololo item2: pyshpysh В Роли: dictionary name: key2: item1: abra item2: kadabra В group_vars: dictionary name: key3: item1: syaski item2: masyaski
es]x
или это в сторону jinja?
Lamobot
а есть на англ и новее?
https://www.vagrantup.com/docs
Anastasia
а где почитать не подскажите?
покажите, как вы подставляете значения в переменную?
Lamobot
или это в сторону jinja?
Лучше спросить, а что вы хотите в результате? Боюсь что вы делаете что-то не то.
inqfen
а где почитать не подскажите?
Это в сторону типизации в ямле
es]x
покажите, как вы подставляете значения в переменную?
vars_prompt: - name: "net" prompt: "Choice networks...\n1- 1\n2- 2\n" private: False
es]x
when: net|int == 1
спасибо за наводку буду разбираться
Vladimir
Фильтр combine
Пошел читать, спасибо.
inqfen
Исходя из приоритета переменных
inqfen
Как бы логично, что не может существовать несколько переменных с одинаковым названием в одном скоупе
Vladimir
Если название одно и то же - значение перепишется
А обнаруживать словари по "маске" можно?
Vladimir
Сек
Vladimir
В плейбуке: dictionary_name_ololo: key1: item1: ololo item2: pyshpysh В роли: dictionary_name_abra: key2: item1: abra item2: kadabra В group_vars: dictionary_name_syaski: key3: item1: syaski item2: masyaski tasks: - name: Add что-то там lineinfile: path: куда-то там with_dict: "dictionary_name_*"
Vladimir
Это как
Если очень образно, то так
Vladimir
Т.е. определять словари по regex'пу
Vladislav 👻
dict=dict1+dict2+dict3
inqfen
Да, можно из определенных словарей составить новый и по нему итерироваться
Vladimir
inqfen
why not?
Потому что делать что-то с непредсказуемым числом элементов - дичь. Еще и с учетом того, что внутри могут быть неверные типы, неверное количество ключей и так далее. Да и вообще без модулей хаков не получится
inqfen
Это уже даже не программирование
inqfen
А метапрограммирование, когда программа изменяет саму себя
inqfen
А ансибл - не язык программирования
Vladimir
Есть разумное зерно в твоих словах
Vladimir
Ок. Спасибо
k
В плейбуке: dictionary_name_ololo: key1: item1: ololo item2: pyshpysh В роли: dictionary_name_abra: key2: item1: abra item2: kadabra В group_vars: dictionary_name_syaski: key3: item1: syaski item2: masyaski tasks: - name: Add что-то там lineinfile: path: куда-то там with_dict: "dictionary_name_*"
Лучше сделайте тогда прямо 3 словаря в роли dict_defaults dict_group dict_host И далее все три скормите в одном with_items Но мне и такое решение не нравится т.к. хост может входить в 2 группы и тогда непонятно чо-где оверрайдить
inqfen
А в этом случае они делятся обратно
inqfen
То есть если мы делаем some_dict в defaults в роли - это норм, потом мы его можем из инвентори изменить
inqfen
А вот когда у нас в инвентори будет role_dict - это уже странно
inqfen
можем изменить из многих мест
Да, но исходя из приоритета
Vladimir
можем изменить из многих мест
В том то и дело, надо не изменить, а дополнить
Андрей
Да, но исходя из приоритета
именно, исходя из приоритета. Причем с наивысшим приоритетом перезапишет другие значения
k
Это тоже антипрактика по простой причине - вот эти "уровни" объявления переменных и нужны для приоритета
Как по-вашему правильно решать проблему нежелания переписывать с нуля весь большой словарь?
k
В том то и дело, надо не изменить, а дополнить
Ну тогда только так https://docs.ansible.com/ansible/latest/reference_appendices/config.html#envvar-ANSIBLE_HASH_BEHAVIOUR
inqfen
Тогда можно взять some_dict и сделать some_dict = {{ some_dict | combine(extra_dict) }}
k
(и это тоже плохо т.к. дебажить потом "откуда этот элемент приехал" - то ещё удовольствие)
Sergey
Как по-вашему правильно решать проблему нежелания переписывать с нуля весь большой словарь?
Не страдать развесистой клюквой: иначе говоря, не фигачить все настройки в один словарь.
Sergey
Об этом ещё Гоголь писал ".. вот если нос Y приставить к лицу Z..."
Sergey
А проблемы со структурой переменных происходит из-за незнания объектной модели ansible
Sergey
В конце концов, если уж так хочется настройки склеивать, то вообще-то для этого используется списки которые просто вот в наглую плюсом объединяются.
Vladislav 👻
В том то и дело, надо не изменить, а дополнить
В роли делаете три словаря: dict_default, dict_xz и dict_current. dict_current = dict_default+dict_xz. В самой роли используется current. В инвентори определяете dict_xz.
Vladislav 👻
Вроде как-то так
Vladimir
Спасибо!
Sergey
Я тебе в личку написал :) Если есть пару минут - глянь пжлст.
Так я же хитрый, в л.с. я только за деньги консультирую. А если бесплатно - то это вот в чате, это для всех. Да и случай-то у тебя реально простой: делается роль с параметрами. На вход получает список, который прямо в параметрах роли можно сложить из трех значений-списков, или из двух. Ну как минимум это те самые параметры от разработчиков и параметры от администраторов. Что-то ещё - не знаю, как решишь.
Vladimir
А, типа не словари использовать?
Vladimir
Понял
Vladislav 👻
Словари так не складываются.
А блин, да, это списки
Vladislav 👻
Но суть не меняется, в целом...
Balagur
Подскажите, плиз, как из nodename отставить только domain? Split, а как получить всё остальное после первой точки?
Balagur
А если машина называется node.1.example.com?
Надо получить 1.example.com ansible_domain берет из ansible_fqdn? Если переопределять его получится? :)