Gubaydullin
Добрый день как правильно вызывать фильтр crc32 https://github.com/ansible/ansible/pull/17178/files/1f0c06e88b21cb9c20c56f07b287fbe958a9e029 | crc32 или | crc32('crc32') спасибо
Max
Подскажите как ансиблом легче всего в существующий kubeconfig (yaml файл) добавить credentials от нового кластера, если их там нет?
UglyKoyote
а разве кубцтл не умеет добавлять креды? я к тому - что бы дернуть шеллом, хотя выглядит как костыль
UglyKoyote
просто я ансиблом с кубом не работал, чисто ансиблом ставлю кубер. поэтому не знаю про модуль детали
Full
Народ, есть вопрос про инвентори. Например, инвентори может быть не файлом, а директорией. И там могут быть директории group_vars, в которых переменные группы узлов web (к примеру), будут лежать в директории web, и это все будет работать. Т.е. получится какая-то вот такая структура: inventory ├── global.yml ├── group_vars │ └── web │ ├── 00.yml │ └── main.yml └── host_vars ├── web_01 │ └── main.yml └── web_02 └── main.yml При этом, то, что описано в inventory/host_vars/web_02/main.yml равнозначно тому, если бы это было описано в едином файле инвентори в: ... hosts: web_02: Собственно, вопрос - насколько глубока кроличья нора? Могу ли я приведенном выше примере создать директорию vars, и разместить там различные файлы с переменными. Или я могу пойти дальше, и сделать vars/my_app, и разместить что-то там?
Vladislav 👻
Вроде можно, но слишком много папок сложно, обычно там хватает файлов по имени сервиса/роли
Anonymous
Ну вам наверное проще делать через зависимость. Как вы хотите немного изврат
Full
Про зависимость - можно чуть подробнее?
Full
Ээээ, а почему нет?
Aleksey
а. да я с defaults перепутал
Vladislav 👻
Там все будет читаться в порядке сортировки
Aleksey
да да. я протупил. я почему то думал что в group_vars должны быть файлы а не директории
Алексей
Коллеги, с праздником! Посоветуте как лучше реализовать следующую задачу: есть несколько сетевых устройств, на них необходимо выполнить простую задачу(ну например узнать хостнейм), НО некоторые устройства могут быть недоступны И об этом факте необходимо сообщить администратору на почту. Я сейчас сделал следующее: первым таском собираю факты с устройств при этом игнорируя ошибки( ignore_errors: True) вторым таском помещаю в block вывод фактов с доступных узлов в файл, а в rescue сделал вывод в другой файл переменной inventory_hostname. Но при этом все работает с опцией serial: 1 иначе в файле куда пишутся недоступные устройства происходит непонятная магия.
Volodymyr
jinja2 корявит XML с for, куда мне смотреть?
Aleksey
[IPT] Dmitry
я тут хочу словарь со списком списков словарей. это нормально или наркомания?
Volodymyr
в зарплатную ведомость
как как? whitespace control?
Aleksey
как как? whitespace control?
да. если сумма в ведомости вас устраивает то джинджа будет вести ся норм.
[IPT] Dmitry
ребят, я хочу структурировать данные в yaml и работать с ними. и в итоге рендерить из них что-то типа: tag1: - rule1: key1: value1 key2: value2 - rule2: key1: value1 key2: value2 tag2: - rule1: key1: value1 key2: value2 - rule2: key1: value1 key2: value2 мне хотелось бы из этого собирать файл типа tag1 rule1 + key1 + key2 rule2 + key1 + key2 tag2 rule1 + key1 + key2 rule2 + key1 + key2
[IPT] Dmitry
И что мешает сделать темплейт?
ну у меня в первую очередь проблема с представлением структуры данных
Full
Народ, есть вопрос про инвентори. Например, инвентори может быть не файлом, а директорией. И там могут быть директории group_vars, в которых переменные группы узлов web (к примеру), будут лежать в директории web, и это все будет работать. Т.е. получится какая-то вот такая структура: inventory ├── global.yml ├── group_vars │ └── web │ ├── 00.yml │ └── main.yml └── host_vars ├── web_01 │ └── main.yml └── web_02 └── main.yml При этом, то, что описано в inventory/host_vars/web_02/main.yml равнозначно тому, если бы это было описано в едином файле инвентори в: ... hosts: web_02: Собственно, вопрос - насколько глубока кроличья нора? Могу ли я приведенном выше примере создать директорию vars, и разместить там различные файлы с переменными. Или я могу пойти дальше, и сделать vars/my_app, и разместить что-то там?
В развитие темы. Сделал вот так: inventory ├── global.yml ├── group_vars │ └── web │ ├── 00.yml │ └── main.yml ├── host_vars │ ├── web_01 │ │ └── main.yml │ └── web_02 │ └── main.yml └── vars └── myapp └── myapp_00.yml В принципе, оно читает все файлы, но есть нюанс. В файле myapp_00.yml приходится описывать структуру от корня. Ну, в смысле, как-то так: --- all: vars: myapp: myapp_00: somevar: somevalue С одной стороны, вроде уже легче, а с другой - структура все равно не очень. А вот как бы получить поведение, аналогичное поведению host_vars? Т.е. хочется в файле myapp_00.yml написать просто: --- somevar: somevalue И обращаться потом как к myapp.myapp_00.somevar.
Full
А иначе не принимает.
Vladislav 👻
Почему нельзя просто key: value
Vladislav 👻
Full
Момент...
Full
У меня вот так: [WARNING]: Skipping 'somevar' as this is not a valid group definition
Vladislav 👻
А запускаете с какими ключами и параметрами?
Full
ansible all -m debug -a "var=somevar" -i inventory -k
Vladislav 👻
Я забыл, что за ключ "-a"?
Grek 🇺🇦
-e вроде задает extra_vars
Full
Я забыл, что за ключ "-a"?
Параметры модуля, аргументы.
Vladislav 👻
Тогда фигня, на это и ругается
Full
Не. Если прописать полностью, начиная от all - не ругается.
Full
Например. $ cat inventory/vars/myapp/myapp_00.yml --- somevar: somevalue $ ansible-inventory -i inventory --graph --vars [WARNING]: Skipping 'somevar' as this is not a valid group definition @all: |--@ungrouped: |--@web: | |--web_01 | | |--{web_01_host_var = value} | | |--{web_group_var = value} | |--web_02 | | |--{web_02_host_var = value} | | |--{web_group_var = value} | |--{web_group_var = value}
Full
И с полным путем: $ cat inventory/vars/myapp/myapp_00.yml --- all: vars: somevar: somevalue $ ansible-inventory -i inventory --graph --vars @all: |--@ungrouped: |--@web: | |--web_01 | | |--{somevar = somevalue} | | |--{web_01_host_var = value} | | |--{web_group_var = value} | |--web_02 | | |--{somevar = somevalue} | | |--{web_02_host_var = value} | | |--{web_group_var = value} | |--{web_group_var = value} |--{somevar = somevalue}
Sergey
Хочешь развесистых конструкций - пиши плагины. Хочешь простоты - сложи в host_vars/<hostname>.yml
Full
Я не хочу ямл на 1к строк, только и всего.
Sergey
Я не хочу ямл на 1к строк, только и всего.
Переменные одного хоста - 1К строк? Ты что-то делаешь не так.
Full
Вероятно.
Anonymous
Я кстати ради пятница и праздника спрошу - а что условно в том 1к перемётных
Anonymous
Вам точно не нужен service discovery ?
Anonymous
Пока выглядит как дичь. Я кстати схожую тему хотел месяц назад делать. Потому мнение авторитетное по творению дичи ))
Anonymous
А чем днс не угодил ?
Full
Вам точно не нужен service discovery ?
Точно. Там все относительно статично.
Anonymous
Точно. Там все относительно статично.
Я конечно рад что навёл на мысль. Но все же посему не днс ?
Anonymous
Типа безумно же изи
Anonymous
Даже (не смотрел никогда есть ли модули) регуляркой
Anonymous
Зачем srv записи хранить в ансибл. А не днс ?
Full
Чтоб ансибл мог сетапить bind.
Anonymous
И кстати в таком кейсе. Консул я предполагаю решит почти все ваши хотелки
Anonymous
Чтоб ансибл мог сетапить bind.
Это не верно бай дизайн.
Anonymous
Провиженг да.
Anonymous
Но остальное проще отдать под гит и ci/cd с проверкой. Прям маст хев
Anonymous
Сразу ненадо изобретать велосипед
Full
Файлы зон вручную писать? В смысле, это то не проблема, надоело просто.
Anonymous
Чем правка записи в ансибл отличается от правки в гит ? Ну можно сделать постой интерфейс что через регулярку добавит. Но это все про манки Джоб. Если у вас сами сервисы условно появляются и вот это все. То тогда консул
Anonymous
Просто странно делать из ансибл днс сервер.
Anonymous
Ну типа на 1 раз норм. Провиженг. А след разы крайне странно
Full
У меня нет сервисов/куберов и вот этого всего. :) Я бы рассказал, откуда такая норкомания, сейчас не с руки просто, я убжал уже от компа до понедельника (надеюсь). Если не забуду - расскажу потом.
Anonymous
Да я понимаю. Посто подумайте над мыслью что зона в гит. А ансибл не более чем провиженг. Просто помните - когда в руках молоток (ансибл), вокруг все кажется гвоздями
Anonymous
У вас реальный самый странный кейс что я тут мимо пройдя читал за год
Alexandr
У кого нибудь есть пример как с помощью python api запустить playbook?
Sergey
https://github.com/ansible/ansible/blob/v2.9.11/lib/ansible/cli/playbook.py
Я и твой кот
Я и твой кот
Я и твой кот
Стиль узнаваем.
Alexandr
https://github.com/ansible/ansible/blob/v2.9.11/lib/ansible/cli/playbook.py
Спасибо) с этим разобрался , только вот не пойму как передать cli вида verbose и тд . Пробовал так context.CLIARGS = ImmutableDict(verbose='vvvv') но не взлетело(
Александр
Всем привет. подскажите почему в первой роли( которая app_name: portainer) переменная recovery_db: true ? Там ведь нет этой перменой https://paste.ofcode.org/63nkUiNRMgwHSuvVXiZxhK