Vadim
Денис
Сейчас еще по совету с stackoverflow попробую импортнуть свою инвенторку.
http://docs.ansible.com/ansible-tower/latest/html/administration/tower-manage.html#inventory-import
Но сам awx классный достаточно сложные роли выполнял без ошибки, если это поборим, вообще супер. Да еще и фришный.
Денис
Может кому пригодится, помогла программа для импорта inventory файла. http://docs.ansible.com/ansible-tower/latest/html/administration/tower-manage.html#inventory-import
т.е комманда выглядит так
awx-manage inventory_import —source=stage —inventory-name=destination_name [--inventory-id=]
Это помогло понять принцип.
Группы в группах я создал правильно, но в названиях хостов в этих группах нужно было писать не ip адрес, а dev-elastic-01 и в переменных самого хоста уже указывать: region_name: stage ansible_host: 8.8.8.8
Всем спасибо!
Особая благодарность @vrutkovs
Vadim
Денис
Ну, я только начинаю его использовать, но с разворачиванием, хостов с помощью кода размещенного в Git репозитории справляется на ура. Запуск шаблонов (это ключевое поняние в тавере) можно запускать по расписанию, следить за выполнением и информировать, например в slack о результате работы роли. Сейчас я себе запустил на докере, но можно из коробки развернуть на OpenShift или DockerSwan.
Даня
Кто бота добавил?)
Даня
С защекоинами
simplemice.eth
нету бота
simplemice.eth
это кеш
Даня
Гг
Даня
Простите за спам тогда
Денис
Но пока оставил на докере.. Пока не было времени разбираться с cname и сертификатами для openshift. Хотя попробовал - здорово, прямо с вебки можно управлять контейнерами, смотреть логи + консоль
Vadim
Vadim
ааа, AWX на опеншфит? Ну да, там емнип сразу APB есть для такого
Vadim
впрочем, у меня AWX почему-то не находит некоторые плейбуки
Денис
А где они размещены?
Денис
Ну, плейбуки?
Vadim
https://github.com/openshift/openshift-ansible - в мастер бранче не находил самый главный - playbooks/deploy_master.yml
Vadim
а в release-3.7 находит все, мистика
Денис
Твои плейбуки или для разворачивания?
Vadim
не находил плейбук из этой репы
Денис
У меня развернулся хорошо, но возникли задержки с insecure register в openshift, proxy и cname для контейнеров - пришлось отложить...
Vadim
хммм, интересно. Если не будет лень - пиши баг в эту репу (или багзиллу есть есть редхат суппорт) - постараюсь посмотреть
Anonymous
Sorry to talk in English, i know this is a russian group. I cant speak Russian. I would like to ask how to get a curl response from a website (for example an API query) Thanks
Денис
Я разворачивил с этого репа
Денис
git clone https://github.com/ansible/awx.git
Денис
Vadim
Денис
Денис
Денис
Может найду онлайн
Денис
Да, конечно программа шикарная! Еще и Алексей будет говорить о своем NOCe
Anonymous
Thank you guys
Денис
Денис
Да, уж я понял, если openshift установлен, то tower подымается без проблем с помощью Ansible роли. Говорю не успел разобраться только с insecure register. Т.е. с ним запустил, но как-то не очень в таком виде в продакшн
Денис
Еще просьба, если будеш записывать и если будет такая возможность, запости свою лекцию.
Vadim
окэ, тут зависит от аудитории
Денис
Ну, если будет возможноть!
Aleksey
конфиг pgbouncer предполагает что все базы будут описаны в одном файле несколькими строчками. как сделать из этого reusable role с вызовом роли баунсара по необходимости ?
Aleksey
из лучших идей для каждой из баз которые должны появится надо делать по файлу с срочкой для коннекта. а потом делать для них assemble. но как в этой схеме удалять я не понимаю
Aleksey
тоже вариант. спасибо
Bogdan (SirEdvin)
Возможно, я чего-то не понимаю, по почему не переменной список баз и шаблоном с for?
Bogdan (SirEdvin)
Ну и да, почему не в той же роли?
GithubReleases
ansible/ansible was tagged: v2.5.0rc2
Link: https://github.com/ansible/ansible/releases/tag/v2.5.0rc2
Release notes:
New release v2.5.0rc2
Aleksey
амбула такова, role pgbouncer по идее не должен знать о том какие базы ему проксировать. это должны ему сообщить приложения которые его хотят юзать.
Bogdan (SirEdvin)
Ну, я просто обычно на уровне плейбука добавляю переменные, так как могу позволить селе связность. Просто у вас все равно будет роль для настройки хз связана на то, как был настроен pgbouncer
Aleksey
я тоже обычно так и добавлял. а тут решил поиграть в эту их reusable
Aleksey
хотя конечно всё это сильно напоминает програмирование на конфигах
Bogdan (SirEdvin)
Ну, мне кажется, что завязка все равно будет, пусть даже и неявная. Не знаю, как в конфигах, но в обычном коде это вроде плохой тон.
Aleksey
почти не будет
Bogdan (SirEdvin)
Ну, инфа как он был настроен будет нужна. Как минимум, куда проложить и как перезапустить. Как на меня, уже довольно много.
Aleksey
https://github.com/nocproject/ansible_deploy/blob/microservices/noc_roles/grafanads/tasks/main.yml#L4
Aleksey
вот у меня есть роль которая в графане размещает дашборд
Aleksey
вот обработчик оного
https://github.com/nocproject/ansible_deploy/blob/microservices/system_roles/grafana/tasks/datasources.yml
Aleksey
в итоге исходной роли не надо знать диреткорию графаны и как рендерить шаблон для датасорсов.
а роли графаны неизвестны датасорсы
Bogdan (SirEdvin)
Мне пока сложно понять зачем( Ну и рестарт графаны каждый раз такое себе.
Aleksey
рестарт графаны это необходимое зло пока delegate_to не праивльно работает с handlers
Aleksey
ну и по другому не сделать если роли ставятся на разные хосты. пришлось бы ужаснее херачить.
* в hosts исходной роли прописывать ее вызов на хостах grafana.
* в исходной роли описывать диру графаны
* в исходной роли описывать шаблон
* в исходной роли описывать handler
или же
* в роли графаны описывать все датасорсы.
или же
* делать роль аккамулятор датасорсов.
George
Я проблему рестарта после delegate_to решил с помощью перехвата handler'ов роли (когда include_role, внешняя роль имеет приоритет), и делегированием таски уже из внешнего хэндлера.
George
Плюс я использую restart-флаги. Каждый кусок просто делает флаг "хочу рестарт", а в конце он проверяется в таске с tags: [always] и если надо, рестартит (и трёт флаг).
Aleksey
рестарт флаги норм идея. но пока выглядит будто это шанс потрахаться с синхронизацией
George
Там нет особой сложности:
- name: restart foobar
become: yes
listen: reload foobar
delegate_to: '{{foobar_host}}'
file: path=/var/run/foobar_restart_pending state=touch
run_once: True
А потом в конце:
- name: Check if restart is pending
stat:
path: '{{foobar_restart_flag}}'
register: foobar_restart_pending
- block:
- name: Restart foobar
service: name=foobar state=restarted
- name: Cleaning restart flag
file: path={{foobar_restart_flag}} state=absent
when: foobar_restart_pending.stat.exists
Aleksey
это ты клёва показываешь и оно очевидно работает после начальной инициализации. но начальную инициализацию так не пройти. бывает что сервисы после выкладки конфигов нужно рестартануть что бы они подтянули настройки. а дальнейшие роли предполгаеют что начальная инициализация сервиса пройдена.
Aleksey
такая засада например с postgres. я ему меняю listen. после этого его надо рестартануть. очевидно это handler роли.
Womchik
Вот да. Отделить бы просто рестарт от релоад
Aleksey
там есть финт ушами :)
Aleksey
reload_command: "systemctl reload-or-restart nsqd"
Womchik
Откуда он узнает, что я в конфиге изменил?
Tadeusz
Хендлеры давно не нужны
Tadeusz
Модуль systemd рулед
Womchik
а не bsdшник ли это говорит?
Tadeusz
Не Пох ли? Истина.
Serega
ребят, а подскажите как бы правильно передать переменную в темплейт
переменная
var: "['/backups/{{ansible_hostname}}']"
темплейт
{{ var }}
джинджа упорно приводит к виду
[u'/backups/hostname']
Aleksey
а к чему должна ?
Serega
нужно
['/backups/hostname']
Aleksey
а. тип list?