Anonymous
фишка в том, что может где-то по дороге твой узернейм превращается в узернейм@domain.mame.tld
Нормальный username ( msg: 'Logging into artifactory.tools.incountry.com:5000 for user docker-ro failed - 401 Client Error: Unauthorized ("Get https://artifactory.tools.incountry.com:5000/v2/: unauthorized: BAD_CREDENTIAL")'
Vladislav 👻
- name: Load a variable file based on the service manager include_vars: '{{ service_manager }}' with_first_found: - '{{ ansible_service_mgr }}.yml' - systemv.yml loop_control: loop_var: service_manager
раскурил логику, в целом да, удобно, суть та же, как и у тасок, просто с отдельным объявлением переменных для конкретной ОС
Anonymous
фишка в том, что может где-то по дороге твой узернейм превращается в узернейм@domain.mame.tld
не может он превратиться не во что, т.к. ansible понятия не имеет про ldap
George
не может он превратиться не во что, т.к. ansible понятия не имеет про ldap
но юзер под которым у тебя выполняется docker login не тот же, что и под которым бежит ансибл?
Anonymous
сорян, это не отладка
-vvvv включил, куда еще больше?
George
может у тебя есть спецсимволы в пароле?
George
ну, там *:/'"`
Anonymous
Кстати есть такое
George
тогда надо заэскейпить
George
и закавычить весь пароль
George
(только почему мне нужно объяснять очевидные вещи, где может сломаться ямл ()
Anonymous
и закавычить весь пароль
У меня пароль лежит в шифрованом виде через ansible-vault. Т.е. в виде key: !vault ! blablabla
George
https://t.me/pro_ansible/98970
George
@SLASH_CyberPunk по идее отсюдова
Vladislav 👻
@SLASH_CyberPunk по идее отсюдова
не похоже, там цикл уже бегает
Timur
А service_manager откуда берется?
Из фактов. Если фактов нет или нужного файла не найдено - берет первый (т.е. последний) найденный из списка
Vladislav 👻
👍🏻
Vladislav 👻
Пойду прикину, как это будет выглядеть
Anonymous
тоды хз
Кстати помогло. Просто сделал ansible-vault encrypt_string и передал туда закавыченный пароль, который и засунул в group_vars. И заработало. Спасибо большое
shine
Граждане, на секундочку, немного наркоманский вопрос, структуру таблиц удаленной мускульной базы какими-либо специализированными модулями можно сдёрнуть? ну т.е. я представляю, как это через тот же шелл сделать или запуск удаленного скрипта и т.д.
George
что значит сдернутЬ?
Anonymous
@cognoz будет жить. Поприветствуем!
George
ты хочешь в виде json'а (условно) получить аналог SHOW CREATE TABLE?
Tadeusz
Ну это схема базы...
shine
show create table table_name; или show create procedure;
shine
хочется бэкапить структуру / процедуры/ функции, выгружая это всё в гит, без данных, например
Валентин
Ребят, подскажите как when условие применить в зависимости от окружения? Есть dev и test
Andrew
Может mysqldump? mysqldump \ --routines \ --triggers \ --no-data \ --databases "$1" > "$1"
Stan
подскажите, пытаюсь заранить playbook, по ssh не пускает ,пишет : etc/ssh/ssh_config line 19: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket \"/root/.ansible/cp/3605020054\" does not exist\r\ndebug2: хотя в настройках все норм выглядит, что может мешать?
Anonymous
Подскажите пожалуйста как в molecule для ansible провижинера указать переменную ansible_user? У меня есть подсасывание group_vars, в котором определен ansible_user: ubuntu, нужно для молекулы это переопределить provisioner: name: ansible lint: name: ansible-lint inventory: links: group_vars: ../../../../inventories/group_vars/
Timur
Ребят, подскажите как when условие применить в зависимости от окружения? Есть dev и test
Скажи, что именно хочешь сделать. Подозреваю, что when не нужен
Валентин
Скажи, что именно хочешь сделать. Подозреваю, что when не нужен
Роль для нескольких окружений, нужно что бы некоторые таски выполнялись только для dev окружения
Timur
Лучше задай по конкретному параметру
Timur
Типа when: enable_this_trigger | bool
Timur
А значение этой переменной задавай разным окружениям через инвентарь или плейбуку
Anonymous
В смысле для молекулы переопределить? Чем group_vars не устраивает?
Тем, что в group_vars у меня определен ansible_user: ubuntu, а внутри docker'а пользователь root
Anonymous
Все равно не понял проблемы
molecule накатывает определенную роль на docker контейнер. Для этой роли требуется переменные из group_vars, поэтому я подключаю их через inventory: links: group_vars: ../../../../../inventories/group_vars/ в group_vars/all.yml у меня определа переменная: ansible_user: ubuntu И ansible, что ожидаемо, не может подключиться к docker контейнеру, который был поднят molecule'ой, т.к. в докере пользователь - root ------ В любом случае уже неактуально, я как-то не догадался изначально, что можно просто в плейбуке molecule/default/playbook.yml переопределить пользователя vars: ansible_user: root
Vladislav 👻
А поясните мне за wait_for, пытался запилить чекалку доступности порта, но что-то гугл выдает примеры, которые просто пролетают... Как можно проверить порт нормально?
Vladimir
Вечерний тупняк( Может кто подскажет. Есть такой host_vars и task: -------- nginx_vhost: - server_name: "test.examle.com" restrict_access: basic_auth: - {user: 'dev', pass: '123'} - {ueser: 'demo', pass: '456'} - server_name: "test2.examle.com" restrict_access: basic_auth: - {user: 'dev2', pass: '123'} - {ueser: 'demo2', pass: '456'} -------------- - name: Nginx | creat auth file htpasswd: path: /etc/nginx/include/passwdfile.{{ item.server_name }} name: item.basic_auth.user password: item.basic_auth.password owner: root group: root mode: 0640 loop: "{{ nginx_vhost }}" when: nginx_vhost.basic_auth Как сделать обход по паролям, что бы все добавлялись? #хочустранного
Vladimir
Вопрос снят.
George
Вопрос снят.
и как решил?
George
или это просто ночное обострение было ?)
Vladimir
и как решил?
loop + subelements. Если интересно, могу сюда таску скинуть
George
ну, конечно, интересно посмотреть
Vladimir
- name: Nginx | creat auth file htpasswd: path: /etc/nginx/include/passwdfile.{{ item.0.server_name }} name: item.1.user password: item.1.pass owner: root group: root mode: 0640 loop: "{{ nginx_vhost | subelements(restrict_access.basic_auth)}}" @gecube вот так
Anonymous
Andy Amba будет жить. Поприветствуем!
Anonymous
@Unsigned_Long_Long будет жить. Поприветствуем!
Anonymous
@Aburnashev будет жить. Поприветствуем!
Anonymous
@lmmcs будет жить. Поприветствуем!
Vladimir
И что, оба юзера прописывается? 🤔
Смысл, что он делает loop по первому, а внутри этого loop, по второму полю.
Vladislav 👻
Ага, понял 👍🏻
Anonymous
mirumirich будет жить. Поприветствуем!
Sun
господа, опять странный вопрос: Есть некоторое кол-во сервисных юзеров, которым надо на новый сервер положить в профиль пару файликов, типа aws-creds. Можно ли как-то проверять папку files роли на предмет совпадения названий папок с юзернеймом и затем уже вызывать sync? По тупому я смог, но срёт в логи, если папки с именем юзера нет. А хочется без фейлов проходить плейбук.
inqfen
Получаешь список директорий в files получаешь список директорий в юзеров, составляешь генератором (типа for catalog in files if catalog in users) лист директорий, которые надо синкать и синкаешь по нему
Dr. L.S.Dee
господа, опять странный вопрос: Есть некоторое кол-во сервисных юзеров, которым надо на новый сервер положить в профиль пару файликов, типа aws-creds. Можно ли как-то проверять папку files роли на предмет совпадения названий папок с юзернеймом и затем уже вызывать sync? По тупому я смог, но срёт в логи, если папки с именем юзера нет. А хочется без фейлов проходить плейбук.
Господа, извиняюсь, конечно, что опять влезаю с оффтопиком, но... У меня в последнее время складывается впечатление, что логика использования как сабжа, так и моего оффтопика оччччень похожи. На DSC реализовать проверку на наличие какого-то объекта прямо в рантайме и "на коленке" я мог бы, только задействуя Script. Злоупотребление которым в корне неправильно (недаром же он один такой на всю туеву хучу доступных ресурсов, как встроенных, так и в галерее). Без него - я бы либо оставил декларацию, что такой-то файл должен присутствовать по такому-то пути (и тут диспетчер DSC либо тоже нагадил бы в логи ошибками и записал бы целевые хосты как "не соответствующие состоянию", либо молча радостно создал файлы по нужному пути - и неважно, что там больше ничего нет), либо... Либо написал бы модуль, куда и вынес проверку. Вернее, поискал бы подходящий, ведь все уже написано до нас. P.S. Про рантайм написал? Да. ОК. Так вот, а вообще такую проверку я бы вынес за пределы применения конфигурации. И включал в список, на котором применяется целевая конфа, только те хосты, где есть нужный ресурс (в данном случае - пользователи, которые хотя бы раз залогинились и для которых создан хомяк).
inqfen
Да, не надо так, но человек попросил, я подсказал
inqfen
Вдруг у него именно такой случай, когда вот надо
Timur
Да, не надо так, но человек попросил, я подсказал
Зачем подсказывать антипаттерны?
Dr. L.S.Dee
Tl;dr: использовать собранные факты в плейбуке. 1. Собрать информацию о хостах, включив условие "каталог такой-то существует". Видимо, для каждого имени пользователя. 2. Каждый хост с положительным результатом включается в соответствующую коллекцию. 3. Для каждой такой коллекции применяется задача "файл такой-то должен сущестовать". В ранее указанном каталоге, да. Коллекции могут перекрываться.
Dr. L.S.Dee
Dr. L.S.Dee
Или я чушь несу?