Gunnery
в тексте ошибке - требуется судо пароль, я не скажу за модуль setup, почему ему нужны повышенные привилегии
Oleg
потому, что "когда стоит become"
но когда я хочу например создать директорию или скопировать файл, become необходим? верно?
Oleg
просто до этого юзал ансибл на aws. А теперь чтобы по локалке по ssh что-то сдлеать, возникли проблемы
Aleksey
просто на вирткалках и вообще часто для контрольного аккаунта элементарно вписывают nopasswd в sudoers.
Oleg
вовсе не обязательно. все зависит от прав
просто сейчас другая ошибка. Находил решение remote_tmp = /tmp/.ansible-${USER}/tmp Не помогло
Aleksey
бестпрактик заключается в том, чтобы использовать эскалацию прав только, когда надо
Aleksey
просто сейчас другая ошибка. Находил решение remote_tmp = /tmp/.ansible-${USER}/tmp Не помогло
у вас какая-то хрень в конфиге или на самом линуксе. tmp имеет права на запись всем. это потому и tmp
Gunnery
ленивый и не правильный вариант: в файл /etc/sudoers.d/ИМЯ_ПОЛЬЗОВАТЕЛЯ %ИМЯ_ПОЛЬЗОВАТЕЛЯ ALL=(ALL) NOPASSWD: ALL
Gunnery
единственно верный must have
а не лучше ли использовать vault?
Aleksey
а не лучше ли использовать vault?
? а при чем тут ваулт?
Gunnery
а пароли пользователей в волте хранить не стоит?
k
Друзья, кто-нибудь может показать пример удачного статического инвентори, где хосты делятся одновременно по окружению (prod/stage) и по функционалу (web/db/etc)? Хочется добавить хост в инвентори в одной точке, но чтобы он попал во все нужные группы Кажется, так не получается - надо отдельно добавлять в группу по окружению и отдельно в функциональную
Full
в ини нет. но если в *_vars в ямлах, то должно
Гребаный ямл. :) Спасибо, уже так сделал.
k
Для prod и stage лучше вообще разные инвентари иметь
Не всегда У меня, например, выигрыша от выноса окружений в отдельный инвентори нет
Aleksey
а пароли пользователей в волте хранить не стоит?
про пароли вообще надо забыть и использовать ключи... и если мы уже авторизовались в контрольный акк, зачем нам еще раз подтверждать свои права? эта замутка с вопросом в sudo чисто придумана параноиками, которые отлавливают непрошенных гостей у незакрытых терминальных окон. в скрипте то зачем?
Timur
Timur
Типа задеплоить на прод вместо стейджа
Vladimir
- name: Add keys authorized_key: user: "{{ item.key }}" state: "{{ item.value.state | default('present') }}" path: "/etc/ssh/keys/{{ item.key }}_keys" key: "{{ lookup(\"file\", \"keys/{{ item.key }}_keys\") }}" loop: "{{ lookup('dict', sysadm) }}"
Vladimir
Подскажите пжлст
Vladimir
Как к authorized_key прикрутить when, чтобы проверял наличие ключа в каталоге. Если есть - катает, если нет - скипает
Aleksey
Типа задеплоить на прод вместо стейджа
в чем разница указать разный инвентарь или указать разные группы в едином инвентаре?
Gunnery
про пароли вообще надо забыть и использовать ключи... и если мы уже авторизовались в контрольный акк, зачем нам еще раз подтверждать свои права? эта замутка с вопросом в sudo чисто придумана параноиками, которые отлавливают непрошенных гостей у незакрытых терминальных окон. в скрипте то зачем?
полностью и безоговорочно с Вами согласен. Однако, чтобы быть объективным и полностью закрыть вопрос, предположу, что наша дискуссия, касаемо параноиков в контексте безопасности, могла бы сильно развиться и зависнуть примерно на этом - https://stopdisablingselinux.com/
Timur
в чем разница указать разный инвентарь или указать разные группы в едином инвентаре?
А зачем разные группы? Чтобы на прод и стейдж еще и разные плейбуки?
k
Выигрыш в том, что минимизируется риск любых накладок
тимтоуди, защита от дурака может находиться в других местах
Balagur
Всем привет! А можно в host_vars добавить переменную которая бы добавляла данные в переменную из all, а не заменяла её?
Aleksey
А зачем разные группы? Чтобы на прод и стейдж еще и разные плейбуки?
лишь за тем, что логика и описание должны разделяться. если у вас на прод и на стейдж разная логика, значит тараканы в ней! и описание легло в логику, вместо выноса в статические ямлы
Vladimir
Про идемпотентность слышали что-нибудь?
Пока не очень понимаю, при чем здесь это?
Vladimir
Почитайте
Что почитать то? :D
Aleksey
Если у вас на прод и стейдж разная логика - вы что-то делаете не так
бро, ты же сам написал "А зачем разные группы? Чтобы на прод и стейдж еще и разные плейбуки?" )))) и? в зеркало посмотри! это у тебя разная логика
Timur
Плейбук и группы должны быть одинаковыми
Balagur
Ничего не понял, если честно. Какая задача решается?
например в all.yml прописываю переменную со списком параметров, как сделать чтобы для хоста список параметров добавился, а не заменился. ну или просто скопировать всё в хост параметры?:)
Timur
А разница между продом и стейджем - в разных инвентарях
Aleksey
Мой пойнт как раз в том, что разной логики быть не должно
ну дык, рули логику по группам! если уже так, то зачем тебе еще и рулилка по инвентарю?
Aleksey
А разница между продом и стейджем - в разных инвентарях
что есть инвентарь, как не набор групп)))
k
К сожалению, это базовая практика, она перестает быть эффективной, когда уносишь разделение по окружениям в паттерны типа stage:&database
Sergey
лишь за тем, что логика и описание должны разделяться. если у вас на прод и на стейдж разная логика, значит тараканы в ней! и описание легло в логику, вместо выноса в статические ямлы
Верно. Логика - плейбуки, описание - инвентори. И я согласен с Тимуром, если группы на стейдже и проде отличаются - вы себя лично собственными руками загоняете в ад.
k
Вообще есть мнение, что инвентори концептуально должен быть список *тегированных* хостов, а не *сгрупированных*
Timur
что есть инвентарь, как не набор групп)))
Так набор групп на проде и стейдже один и тот же
Aleksey
Какая еще рулилка по инвентарю?
слушай, зачем я тебе цитирую твои же мессаги? ))) ты все забываешь? сам же предложил иметь два инвентаря и рулит логикой меняя инвентари.
Aleksey
Так набор групп на проде и стейдже один и тот же
а что мешает сделать еще группы)))
Aleksey
С чем вы спорите-то?
с двумя инвентарями. нафига?
Sergey
с двумя инвентарями. нафига?
Потому что это best practice.
k
В чём разница-то?
В том, что в текущей модели один и тот же хост надо несколько раз объявлять в разных группах Это неэффективно
Aleksey
Потому что это best practice.
о! тогда можно пойди дальше: сделать еще и два резелвера имен, чтобы не ошибаться, и два роутера)))
Aleksey
В том, что в текущей модели один и тот же хост надо несколько раз объявлять в разных группах Это неэффективно
ну да. много буков...) а вы начните инвентарь просто генерить автоматически и НИКОГДА в него руками не залезайте, чтобы не пугаться
k
Зачем один хост добавлять в разных группах?
Чтобы соответствовать реальному положению дел Там и приложение, и база данных, и какие-нибудь cron-джобы Это уже три логические группы, условно: app, db, jobs
Balagur
Это не задача, а вариант решения. Какова исходная задача?
создание списка каталогов, они одинаковые для всех, а для одного хоста помимо общего списка надо ещё создать каталоги, а подумал что может быть можно в переменную добавить ещё данные :)
Timur
Зачем хост в разные группы добавлять несколько раз?
Aleksey
Зачем?
за тем же что и два инвентаря, а то вдруг промахнешся и что-то не туда задеплоишь) лично я просто в ансибл всегда вставляю проверки аргументов. скажите просто? ан нет )))
Sergey
Если не делать странное, то и чего-то куда-то вставлять туда, где оно не нужно, тоже не придётся.
Aleksey
Зачем хост в разные группы добавлять несколько раз?
по взрослому "потому что мультитеннантность", по пацански "потому что там не одно приложение/свойство/назначение/..."
k
Зачем хост в разные группы добавлять несколько раз?
По разным логическим группам прокатываются разные роли, к ним применяются разные переменные В одном хосте совмещается несколько логических групп Как элегантно отразить это в инвентори без занесения хоста в разные группы?