Lamobot
Привет всем.
Вопросы по async/poll, не совсем понял как он работает.
Указанное в async количество времени - это количество времени, по истечении которого плейбук будет failed, верно?
А poll - раз в какое количество времени в пределах async проверяется, готова ли задача к выполнению, или через какое время стартовать следующей задаче?
И если одна задача задана асинхронно, то все остальные выполняются по очереди до конца плейбука или роли, если среди них не будет таски с async_status, правильно?
async - глобальный таймаут для таска
poll - как часто проверять закончился или нет
Да, если одна асинхронно, а остальные как обычно, то после асинхронной будет опять последовательное выполнение. Можно ещё посмотреть стратегии - https://docs.ansible.com/ansible/latest/plugins/strategy.html
Yar
Как я понял, strategy на уровне хостов, а async на уровне тасков.
Получается, плейбук может быть failed, при этом выполнив все задания кроме одного, если допустим первому выдать async = 1000 и poll = 0 ?
Lamobot
Почему плейбук будет failed? Просто таск запустится асинхронно. Если запуск был успешный, то и статус у таска будет успешный. И процесс будет работать до завершения или до истечения 1000 секунд независимо от плейбука.
Yar
Я имею в виду, если время async истечет, а таск не выполнится - весь плейбук failed?
Yar
О как.
Я понял. Любопытно.
A
Всем привет! Можно как-то собрать хеши установленных пакетов системе?
A
В лс если можно
Fire
Fire
Составляешь список установленных пакетов и считаешь для каждого хеш.
Fire
Вот только для чего это?)
Lamobot
Fire
Fire
Тебе ж его надо.
Fire
A
Я понял что это делается через stat, в stat нужен полный путь. А через facts.package не получается (
A
Но задумку понял, спасибо
Fire
Vladimir
Есть ещё yum-verify
Vladimir
И другие подходы для проверки пакетов и бинарей
Artemy
Всем привет, в vagrant поднимаю galera cluster и есть арбитр, вот для него надо в шаблоне указать все галера хосты. По идее он забирает ip-адреса из группы и добавляет в конфиг/шаблон, как правильно указать, чтобы генерация шаблона и например запуск сервиса выполнился только 1 хосте, а не на всех? https://pastebin.com/NGYFA83f
Grek 🇺🇦
run_once и delegate_to по идее должны помочь
Artemy
Artemy
Ivan
првиет! покажите пожалуйста, как вы подготавливаете объект, который потом |to_yaml? Когда шаблоните сложные конфиги, например
ep4sh
привет что можно использовать заместо skippy callback?
ответ: ANSIBLE_DISPLAY_SKIPPED_HOSTS
Anton
Доброе утро. Как, с точки зрения подхода "инфраструктура как код", должно выглядеть обновление пакетов ОС (в т.к. ядро и т.д.) на целевых системах (без учета контейнеров)? Например, по модулю yum у нас используется установка ряда пакетов определенных версий (например nginx redis) не latest. Как-то пытаться обновлять все пакеты, которые не связаны с указанными? Как сделать так, чтобы можно было сделать откат при возврате к предыдущей версии кода?
енот
в первую очередь, стоит держать тестовые машины с аналогичным окружением
енот
написать тесты
енот
не знаю, как юм, а апт позволяет холдить пакеты определенные - они не обновятся автоматически при апт апдейт\апт апгрейд
енот
вероятно, юм должен уметь подобное, проверьте
Vadim "Oxyd"
Vadim "Oxyd"
а ansible этим как-то управлять может?
Почитайте ман по плагину versionlock посмотрите в каких файлах он хранит список залоченных пакетов, добавьте ансиблом нужные пакеты нужных версий в эти файлы. Я-бы так делал.
Anton
странно мало информации по данному вопросу. все юзают latest? или никогда не обновляют ос? или обновляют какой-нибудь образ потом его пакером и раскатывают?
енот
тестовую среду держат
Anton
тестовую среду держат
ок пример: у меня плейбук с yum update для обновления системы. стоит centos 7.7 и какие-то пакеты (nginx redis будут latest). - Раскатываю это в тестовое окружение
Anton
тестируют все ок. завтра выходит centos 7.8 redis 6 все это раскатывается в прод и не работает
Anton
или еще рядом хранить слепок собственного репозитория дабы не юзать паблик?
енот
Отделение Bereke Bank
Anton
Anton
спасибо. Пока думаю между versionlock и golden image
Grek 🇺🇦
GI отстой. Нет истории и версионирования, хрен вспомнишь что в нем установлено, документации по нему верить нельзя.
Elenhil
Grek 🇺🇦
А чем тогда раскатка окружения в чистой системе будет отличаться от использования ГИ?
Я и твой кот
Я и твой кот
И процесс выпекания golden image меньше подвержен ошибкам.
Grek 🇺🇦
У меня совсем другой опыт с GI, и это явно офтоп
Junglist
добрый день, подскажите пожалуйста. Хочу выловить stdout и на его основе пнуть комманду
для этого есть такие таски https://pastebin.com/QAyHnMNs
но таск на применение параметров всё равно срабатывает всегда, запутался в кондишенах :(
Grek 🇺🇦
выведи сначала shell_netsh_dpr_tcp_output, а потом посмотри как достучаться к group_names
Junglist
лист в when разве не логическое AND?
Junglist
проблема не в group_names а во втором условии, которое при наличии нужных цифр в stdout продолжает отдавать true на not in
Grek 🇺🇦
да есть вроде
https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#the-when-statement
Grek 🇺🇦
может с кавычками намудрили?
Junglist
отбой, переписал на find и заработало (shell_netsh_dpr_tcp_output.stdout.find("15000") == -1) or (shell_netsh_dpr_tcp_output.stdout.find("50535") == -1). Спасибо что откликнулись :)
Vladimir
утра доброго
подскажите пожалуйста, ято я упускаю
есть вот такой тикет, один в один описывающий мою проблему
машина входит в NIS домен, поэтому локальных пользователей там нет, но мне нужно их добавить в локальную группу. Если я делаю это модулем user, то ансибл создает локального пользователя и все портит
https://github.com/ansible/ansible/issues/30165
Vladimir
ишуя закрыта с текстом:
#28420 added the ability to modify local users as of Ansible 2.4.0. The underlying tools, usermod, useradd, etc., should be aware of directory accounts and behave appropriately.
It may also be that this should be handled by a groups module since the user module assumes you want to create an account at a minimum.
If this is still an issue with recent versions of Ansible, please open a new issue.
ничего полезного в связанной ишуе по этому поводу не нашел
через модуль групс добавить группе юзера тоже нельзя
не понимаю как это работает
локально пльзователей на доступных машинах нет (luser использовать не получится
Maksim
Вас еще спрошу, может кто интересную идею подкинет.
Раньше у меня была такая структура ролей
frontend
backend
base/nginx
base/tomcat
Соответственно в frontend через мету ставился base/nginx, также и в бэке
Таким образом у меня получилось большое количество ролей в подкаталоге base/ и работало это иногда криво, хендлеры и прочее (из-за подкаталога)
Как вынести все это дело в обычные roles, но избежать большого списка этих самых ролей? (их получается около 30 штук таким образом)
citius
Maksim
Ivan
Alex
Alex
Вот например в CentOS 6.0 был mysql-5.1.47, в CentOS 6.10 mysql-5.1.73
Anton
Anton
для redis*
Alex
ну latest в любом случае зло в 99%
Alex
так что надо пинить версию
Alex
Anton
в дефолтном репозитории centos вообще был 3 редис)
Sebor▂▅▇█▓▒░
Alex
ну поменялась и что?
Alex
это не сломает прод