Sergei
да это понятно, уже поменял
Timur
И как теперь?
Sergei
с нативным все ок
Sergei
ну это как бы ниочень решение
Sergei
ну да ладно, спасибо
Timur
Но этот по-моему наиболее рабочий
Sergei
другие варианты поди про костыли )) Пущай так будет
Sergei
а эт самое, митоген в проде юзабелен?
Gleb
зависит от прода
citius
Tadeusz
Mista
я бы прошелся пошем по длинкам для активации ssh
Mista
поскольку модуль telnet, как я понял из чтения доков, идет очень вразрез с идеологией анса
Mista
плюс дебаг осложняется тем что идет проламывание до конечной реализации клиента + особенности сервера и возможности дебага довольно ограничены + требуют знания питона (подсказки искал в сырцах как раз)
Mista
тратить время когда есть альтернатива как-то неоч, после активации ососаш никто не мешает вернуться к ансу
Sergei
Более чем
А бастион тамошний юзаешь? mitogen_via который
citius
Aleksey
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
Добрый день,
Как можно относительно гибко ( и можно ли) написать 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
Oleksandr
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} и так далее
Oleksandr
Anonymous
Ну и в loop вы уже передаёте переменую. Думаю разберётесь - если нет - завтра пишите
Anonymous
Луп будет один
Anonymous
На вход принимать массив, что у вас будет идти из варсов для группы хостов
Anonymous
Я кстати больше за with_items ) но Тимур заругает )
Oleksandr
Oleksandr
Alex
а почему просто не определить нужный список в group_vars/group_name и просто передавать один список?
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
Свечку не держал. Мб и актуально. Но я бы лично точно на такую некрофилию не посмотрел бы