Yar
Как я понял, strategy на уровне хостов, а async на уровне тасков. Получается, плейбук может быть failed, при этом выполнив все задания кроме одного, если допустим первому выдать async = 1000 и poll = 0 ?
Lamobot
Почему плейбук будет failed? Просто таск запустится асинхронно. Если запуск был успешный, то и статус у таска будет успешный. И процесс будет работать до завершения или до истечения 1000 секунд независимо от плейбука.
Yar
Я имею в виду, если время async истечет, а таск не выполнится - весь плейбук failed?
Lamobot
Я имею в виду, если время async истечет, а таск не выполнится - весь плейбук failed?
async применяется для процесса, который будет запущен на целевой машине. И он запускается асинхронно - независимо от плейбука! Если async истечёт, то завершится процесс на целевой машине. Но не плейбук
Yar
О как. Я понял. Любопытно.
A
Всем привет! Можно как-то собрать хеши установленных пакетов системе?
A
В лс если можно
A
В смысле хеши?
Прочти по системе и посчитать md5 или sha256
Fire
Составляешь список установленных пакетов и считаешь для каждого хеш.
Fire
Вот только для чего это?)
Lamobot
Прочти по системе и посчитать md5 или sha256
В пакете 30 файлов, какой хеш считать? :)
Fire
Тебе ж его надо.
A
Я понял что это делается через stat, в stat нужен полный путь. А через facts.package не получается (
A
Но задумку понял, спасибо
Vladimir
Есть ещё yum-verify
Vladimir
И другие подходы для проверки пакетов и бинарей
Artemy
Всем привет, в vagrant поднимаю galera cluster и есть арбитр, вот для него надо в шаблоне указать все галера хосты. По идее он забирает ip-адреса из группы и добавляет в конфиг/шаблон, как правильно указать, чтобы генерация шаблона и например запуск сервиса выполнился только 1 хосте, а не на всех? https://pastebin.com/NGYFA83f
Grek 🇺🇦
run_once и delegate_to по идее должны помочь
Denis 災 nobody
Всем привет! Можно как-то собрать хеши установленных пакетов системе?
нельзя. После установки пакета он удаляется. Но часть пакета - это хэши поставленных файлов, и если надо - можно проверить соответствие того что в них и самих файлов. Учитывать, что есть конфиги, где отличающийся хэш это норма почти всегда.
Ivan
првиет! покажите пожалуйста, как вы подготавливаете объект, который потом |to_yaml? Когда шаблоните сложные конфиги, например
ep4sh
привет что можно использовать заместо skippy callback? ответ: ANSIBLE_DISPLAY_SKIPPED_HOSTS
Anton
Доброе утро. Как, с точки зрения подхода "инфраструктура как код", должно выглядеть обновление пакетов ОС (в т.к. ядро и т.д.) на целевых системах (без учета контейнеров)? Например, по модулю yum у нас используется установка ряда пакетов определенных версий (например nginx redis) не latest. Как-то пытаться обновлять все пакеты, которые не связаны с указанными? Как сделать так, чтобы можно было сделать откат при возврате к предыдущей версии кода?
енот
в первую очередь, стоит держать тестовые машины с аналогичным окружением
енот
написать тесты
енот
не знаю, как юм, а апт позволяет холдить пакеты определенные - они не обновятся автоматически при апт апдейт\апт апгрейд
енот
вероятно, юм должен уметь подобное, проверьте
Anton
yum versionlock
а ansible этим как-то управлять может?
Vadim "Oxyd"
а ansible этим как-то управлять может?
Почитайте ман по плагину versionlock посмотрите в каких файлах он хранит список залоченных пакетов, добавьте ансиблом нужные пакеты нужных версий в эти файлы. Я-бы так делал.
Anton
странно мало информации по данному вопросу. все юзают latest? или никогда не обновляют ос? или обновляют какой-нибудь образ потом его пакером и раскатывают?
енот
тестовую среду держат
Anton
тестовую среду держат
ок пример: у меня плейбук с yum update для обновления системы. стоит centos 7.7 и какие-то пакеты (nginx redis будут latest). - Раскатываю это в тестовое окружение
Anton
тестируют все ок. завтра выходит centos 7.8 redis 6 все это раскатывается в прод и не работает
Anton
или еще рядом хранить слепок собственного репозитория дабы не юзать паблик?
енот
или еще рядом хранить слепок собственного репозитория дабы не юзать паблик?
если вы настолько версиозависимы - да, опреденно неплохая идея
Отделение Bereke Bank
или еще рядом хранить слепок собственного репозитория дабы не юзать паблик?
Попробуй versionlock. Потом статью на медиум напишешь 👍
Vadim "Oxyd"
или еще рядом хранить слепок собственного репозитория дабы не юзать паблик?
Блин. Тебе-ж написали как надёжно сделать. Ну или в плейбуке прописываешь установку плагина на прод. Туда-же прописываешь установку конкретных версий софта, потом в этом-же плейбуке фиксируешь состояние плагином. Всё! Что ты тут ещё пытаешься придумать?
Anton
спасибо. Пока думаю между versionlock и golden image
Grek 🇺🇦
GI отстой. Нет истории и версионирования, хрен вспомнишь что в нем установлено, документации по нему верить нельзя.
Elenhil
GI отстой. Нет истории и версионирования, хрен вспомнишь что в нем установлено, документации по нему верить нельзя.
Кто мешает вести историю и версионирование голденимеджа? Оо или вы руками его собираете каждый раз?
Grek 🇺🇦
А чем тогда раскатка окружения в чистой системе будет отличаться от использования ГИ?
Я и твой кот
Я и твой кот
И процесс выпекания golden image меньше подвержен ошибкам.
Elenhil
А чем тогда раскатка окружения в чистой системе будет отличаться от использования ГИ?
1) это на порядок быстрее 2) это дает гарантию определенного состояния всей системы, а не только того куска, который менеджится ансиблом 3) меньше вероятность расхождения в конфигурации между серверами
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 использовать не получится
citius
тестируют все ок. завтра выходит centos 7.8 redis 6 все это раскатывается в прод и не работает
Настолько ломающих изменений обычно в серверных дистрах нет. Наоборот супер свежие версии софта надо тащить из каких нить левых реп.
Maksim
Вас еще спрошу, может кто интересную идею подкинет. Раньше у меня была такая структура ролей frontend backend base/nginx base/tomcat Соответственно в frontend через мету ставился base/nginx, также и в бэке Таким образом у меня получилось большое количество ролей в подкаталоге base/ и работало это иногда криво, хендлеры и прочее (из-за подкаталога) Как вынести все это дело в обычные roles, но избежать большого списка этих самых ролей? (их получается около 30 штук таким образом)
Николай
У меня совсем другой опыт с GI, и это явно офтоп
Можешь поделиться? Думаю, это будет интересно многим, и модеры не рассердятся
Alex
ок пример: у меня плейбук с yum update для обновления системы. стоит centos 7.7 и какие-то пакеты (nginx redis будут latest). - Раскатываю это в тестовое окружение
а с чего бы это перестать работать редису? Вообще у RHEL такая политика, что они никогда не меняют не то что мажорную, а даже минорную версию
Alex
Вот например в CentOS 6.0 был mysql-5.1.47, в CentOS 6.10 mysql-5.1.73
Anton
для redis*
Alex
ну latest в любом случае зло в 99%
Sebor▂▅▇█▓▒░
Вот например в CentOS 6.0 был mysql-5.1.47, в CentOS 6.10 mysql-5.1.73
Так минорная же версия листов поменялась. Вот и у пакетов тоже только минорная
Alex
так что надо пинить версию
Anton
в дефолтном репозитории centos вообще был 3 редис)
Sebor▂▅▇█▓▒░
и?
Что и?
Alex
ну поменялась и что?
Alex
это не сломает прод