Denis 災 nobody
а есть чат по cfengine? )
Rishat
Привэтэс, что в ansible используется для запуска хэндлера до выполнения таска?
Rishat
Не помню, а что в документации написано?
Я нашёл про notify, но он после вроде идёт
Rishat
Я пока таск написал и все
Rishat
Тогда ответ: notify
Так, значит я не так прочитал. Спасибо 🙏 , сейчас ещё раз пройдусь
Vlad
Выполнить хендлер до выполнения задачи нельзя. Можно принудительно выполнить хендлеры командой - meta: flush_handlers
Nikita
Привэтэс, что в ansible используется для запуска хэндлера до выполнения таска?
Хэндлер запускается после выполнения всех задач, если вам нужно что-то делать до выполнения задач можете использовать pre_tasks
Azer
Есть какой-нибудь вменяемый способ сказать ансиблу, чтобы он показывал в каком месте темплейта у него случились обосратушки? Всё, что плейбук изрыгает — это 'NoneType' object is not iterable в конце простыни, хотелось бы что-то вроде {% for foo in bar -%} ^^^ >>>> всё, чувак, вот отсюда и дальше не могу <<<< Темплейт очень длинный, и я понимаю, что лучше бы его уже выкинуть(in progress), но увы, бизнес хочет, чтобы работало уже вчера.
Stepan T.
Господа, я тут поимел удовольствие потыкать AWX и с наскока не разобрался, как там проекты добавлять. Попытка добавить из вебморды локальный проект приводит к выхлопу о недоступности /var/lib/awx/projects (не точный путь до директории). Попытка скормить вебморде путь к локальному гит репозиторию на базе гитлаб, приводит к выхлопу о том, что у меня неверный Credential. Попытка наконфигурять Credential к появлению его в соответствующем сприске SCM Credentials не приводит. Я, очевидно, тварю какую-то фигню. Гуглёж привёл сюда, но однозначно интерпретировать коментарии к проблеме у меня не получилось. Никто не встречал инструкции, которая бы содержала методику подключения локальных реп?
Stepan T.
Докер
Egor
БД тоже в докере или отдельно на хосте?
Stepan T.
В докере
Stepan T.
Всё в докере.
Artur
значит и " /var/lib/awx/projects" должна быть в докере
Artur
но легче всё хранить в гите
Artur
обновлять легче
Stepan T.
значит и " /var/lib/awx/projects" должна быть в докере
Эм. У вас практический опыт или мнение?
Artur
практика. пользуюсь AWX
Stepan T.
Ага, чудно. Так вот внутри контейнера директория projects присутствует.
Artur
теперь туда пихай свои плейбуки
Stepan T.
Да ну нафиг? Из вебморды нельзя накалякать всякого?
Artur
нет
Artur
говорю ж. юзай гит
Stepan T.
Прекрасно. Мне нравится. Спасибо.
Stepan T.
Попытка скормить вебморде путь к локальному гит репозиторию на базе гитлаб, приводит к выхлопу о том, что у меня неверный Credential. Попытка наконфигурять Credential к появлению его в соответствующем сприске SCM Credentials не приводит. Я, очевидно, тварю какую-то фигню. Гуглёж привёл сюда (https://github.com/ansible/awx/issues/886), но однозначно интерпретировать коментарии к проблеме у меня не получилось.
Artur
https://prnt.sc/l3x23k
Stepan T.
Спасибо
Artur
https://prnt.sc/l3x2pk
Danis
Как безопасно прервать выполнение роли, если 1 таск в ней валится с ошибкой?
Artur
так если валиться с ошибкой, выполнение прервётся
Danis
так если валиться с ошибкой, выполнение прервётся
А мне и нужно, чтобы Ansible не возвращал ошибку, если валится на этом таске. Но при этом и дальше чтобы не выполнялся.
Денис
ignore_errors: yes
Денис
вот так правильно вроде пишется
Artur
с этим выполнение продолжится
Денис
а, я неправильно прочитал, прошу прощения
Денис
то есть чтобы просто прекращал выполнение, ничего не сообщая по сути?
Artur
похоже он хочет так, что б ансайбл ( как команда запущенная из баша ) возвращала return 0 даже если в такске была ошибка, но при этом ( если есть ошибка) выполнение сразу прекращалось
Денис
ну это наверное нужен свой callback plugin
Денис
но я не уверен
Денис
ну или костыль какой-нибудь, вроде ignore_error + register, и следующий таск проверяет состояние переменной
Денис
у меня похожее работает для ввода виндовых машин в домен
Денис
meta: end_play
Денис
я вот только не уверен, что meta можно использовать с when, в документации не вижу такого примера
Danis
Нашел какой-то any_errors_fatal, но вроде не совсем то.
Денис
все равно же будет ошибка в конце? и код не -0
Денис
можно попробовать вынести meta в отдельный файл, и инклудить по условию
Денис
https://pastebin.com/SRx8Y2HN
Денис
так вроде работает
Денис
до последнего дебага не доходит
Alexander
Че за фигня, в конфиге сменил remote_user, выполнил то что надо, сменил обратно на рута временно, а ансибл все равно продолжает от того юзера выполнять что раньше был?
Alexander
Точно нет. Даже если запускать плейбук вэс --user root все равно пишется что пытается подключиться с другим юзером
Egor
Попробуйте все же грепнуть код на юзера. Где-нибудь точно должен быть
Danis
до последнего дебага не доходит
Оказывается у меня были кривые условия, сейчас буду все способы перепроверять.
Alexander
Попробуйте все же грепнуть код на юзера. Где-нибудь точно должен быть
[root@ansm ansible]# cat provision_users.yml --- - hosts: all tasks: - name: Test shell: test [root@ansm ansible]# cat hosts [all] example.domain.com [root@ansm ansible]# cat /etc/ansible/ansible.cfg |grep -i user remote_user = root #become_user=root [root@ansm ansible]# ansible-playbook -i hosts provision_users.yml --user root -vvv PLAY [all] ********************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************** task path: /opt/ansible/provision_users.yml:2 <example.domain.com> ESTABLISH SSH CONNECTION FOR USER: [u'ansible']
Egor
Можно выполнить с -vv и посмотреть что в output будет - возможно где-то есть факт об этом пользователе.
Egor
Это поможет понять откуда он берется
Danis
до последнего дебага не доходит
Meta с when работает без проблем как нужно. Сделал так: - meta: end_play when: "'non-zero return code' in output.msg"
Alexander
Можно выполнить с -vv и посмотреть что в output будет - возможно где-то есть факт об этом пользователе.
Блиииин) это жесть, понял))) У меня эта роль специальна написана чтобыд обавлять пользвателей, она ьерет список админов и список разрабов из глобал варс, создает их, подкладывает ключи и тд. Сегодня я туда жобавил задачу по созданию ансибл юзера, специально для удаленного управления не через рута. И переменную ессно назвал ansible_user...😄😄
Stepan T.
Пора форкать PEP8?
Alexander
Оверинженеринг) Я не мог предположить)
Сорян) чутка наложения вышло)
hackru
фоткать
Денис
Meta с when работает без проблем как нужно. Сделал так: - meta: end_play when: "'non-zero return code' in output.msg"
не знаю что за таск перед этим выполняется, но не лучше ли привязать к "output is failed"?
Artur
делал кто в awx'e смарт инвентори ?
Danis
не знаю что за таск перед этим выполняется, но не лучше ли привязать к "output is failed"?
В моем случае нет (в этом и была ошибка), потому что предыдущий таск выполняет command и register: output
Danis
В результате в output нет Failed.
Artur
попробуй shell
Artur
идиально )
cent
дак в 11-ом версию 3 api грохнули
А не в курсе, в какой версии еще точно api v3 работает? Поставил 10.8.4-ce.0 и та же ошибка в ansible. Можно как-то проверить, что это полноценная 3 версия и проблемы у ansible ?
Aleksey
Я не знаю
cent
Я не знаю, каким образом я вчера добился другой ошибки. Но сегодня опять все та же ошибка check docs or install with: pip install pyapi-gitlab" Уже перепробовал тучу версий ansible и тучу версий pyapi-gitlab