Timur
Константин
Господа, реализовываю проект на AWX. Запнулся на 3 шаге... Релизовывал через генерацию новой группы хостов, неполучилось... Может буду идеи куда копать? По идее можно вызвать другой плейбук, с генерированным inventory. Но для этого нужно выдрать private_key из сесси... или я что то не понимаю?
Timur
Константин
можно чуть более равернутее прокомметировать?
Timur
Timur
Timur
а в ansible есть аналог dict.get()? А то мне нужно вытащить подсловарь, а переменная может быть не определена и не хотелось бы сваливаться в эксепшн или плодить when'ы
Константин
задача, сделать динамическое добавлени хоста в имеющийся пул гластера.
Константин
чтоб гластер работал, все хосты пула должны быть в hosts на всех хостах.
Константин
Когда я стартую job, я ничего не знаю о пуле, в который я добавляю новый хост.
Константин
Timur
Константин
отрезаем последнйи символ и дальше сиклом с 1 до 9 ищем хосты которые ответят на nslookup
Timur
Константин
как бы вы сделали?
Константин
Timur
Я бы сделал разворачивание кластера полностью
Timur
Заносим все сервера в инвентарь и накатываем роль
Константин
если у меня 10 изолированных пулов по 5 серверов, это 10 плейбуков, и 10 инвентори файлов ? Я вас правильно понял?
Timur
Timur
посоветуйте плиз, что почитать по итерациям по сложным структурам данных
Timur
у меня есть нечто в духе:
deployments:
service1:
deployment1:
host: somehost
deployment2:
host: somehost2
service2:
...
Anonymous
Timur
и мне нужно уметь как вытащить отдельный деплоймент, так и проитетироваться по всем элементам подмассива
Timur
т.е. пользователь плейбука может указать "service1", а может указать "service1.deployment1" и таск в первом случае должен будет выполниться на всех хостах, тогда как во втором случае будет выбран конкретный хост.
в принципе, реализовать это более-менее можно через split и when, но очень уж коряво получается всё. Вдвойне ситуация усложняется, когда нужно проходиться по deployment'ам в определённом порядке. Этот вопрос решил бы массив (- name: deployment1...), но в таком случае для выбора одного deployment'а нужно будет проходить по всему массиву глядя в определённый ключ
Timur
всё это в итоге весьма коряво получается
Timur
и мне уже не нравится :)
Timur
Anonymous
коллеги поддерживается ли перменные в notify, наприрмер такой таск
- name: enable new app unit
systemd:
name: "example-{{appname}}"
enabled: yes
daemon_reload: yes
notify: "restart example-{{appname}}"
Timur
Timur
И можете группировать их любым удобным образом
Anonymous
понял где ошибся
Timur
По сути это просто теги
Артём
К вопросу о тегах. Пытаюсь добавить плейбуки, выполняемые только когда это явно нужно, при явно заданной переменной или по тегу, потому что в обычных условиях переменная, которая указывает на группу хостов, не задана.
Но ошибка падает в любом случае, даже при явном указании skip-tags.
ansible-playbook test_play.yml --skip-tags do_not_import
---
# test_play.yml
- name: Do not import this
import_playbook: do_not_import.yml
when: nonexistent_group is defined
tags:
- never
- do_not_import
---
# do_not_import.yml
- hosts: '{{ nonexistent_group }}'
tasks:
- name: dbg
debug:
msg: 'Do not run this'
Понятно, что include_playbook не поддерживает when, issue на эту тему есть https://github.com/ansible/ansible/issues/34281
Понятно, что include - статический.
Есть ли работающие способы пропустить плей с неопределённым hosts?
Timur
Anonymous
---
- name: "restart example-{{appname}}"
systemd:
name: "example-{{appname}}"
state: restarted
Timur
К вопросу о тегах. Пытаюсь добавить плейбуки, выполняемые только когда это явно нужно, при явно заданной переменной или по тегу, потому что в обычных условиях переменная, которая указывает на группу хостов, не задана.
Но ошибка падает в любом случае, даже при явном указании skip-tags.
ansible-playbook test_play.yml --skip-tags do_not_import
---
# test_play.yml
- name: Do not import this
import_playbook: do_not_import.yml
when: nonexistent_group is defined
tags:
- never
- do_not_import
---
# do_not_import.yml
- hosts: '{{ nonexistent_group }}'
tasks:
- name: dbg
debug:
msg: 'Do not run this'
Понятно, что include_playbook не поддерживает when, issue на эту тему есть https://github.com/ansible/ansible/issues/34281
Понятно, что include - статический.
Есть ли работающие способы пропустить плей с неопределённым hosts?
Вы хотите странного. Зачем импортировать плейбук, который вы не собираетесь исполнять?
Александр
есть у меня list примерно с таким содержанием:
mylist:
- dir/main.yml
- dir/net.yml
- dir/fs.yml
мне нужен какой-то jinja filter, с помощью которого я могу удалить из list'а по совпадению /main.yml$/
Timur
Александр
кстати знаете что общего между бомжом и девопсом?
Max
шутка про контейнеры?
Александр
Timur
Sergey
ага. И тот и другой копается в контейнерах
Вот за это я бы бан влепил на сути: много чатиков этим раком засраны, так нет - ещё и сюда затащили.
Тут люди серьёзным башсиблом вопроcы решают, удовлетворяя заказчиков неестественными способами, а ты тут с шутками по тридцать.
Timur
Max
щас в честь пятницы еще можно девопсосрач устроить на тему не профессия а половая ориентация
Timur
Sergey
Достаточно шутеек. Остановитесь, пожалуйста.
Alex
сейчас пойдут шутки за 300 :D
Dok
Приветики!
Кто-нибудь думал, что у file: state: absent не бывает ошибок в стандартной таске?
А может!
fatal: [ ipaddr -> localhost]: FAILED! => {"changed": false, "failed": true, "msg": "rmtree failed: [Errno 2] No such file or directory: '/tmp/grafana_src'"}
Dok
- name: Remove junk (local)
file:
path: /tmp/grafana_src
state: absent
delegate_to: localhost
Dok
Как такое может быть?)
Anonymous
Интересно
Anonymous
сижу думаю как описать задачу -
в общем ансибл статрует шелл на удаленном хосте.
Шелл выполняет действие и запускает java процесс.
Шел заканчивает свою работу.
Ансибл тоже отключается - так как шелл то закончен.
но тут начинается самое интересное - через 10 сек запускается вызванный java процесс и выполняет свои действия. И вот их я отследить не могу а так было бы отличано что бы они в ансибл джоб тоже сыпались
Johnny
всем привет, подскажите, можно как-то писать в лог ансибла только PLAY RECAP, а не всего playbook? Гугл к сожалению ответ не дал
Timur
господа, а скрипт dynamic inventory должен выдавать данные в json?
Timur
Anatoliy
Timur
Gleb
Dok
Anonymous
Sergey
Sergey
то бишь башсибл
Andrey
vveare138
гайз, тыкаю плейбук для провижена метрик для приложения на ес2, ансибл 2.9.2. Прикрутил модуль docker, указал ему path где лежит докерфайл, но он ругается, что мол по этому пути файла нет. Пробовал и относительный и абсолютный путь указывать, но чет не помогло.
vveare138
- name: build docker image from Dockerfile
docker_image:
source: build
state: present
name: prometheus
build:
path: docker