Oleg
Добре всем! подскажите как можно было бы используя lineinfile указать ансиблу что бы он написал мне все в 1 линию: line: "бла-бла {{ item }}" with_items: - "{{ var1 }}" - "{{ var2 }}" - "{{ var10 }}" пока что он создает столько строк, сколько указано var в with_items:
Алексей
потому что with_items - это loopback Попробуй массив сразу в строчку поставить вместо {{ item }}
Damir
Ребята, вопрос: Eсть таск для определнной группы серверов: - name: Backing Up Policies shell: innobackupex /mysql-backup/ На этих серверах, где то задан пароль для mysql, а где то нет. Хочу сделать таск, где бы сначала ансибл пытался попасть в БД без пароля, как в примере выше, а если не смог зайти, то пробовал что то вроде этого: - name: Backing Up Policies shell: innobackupex /mysql-backup/ -p "{{ mysql_root_password }}"
Алексей
делай чек до таска с register и уже по нему делай таски с when чёто там
Oleksandr
я бы везде пользователя и права прописал
Timur
Но да - выше правильно сказали, что идеологически правильнее везде пароль задать
Timur
делай чек до таска с register и уже по нему делай таски с when чёто там
Без нужных кредов чек с обращением к базе у тебя зафейлится и вся плейбука упадет
Damir
Я сначала тоже хотел через cnf сделать, но условие такое, что эти роли уйдут в прод выше по уровню, где не будут заморачиватся по поводу my.cnf
Damir
Нужно реализовать условие, на проверку как создавалась БД, с паролем или нет
Алексей
Без нужных кредов чек с обращением к базе у тебя зафейлится и вся плейбука упадет
делаешь простой скриптик типа mysql -u test && echo 0 || echo 1 Это в любом случае откработает корректно, а уже по выводу судишь удалось или нет
Timur
Нужно реализовать условие, на проверку как создавалась БД, с паролем или нет
Пытаться подключиться с паролем. Если фейл - то без. Или наоборот
Oleg
Да
почему то выходит так: бла-бла [u'значение'] [u'значение']
Алексей
Фу
что ФУ, есть задача, нужно решить, чё фукать то
Oleg
Да
просто, если быть уж конерктным то вод var у меня несолько значений, тч {{ groups['var1'] }}
Timur
что ФУ, есть задача, нужно решить, чё фукать то
Задача для ансибла же, а не для однострочника на баше/перле
Damir
oneline/onelove )
Алексей
Задача для ансибла же, а не для однострочника на баше/перле
однострочник это часть алгоритма а алгоритм на ансибле
Oleg
Так надо сразу говорить
сори, предполагал, что не имеет значения(
Timur
сори, предполагал, что не имеет значения(
Превратите свой список в строку с помощью соотв. фильтра. Например, join. И так вставляйте
Timur
Или если там Item один, то просто выбираем first или last
Oleksandr
Я сначала тоже хотел через cnf сделать, но условие такое, что эти роли уйдут в прод выше по уровню, где не будут заморачиватся по поводу my.cnf
а откуда у вас пароли на прод? они ж хранятся в хранилке конфигов/секретов? пароль на прод может быть пустым если что. поэтому можно сгенерировать .my.cnf и раскидать его по инстансам мускуля. почему плохо делать в 2 подхода: если автоматизировать бардак, то получится автоматизированный бардак (с)
Oleg
Или если там Item один, то просто выбираем first или last
там в группе может быть и 1, а может и больше 1го быть
Timur
Тогда join
Andor
где почитать про то как мёржатся параметры из разных иерархий из global_vars? у меня вот в репозитории щас есть global_vars/{all,staging,testing}/*.yaml
Алексей
Это башсибл уже
т.е. в тасках шелл использовать неззя, иначе будет башсибл?
Timur
Только по необходимости
Oleksandr
т.е. в тасках шелл использовать неззя, иначе будет башсибл?
можно, но есть модули. да и сам ансибл ругнется ворнингом
Алексей
Крайне нежелательно
да? Давай расскажи тогда КАК правильно сделать поставленную задачу.
Алексей
можно, но есть модули. да и сам ансибл ругнется ворнингом
с указанным однострочником не ругнётся тк я перехватываю сбой и вывожу нужный мне символ.
Oleksandr
ворнинг должен быть из-за использования в баще mysql вместо импользования модуля по работе с мускулом
Oleksandr
я не про error
Алексей
с чего там ворнинг будет? это просто шелл команда. Или ансибл через нейросетки анализирует содержимое
Алексей
Я же сказал: block - rescue
а по подробнее?
Timur
Вот можно на пример нашей роли MySQL глянуть: https://github.com/lean-delivery/ansible-role-mysql/blob/master/tasks/secure-installation.yml
Damir
а откуда у вас пароли на прод? они ж хранятся в хранилке конфигов/секретов? пароль на прод может быть пустым если что. поэтому можно сгенерировать .my.cnf и раскидать его по инстансам мускуля. почему плохо делать в 2 подхода: если автоматизировать бардак, то получится автоматизированный бардак (с)
Пароли провижинятся, в зависемоти от среды. Есть два сценария когда разворачивается база без пароля и когда с одним типовым паролем. Я хочу написать роль для бекапа БД, в не зависемости от того как создавалась база. Бардак на мой взгляд тут отсутствует.
Timur
Там как раз делается попытка подключения к базе с нужным паролем. Если попытка фейлится, то запускается блок по сбросу пароля и установка нужного
Алексей
Линт ругнется
линтер встроен в ансибл?
Oleg
Тогда join
супер! спасибо! вот так надо было: "бла-бла {{ var1 | join('\n') }} {{ var2 | join('\n') }}"
Timur
линтер встроен в ансибл?
Нет, но в Galaxy - да, встроен
Алексей
Timur
при чём тут galaxy?
При том, что любая роль, которой пользуется больше одного человека, должна следовать лучшим практикам
Timur
Пихать башсибл в роль по любому поводу - фу
Timur
Ансибл не для этого
Timur
да будут прокляты еретики не использующие ansible-lint :)
Timur
Он, кстати, вчера обновился
Timur
Рекомендую
Алексей
Ансибл не для этого
ансибл и для этого в том числе.
Timur
ансибл и для этого в том числе.
Да не, понятно, что можно из говна и палок что-то работающее сделать
Timur
Но говном с палками от этого оно быть не перестанет
Oleksandr
ансибл и для этого в том числе.
тебя никто не убеждает, просто рекомендуют. всем все равно, что у тебя и как написано
Алексей
Не вижу пока ничего критичного в том чтобы делать проверки так или иначе
Oleksandr
;)
Алексей
Про блок и рескью не знал, спасибо - просветили.
Timur
https://youtu.be/LApKSi5tUYo
Timur
Напоминаю на всякий
simplemice.eth
башсибл же есть
Алексей
Anonymous
Hi is it possible to register the output to a variable if iam using with_loop
Andor
> “Ansible — это вам не bash!” ... ведь им можно и не пользоваться
Timur
Hi is it possible to register the output to a variable if iam using with_loop
Yes, it is. You can use register within loop. Resulting variable will contain list of outputs provided by module. You can see it with debug module