Sergei
да это понятно, уже поменял
Timur
И как теперь?
Sergei
с нативным все ок
Sergei
ну это как бы ниочень решение
Sergei
ну да ладно, спасибо
Timur
ну это как бы ниочень решение
Можно погуглить ещё варианты
Timur
Но этот по-моему наиболее рабочий
Sergei
другие варианты поди про костыли )) Пущай так будет
Sergei
а эт самое, митоген в проде юзабелен?
Gleb
зависит от прода
Mista
Хм, понял, покопаю ещё завтра Спасибо за ресёрч)
кстати к вопросу выбора инструмента, а не холивара ради
Mista
я бы прошелся пошем по длинкам для активации ssh
Mista
поскольку модуль telnet, как я понял из чтения доков, идет очень вразрез с идеологией анса
Mista
плюс дебаг осложняется тем что идет проламывание до конечной реализации клиента + особенности сервера и возможности дебага довольно ограничены + требуют знания питона (подсказки искал в сырцах как раз)
Mista
тратить время когда есть альтернатива как-то неоч, после активации ососаш никто не мешает вернуться к ансу
Sergei
Более чем
А бастион тамошний юзаешь? mitogen_via который
citius
А бастион тамошний юзаешь? mitogen_via который
Неа. У меня все в локалке как правило.
Aleksey
when писать после name!
Womchik
Лучше вместо
Oleksandr
я бы прошелся пошем по длинкам для активации ssh
Так оно и планировалось изначально) Но хотелось иметь некий "не очень костыльный" инструмент провижинга новых девайсов. Ещё раз убедился что телнет это не про отсутствие костылей, потому вот 😂
Mista
Пош это не костыль
Oleksandr
Добрый день, Как можно относительно гибко ( и можно ли) написать 1 Playbook, чтобы настраивать UFW фаерволл на разных типах хостов (DB, Web, etc). https://pastebin.com/AHeXgqk2 Написал Playbook сначала (вариант №1), понял что "получается много текста", переписал (Вариант №2), но не понимаю, а можно ли в Варианте №2 как-то when условие гибко использовать? (условно если на удаленном хосте запущена служба MySQL, то применить правило для порта 3306, а остальные не применять. Или возможно можно как-то более правильно сделать? Спасибо
Timur
Условия делаются иначе. Задавайте набор портов декларативно через переменные групп, если нужен разный набор портов на разных хостах
Anonymous
Коллеги, а сколько в ансибл уровней на котором можно задать переменные? Хотя бы порядок цифр 1,2,10, 20
Alex
Коллеги, а сколько в ансибл уровней на котором можно задать переменные? Хотя бы порядок цифр 1,2,10, 20
Here is the order of precedence from least to greatest (the last listed variables winning prioritization): command line values (eg “-u user”) role defaults [1] inventory file or script group vars [2] inventory group_vars/all [3] playbook group_vars/all [3] inventory group_vars/* [3] playbook group_vars/* [3] inventory file or script host vars [2] inventory host_vars/* [3] playbook host_vars/* [3] host facts / cached set_facts [4] play vars play vars_prompt play vars_files role vars (defined in role/vars/main.yml) block vars (only for tasks in block) task vars (only for the task) include_vars set_facts / registered vars role (and include_role) params include params extra vars (always win precedence)
Alex
22 вроде как
Alex
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Anonymous
Я знал про 16. Обновлю знания
Oleksandr
Условия делаются иначе. Задавайте набор портов декларативно через переменные групп, если нужен разный набор портов на разных хостах
Пытаюсь понять, каким образом конструкцию с правилами разнести по group_vars/* файлам. Понимаю что в каждом файле нужно указать свои переменные, но не понимаю как примерно это будет выглядеть в моем случае
Anonymous
Делите сервера по группам и профит
Anonymous
Типа бд одни порты. Веб другие
Anonymous
Я не для ufc, а в обще каждой группе хостов в зависимости от роли через массив разрешаю те или иные доступы. Не факт что я делаю все правильно
Oleksandr
То что нужно делить - понимаю, как указать какие-то переменные - тоже понимаю, вопрос в том - я не могу понять как будет выглядеть конструкция которая приведена выше
Anonymous
Лууп что у вас по сути становиться массивов. Которые и кормите унифицированному правила что открывает
Anonymous
То есть отделяете открытие портов - от того что открываете
Anonymous
Роль открытия одна. А переменные открытия для каждый группы хостов другие
Anonymous
Мб по еврейски выразился. Как открывать - роль. Что открывать - переменные
Anonymous
То есть второй вариант с небольшой переделкой
Oleksandr
Роль открытия одна. А переменные открытия для каждый группы хостов другие
Пытаюсь понять, пока не получается. Если я правильно понял: есть 1 Playbook, создаю "group_vars/*" group_vars/ web mongo common mysql --- # file: group_vars/mysql mysql_port: 3306 protocol: "tcp" policy: "allow" --- # file: group_vars/mongo mongodb_port: 27017 protocol: "tcp" policy: "allow" А вот как поменять "второй вариант" пока не представляю
Anonymous
Напишите мне завтра если не разберётесь, дам примеры. С телефона не удобно
Anonymous
Мысль ваша идёт в правильном направление, но выше не массив
Anonymous
А нужен он.
Anonymous
То есть
Anonymous
ort: "10051", protocol: "tcp", policy: "allow", from: "192.168.1.198", comment: "allow incoming connection on standard SSH port" }
Anonymous
Условно это UFC: - {port: 3306, protocol:tcp} и так далее
Anonymous
Ну и в loop вы уже передаёте переменую. Думаю разберётесь - если нет - завтра пишите
Oleksandr
Ну и в loop вы уже передаёте переменую. Думаю разберётесь - если нет - завтра пишите
получается что будет вместо 1 большой "loop" грубо говоря несколько маленьких, в которые мы будем задавать переменные в виде массива (для каждой группы)?
Anonymous
Луп будет один
Anonymous
На вход принимать массив, что у вас будет идти из варсов для группы хостов
Anonymous
Я кстати больше за with_items ) но Тимур заругает )
Oleksandr
Луп будет один
Я двигаюсь примерно в том направлении?
Alex
а почему просто не определить нужный список в group_vars/group_name и просто передавать один список?
Oleksandr
а почему просто не определить нужный список в group_vars/group_name и просто передавать один список?
Мне кажется я пытаюсь это сделать сейчас) Пытаюсь найти пример в Гугле, чтобы увидеть как вызывать/использовать переменные из group_vars, но везде нахожу просто описание и примеры group_vars внутри которых переменные, а как это в Loop использовать не могу понять
Oleksandr
Т.е. я создаю файлы в group_vars/*, после этого в них (в файлах) указываю переменные (просто переменные, или массивом), но не могу понять как эту переменную из group_vars/* использовать
Anonymous
Ну погляди где нить в ролях awx. Ну типа если в плейбуки ты вызовешь для Host: db_example. То переменные размешаешь в group_vars/db_example/vars.yml
Oleksandr
# /group_vars/allservers allservers_ports: - { port: "22", protocol: "tcp", policy: "allow", from: "any", comment: "allow incoming connection on standard SSH port" } - { port: "10050", protocol: "tcp", policy: "allow", from: "192.168.1.198", comment: "allow incoming connection on standard SSH port" } - { port: "10051", protocol: "tcp", policy: "allow", from: "192.168.1.198", comment: "allow incoming connection on standard SSH port" } # /group_vars/mongodb mongodb_ports: - { port: "27017", protocol: "tcp", policy: "allow", from: "any", comment: "allow incoming connection on standard MongoDB port" } Мне кажеться будет так: - name: Apply UFW rules to this host ufw: to_port: '{{ item.port }}' proto: '{{ item.protocol }}' rule: '{{ item.policy }}' src: '{{ item.from }}' comment: '{{ item.comment }}' loop: - { item.port, item.protocol, item.policy, item.from, item.comment }
Anonymous
Нет
Anonymous
Ну в with_items надо было бы allservers пор выдавать.
Anonymous
А дальше через итем работать
Anonymous
Коллега выше правильно написал что это один массив должен быть
Anonymous
Иначе будет замещение если спецом не развлекаться на слияние
Anonymous
Я точно за луп не скажу. Но итем ты там оперировать врядли сможешь
Oleksandr
Если я правильно понял, то нужно чтобы а) переменные в /group_vars/mongodb файле были в правильном формате б) нужно правильно вызывать переменные в Playbook, из /group_vars/mongodb файла верно?
Anonymous
А - да. Б - идёт автоматом если верная группа хостов
Oleksandr
я сейчас проверю на практике дебагом 😊
Anonymous
Но да. Вызвать правильно. Чтобы было понятно - вызови через debug with_items из твоего скрина выше сначала mongo ports. Потом alservers_ports
Anonymous
Но при этом не меняй в hosts указания группы хостов
Anonymous
вроде же, есть официальный пример https://github.com/ansible/ansible-examples/tree/master/mongodb
Anonymous
в нем есть какие то ошибки?
Anonymous
С учётом что реадми 3 месяца. А остальным 6-7 лет. Врядли оно актуальное
Anonymous
Свечку не держал. Мб и актуально. Но я бы лично точно на такую некрофилию не посмотрел бы