bebebe
притом что dynamic inventory для хостов в оффлайне - это онлайнер.
curl -sG -X GET -vvvv 'observer0:9080/gw/livestatus' --data-urlencode "q=GET hosts\nColumns: name\nFilter: stat
e != 0" | jq '{"down_hosts": { "hosts": [ .[][0] ] }}'
Alexander
Ansible Tower сейчас ставится на 18.04?
Alexander
(чистая установка с нуля, не обновление)
Alexander
я, видимо, пропустил
Alexander
а давно такая возможность появилась?
Nklya
awx или тавер?
Vadim
вряд ли именно тауэр поддерживается на убутне, но awx - это пожалуйста
Tadeusz
Alexander
вы меня смущаете) а в чём разница между ними?
bebebe
О, прошу прощения. Я про awx толкую
Nklya
бабло
Alexander
http://docs.ansible.com/ansible-tower/latest/html/installandreference/release_notes.html#ansible-tower-version-3-2-4
Alexander
я про вот это
TimeSpaceEnergy
Насколько я знаю, тауер поддерживается только на 16.04
TimeSpaceEnergy
(убунту)
TimeSpaceEnergy
Проверял недавно , с 1.5-2 мес. назад
Alexander
то есть awx и Tower это как Fedora и RHEL?
Vadim
yep
Alexander
а Tower это некая версия awx + какие-то патчи сверху? или это просто awx просто переименованная?
Vadim
патчи
bebebe
Aleksey
bebebe
Aleksey
в ансибле у меня уже привычка таскать с собой рабчие модули. но ядерные не особо потаскаешь
bebebe
в ансибле у меня уже привычка таскать с собой рабчие модули. но ядерные не особо потаскаешь
я это победил так, делаю контейнер base image с ansible нужной версии
от него наследую ansible-envname куда запиихивается inventory и все прочее необходимое
далее каждая плейбука наследуется от ansible-envname:latest
очень удобно в плане деливери.
но если я изменяю первый base image с ansible, мне приходится в CI пересобирать все что от него наследуется и все что наследуется от наследуемого и т.д.
Sergey
Sergey
однако..........
Sergey
ты, видимо, какие-то хитрые модули пользуешь?
kevit
Tadeusz
bebebe
а можно пример докерфайла для плейбуки? выглядит достаточно интересно
да, все достаточно прозрачно:
Базовый image:
https://hastebin.com/fihezaboro.nginx
От него наследуется image для определенного окружения:
https://hastebin.com/zilotahiba.bash
И от него наследуется уже docker image с нужной мне плейбукой:
https://hastebin.com/ojowomekup.sql
завернуто в CI который билдит первый image так:
docker build -t ansible:2.5.0.0 .второй image с данными об окружении:
docker build --build-arg BASE_IMAGE=ansible:2.5.0.0 -t ansible-env:latest .и третий с плейбукой
docker build --build-arg BASE_IMAGE=ansible-env:latest -t foobar-playbook:latest
bebebe
если у вас внедрен и работает CI/CD процесс, то оно пересобирается само, если например поменять первый image
Vadim
но не проще ли подсовывать inventory вольюмом?
bebebe
но не проще ли подсовывать inventory вольюмом?
инвентори для окружений (в том числе и динамические) я храню в докер образах (и в гите соответственно), для фиксации окружения для плейбуков которые запускаются поверх
я подозреваю что это место можно улучшить, но CI решает за меня часть проблем и мне пока норм.
Vadim
Vadim
статические инвентори я бы скорее подсовывал при запуске контейнера (но опять же, я сильно пристрастился к AWX)
bebebe
Vadim
Vadim
bebebe
хмм, интересная идея
Время на внесение изменений увеличивается, но компенсируется довольно большим процентом успешных деплойментов окружения. Все плюсы и минусы CI/CD
bebebe
+ довольно хорошо вырисовывается workflow для ваших окружений и пресловутый life cycle management
Впрочем это уже наверное здесь оффтопик
kevit
Я думаю интересно для любого кто думал про business continuity
kevit
Тут бывает что даже через год восстановить рабочее окружение тяжело. То pip ушатают, то ориджины протухнут
kevit
А вендрить докером или галакси уже религиозный вопрос. Докером оно удобнее)
bebebe
я столкнулся с такой болью:
ansible (2.5.0 в том числе) не умеет параллельно запускать dynamic inventory (в моем случае максимум 6), притом ишуев по этому поводу на гитхабе я не видел
на динамик инвентори уходит сейчас около 20 секунд
и если нужно что-то затестить по быстрому, то приходится их выключать. пушо ansible постоянно их дергает.
bebebe
можно написать собственную оркестрацию, сделав один динамик инвентори и запуская в паралеллии другие - но я пока берегу себя от этой мысли
Nikita
Всем привет, подскажте, а можно ли в модуле copy сделать так, чтобы при копировании файла создавалась директория куда он копируется?
matt
нельзя
matt
и в template нельзя
matt
одной таской создаёшь директорию, другой копируешь файл
Asten
зато дерриктории создаются по всему пути
Nikita
Ок, сенкс
Nikita
А ещё вопрос, можно ли в ansible when: x is search() сделать отрицание? То есть если ли подстрока не найдена, тогда выполнить
bebebe
Nikita
Nikita
when: (ansible_default_ipv4.address is not("192.168."))
bebebe
Nikita
Чтобы or перечислять
Nikita
Не, валится с ошибкой
Nikita
А он разве не элемент целиком будет искать?
bebebe
в этом случае целиком
bebebe
вам нужен match если вы хотите более богато искать
Nikita
Не, мне нужен search чтобы искать подстроку
Nikita
Если я правильно доку прочитал
bebebe
есть несколько способов
array | select('match', '192.168')
или array | join | match('192.168')
Nikita
Эм…для меня, как для человека плохо знакомым с питоном, чет сложновато. Но я ща попробую.
bebebe
Nikita
Nikita
То есть должно быть такое
- debug:
msg: "OK"
when: ansible_default_ipv4 array | join | match('192.168')
?
bebebe
Издалека похоже на правду
Nikita
no filter named 'array'.