Ievgen
все нашел, только там не логи
Ievgen
но тоже ничего
Ievgen
всем спасибо )
Vadim
все нашел, только там не логи
Ara такое вроде умеет, нет?
Ievgen
она родимая
Анекдот.
Добрый вечер. У меня довольно глупый вопрос, но мне нада. Есть-ли у кого-нибудь пример управления (хотя бы простой пинг для начала) контейнеров докера через ansible. Я тут с такой задачей столкнулся, что у меня есть хост и есть дцать контейнеров. Все одинаковые, только открытым портом под ssh отличаются, ну и ip в докерской сети. Как не старался, пингануть их не могу (стандартным ansible all -m ping). По ssh зайти могу на любой из контейнеров, хост пингутеся, т.е. понг в ответ получаю. При разных попытках (к примеру с ключём или с простым паролем) ошибки разные получаю, так что я подумал, что не стоит уточнять, как ошибку исправить, а стоит спросить сначала, как это сделать правильно?
niko
попробуй -vvvv :)
Sergey
Правильно сначала подумать о желаемом результате, потом - о том, как работает проброс сети хоста в доскер, а потом посмотреть на конфигурацию файрвола на хосте (там пинги могут быть тупо запрещены).
Ivan
Ансибл выполняется локально или по ssh
Ivan
чтобы получить pong в модуле ping нужно обеспечить его inventory и возможностью подключиться в хосты
Ivan
и docker не лучший способ для знакомства с ansible
Ivan
Предложу использовать vagrant
Анекдот.
Я уже разобрался, благодарю. Моя проблема была вообще со стороны aws. Короч, я решил пойти работать в макдак
Анекдот.
Я тот же код проверил на виртуалке в parallels и всё сработало
Vlad
Нашел на гитхабе. Вот смотри - https://github.com/vadikgo/ansible-docker-test/blob/master/docker-add-host.yml Там запускается контейнер, добавляется в инвентори и потом к нему применяется обычный плейбук как и по ssh
Vlad
Кстати вопрос - как записывать файлы в том смонтрованный в контейнер? И при этом контейнер запущен в поде кубернетес.
Анекдот.
Перестаньте совать ssh сераер в контейнеры, это нудно только для одного кейса - вызов дьявола. --connection docker же
Я не хотел никого расстраивать, но у меня этот самый ssh и был кейсом =) Что творилось в контейнерах - не важно, это была ООООЧЕНЬ временная замена реальным машинам. Мне просто какой-то добрый человек сказал, что с докерами конфиги ansible получится быстро настроить
Анекдот.
Дело было совсем не в пинге, я ж сказал. Я сначала запускал докер на амазоновском инстансе. Когда запустил докер на виртуалке на своём ноуте, проблем не было. Проблема была в моих кривых руках и aws
Vlad
Задача записывать файлы помимо "основного" процесса контейнера. Процесс в контейнере, ну например mysqld. Делать толстый контейнер с процессом-файловым сервером? Тем-же ssh?
Womchik
снаружи писать в файлики mysql ?
Vadim
Если только один контейнер - то добро пожаловать в ад - systemd, supervisord, tini
Vlad
Так сделай свой кикстарт. У нас так тесты гоняются на baremetal - есть сборка образов из кикстарта, потом beaker, который через console server устанавливает его - и плейбуки добавляют нужное
ansible-pull не используете? В отличие от того-же chef до тех пор пока не запустится ansible и не пробежится по серверам, нельзя быть уверенным что всё работает как надо. И получается как у нас - написал человек плейбук для настройки jenkins но забыл выполнить команду groovy для сохранения. В результате всё отлично работало пока не ночью не перезагрузился сервер и некому было прогнать на нём плейбук.
Анекдот.
А у меня ещё одна странная просьба: а можете накидать какое-нибудь тестовое задание по ansible. Простенькое относительно. А то я с высоты своего ничегонезнания не могу ничего толкового придумать
Александр
Всем привет! Я делаю шаблон конфига и хочу вот такое: {% for item in group_names if '^app_' in item %}{item}{% endif %}{% endfor %}} Но вариант выше не работает, так что я придумал только такое: {% for item in group_names if 'app_' in item %}{% if ( 'dc1' not in item and 'dc2' not in item )}{item}{% endif %}{% endfor %}} Как можно сделать лучше? Т.е у меня в group_names есть dc1_app_name1 и app_name1 и я хочу чтобы в конфиг попал только app_name1.
Ждун
а в ансибле import re есть? тогда просто re.match(regex, content)
bebebe
Спсибо. Попробую такой вариант.
только пробуйте на ansible 2.5.x.x на предыдущих версиях был баг с экртемально низкой производительностью такого решения
Vlad
а в ансибле import re есть? тогда просто re.match(regex, content)
http://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#regular-expression-filters
Artem
Привет всем! Не могли бы подсказать способ проверить запущен ли сервис в linux с помощью ansible
Artem
ранее юзал что то типа - name: check postgresql service shell: systemctl status postgresql | sed -n '3p' register: systemctl - debug: var=systemctl.stdout_lines
Artem
но это не проверка, а лишь вывод 3-й строки состояния сервиса
Stepan T.
Сколько серверов, где нужно состояние сервисов отслеживать?
Artem
после билда инваремента хочу проверить все ли запущено, примерно 20-30 сервисов всего
Stepan T.
Это сервисы или хосты?
Stepan T.
20-30
Artem
хостов с десяток
Artem
на каждом по 2-5 сервисов
Stepan T.
Может посмотришь в сторону Cockpit?
Stepan T.
Ансибл круто, но мне кажется у него другие задачи. Хотя я сам люблю троллейбусы из хлеба собирать.
Stepan T.
Ещё можно ELK собрать, куда лить логи с серверов и по логам ориентироваться в каком у тебя состоянии нужный тебе сервер и сервисы на нём.
Artem
как я понял Cockpit это веб консоль.. ещё один сервис который я не хотел бы прикручивать к проекту
Stepan T.
Ну, позиция понятна
Artem
я хочу получить в результате статус сервисов проекта, у примеру, postgresql : ok
Stepan T.
http://docs.ansible.com/ansible/latest/modules/service_module.html#service-module
Artem
ок, как получить текущее состояние сервиса с помощью этого модуля?
Stepan T.
Возможно взять вот отсюда элемент стартующий сервис, и если ок, то ок, если ченжед, то смотрим в логи, почему не стартовался ранее, а если фэйлд, то смотрим в логи очень быстро и нервно почёсываясь
Artem
идея интересная
Sergey
ок, как получить текущее состояние сервиса с помощью этого модуля?
никак. ансибл - про реализацию заданного состояния. можно запустить с ключом —check, выхлоп подскажет нужное.
Stepan T.
никак. ансибл - про реализацию заданного состояния. можно запустить с ключом —check, выхлоп подскажет нужное.
Это правильнее. Может там нужно, чтбы сервис был, но не был запущен в какой-то момент
Sergey
Это правильнее. Может там нужно, чтбы сервис был, но не был запущен в какой-то момент
Тогда не запускаем плейбук. Ansible - stateless по природе, из непонимания и непринятия этого факта и рождаются троллейбусы.jpg
Stepan T.
Как я и говорил, есть специальные инструменты предназначенные для контроля состояния служб на серверах
Stepan T.
Если предполагается некоторая алертность на 10 серверах, то надо иметь какой-нибудь zabbix или подобное, настроенное под твои задачи.
Artem
Как я и говорил, есть специальные инструменты предназначенные для контроля состояния служб на серверах
на данном этапе мне не нужен глобальный мониторинг, это что то типа юнит тестирования, после сборки проекта ансиблом проверить все ли службы в нём запустились
Artem
"state": "started", "status": { "ActiveState": "active"
Artem
"state": "started", "status": { "ActiveState": "inactive",
Artem
как правильно вынести состояние ActiveState в register ?
Artem
Пытался получить состояние таким образом - service: name: postgresql state: stopped register: 'status.ActiveState' - debug: var=status.ActiveState но вывод один TASK [debug] ******************************************************************************************************************************************************************************************* task path: /home/****/check_status_services.yml:27 ok: [pg1] => { "status.ActiveState": "VARIABLE IS NOT DEFINED!: 'status' is undefined"
Artem
где ошибся, кто подскажет?
Aleksey
register: blabla