Anna
в плейбуке указать в hosts имя группы хостов из инвентори, запустить плейбук с тегом
Anonymous
у меня просто групп хостов под пару сотен, Сергей спасибо попробую твой способ
Alex
@tnt4brain
не сталкивался случайно с моим кейсом относительно много строчного вывода в service status?
Anonymous
Сергей спасибо, оно самое было
Sergey
Alex
P.S. речь о sysvinit системах
Full
Народ, а как бы указать версию пакета при установке.
В смысле, есть список пакетов, например:
packages_list:
- package1
- package2
Есть примерно такая таска:
- name: Install a list of packages
apt:
name: '{{ packages_list }}'
Хочется дополнить возможностью указывать версию пакетов в инвентори для хостов индивидуально.
Ввести переменную, например, packages_version: 1.2.3-4, чтоб при наличии этой переменной таска приобретала такой вид:
- name: Install a list of packages
apt:
name:
- package1=1.2.3-4
- package2=1.2.3-4
Немного путано объяснил.
Gleb
Full
Можно, конечно, дополнить таску loop'ом, и тогда с каждым отдельным элементом все получится. Но там ублюдочные кросс-зависимости между этими пакетами, их лучше прям списком передавать в модуль.
Full
Эм. Это сработает с переменной типа list?
Full
Я пока не понимаю, почему это вообще может сработать. Кто итерироваться по списку будет в этом примере.
Gleb
может все же не надо?
Full
Я б не стал.
Lamobot
Gleb
я бы про apt pinning вообще подумал
Gleb
если указана версия то делать пин
A
Добрый день. В плейбуке есть таска, которая выполняет на хосте команду в шелле. После грепов и авк вывод представляет из себя две строки:
something1
something2
Как сохранить их в отдельные переменные для использования в следующих тасках?
upd.: Вообще может быть больше 2-х строк, но мне нужны первые две
Антон
Full
Придется поддерживать другой список, потом третий, потом пятый.
Так у меня хосте будет просто номер версии. Номер поменял, плей проиграл - пакеты обновились.
Антон
Full
Да какая телепатия, ты о чем? Ещё раз - номер версии хранится в инвентори, хост варс. Нужно только прицепить его к каждому элементу списка.
Lamobot
A
Full
О, прям очень близко, спасибо, пошел пробовать.
Full
Фак:
jinja2.exceptions.TemplateAssertionError: no filter named 'product'
Name: Jinja2
Version: 2.11.2
Full
И в доке jinja, что странно, не нахожу этого фильтра.
Lamobot
Full
Python 3.6.8
Таски нет, это просто рендер jinja-темплейта.
Lamobot
Не все фильтры, что есть в ансибле, есть в jinja.
Отлично работает:
- debug:
msg: '{{ packages_list|product([ package_version ])|map("join","=")|list }}'
Full
Хм. Т.е. это не jinja-фильтр, получается.
Ок, пошел так проверю.
Full
Прям оно, спасибо.
Evgenii
Скажите, как я могу выполнить несколько shell команд за одну таску, но с тем условием, что если хотя бы одна из них будет failed, то все остальные не применяются?
Denis 災 nobody
/bin/aaa && /bin/bbb ?
Nicolai
rm some-file && echo " delete Ok " || echo "delete Fail "
Alex
Evgenii
так нельзя
Получается из 10 команд (настройка например чего либо) нужно под каждую заводить отдельную таску и проверять rc ?
Alex
Denis 災 nobody
как минимум можно вынести в скрипт и сделать set -xe
Denis 災 nobody
но оно всегда будет changed:True
Denis 災 nobody
так нельзя
можно упаковать несколько команд в 1 строку
Denis 災 nobody
если нужен откат то пилить модуль
Evgenii
а разве ансибл не умеет rollback ?
Denis 災 nobody
для sh нет
Denis 災 nobody
shell/command не поддерживают откат
Alex
Alex
поэтому я и сказал, что откаты придется пилить в ручном режиме
Denis 災 nobody
https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html
Alex
ну либо колхозить в стиле
shell: |
yum install pkg1-1 || yum install pkg1
Denis 災 nobody
тут реализуется откат
Evgenii
Спасибо, буду изучать этот вопрос
Denis 災 nobody
а можно ссылку почитать про rollback (что можно)?
у шелл - ничего. Вот как откатишь mkdir -p /var/lib/aaa/bbb? Удалить только bbb? А создался ешё и aaa. Или сразу весь /var грохнуть?
Или как откатить echo 'test' > /etc/fstab?
Alex
Denis 災 nobody
а вообще, если есть шанс что в процессе что-то сломается и надо откатывать - я бы начал с постановки задачи... может лучше взять докер-кубер-квм..
Evgenii
Denis 災 nobody
Evgenii
Понятно, тут шелл и так как крайний случай
Denis 災 nobody
Alex
> большинство модулей таки умеют в откат.
можно примеры откатов для uri, file, lineinfile, copy, template, service ?
Denis 災 nobody
для template помнится оно удалит шаблон. Впрочем, я же сказал большинство а не все, эти - меньшинство.
Denis 災 nobody
там ещё и работу с базами не откатишь
Denis 災 nobody
и повторюсь, иногда стоит начать с постановки задачи.
k
А поделитесь
Задача:
Дать разработчикам ручки для запуск нескольких плейбуков
Кто чем/как решает, какие впечатления?
Alex
Андрей
jenkins вообще идеальный инструмент для всего
k
Jenkins/rundeck как вариант
А rundeck вы используете?
Как там с chatops-плагинами, удобно параметризованную задачу запускать из какого-нибудь slack-а?
Alex
Андрей
Еще есть AWX и если есть бабки, то Tower