Vladimir
Я уже 100 раз рассказал же
Anonymous
Может кто подсказать - что не так с инвентори в yaml $ cat inventory.yml all: vm: ubuntu-bay10: ansible_ssh_host: 192.168.80.36 ansible_ssh_user: root $ ansible -i inventory.yml -m shell -a 'uname -a' vm [WARNING]: provided hosts list is empty, only localhost is available $ ansible --version ansible 2.1.1.0
Vladimir
файл hosts ...
Vladimir
А стоп все верно не то
Vladimir
мета для ansible galaxy а не для ansible playbook
Vladimir
и скидывай на пастбин или что то подобное читать не удобно
Nklya
Мета нужна для Галакси, чтобы он сам выкачал
Vladimir
Я уже писал это ему
Vladimir
А playbook ругается значит там и есть проблема с синтаксисом!
Vladimir
ansible-playbook не читает твой файл МЕТА
Nklya
Не читает ансибл плейбук никакую мету. Нахер надо оно ему?
Vladimir
Nklya
Вот и пропиши все в reqyuirements и не занимайся странным
Vladimir
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_reuse_roles.html#using-roles
Nklya
Как говорится, PRs are welcome
Vladimir
Переменные и факты же ну
Nklya
Странные решения рождаются из странных задач
bebebe
что-то утомительно как-то, давай начнем с простого
bebebe
какую проблему вы решаете?
Nklya
Requirements можно делать разные
Nklya
Ну и в разных ветках наверное будут разные requirements?
bebebe
это решается при помощи докер контейнеров, собираете для разных веток, разных репозиториоев контейнеры с разными метками: ansible-env:master ansible-env:stable ansible-env:<COMMIT_ID> запускаете вашу плейбуку так: $ export LABEL=stable $ docker run --rm ansible-env:${STABLE} ansible-playbook /path/to/playbook.yml
bebebe
артефакты в виде контейнеров вам должен деливерить сам CI
Nklya
И что?
bebebe
это один из бест-практисов, либо пригласите в чатик сюда человека который вам инфру делает, я ему объясню за жизнь
bebebe
это абсолютно ровно и хорошо ложится в мой подход которы я описал вам выше
bebebe
еще раз, на мой взгляд, у вас проблема не совсем ансибла, а подхода к процессу, тут скорее нужен @devops_ru чатик или похожее
Nklya
Роли тестируются сами по себе
Vladimir
В gitlab ci есть переменные и инваерменты для таких вещей
Vladimir
Где ты можешь указать если из мастера то такое то делать и такие переменные
Vladimir
Вы решаете проблему CI CD через ansible
Vladimir
https://docs.gitlab.com/ee/ci/environments.html
Vladimir
В gitlab ci все достаточно гибко и просто, а про jenkins я не знаю.
Vladimir
Но думаю там такое тоже решается
Vladimir
Гелакси
Vladimir
Это как github для git
Nklya
Вы прослушали час наркомании
kbks
Господа, такой вопрос возник. Есть кластер с приложением, перед которым стоит nginx в качестве балансировщика. Все ноды кластера прописаны в апстриме. При деплое новой версии приложения надо по одной вытаскивать ноды из апстрима, апдейтить и возвращать обратно. Есть ли какой-нибудь цивилизованный способ это делать?
kbks
мне в голову приходит только костыль с shell: 'sed ...."
Vladimir
Делегировать на хост менять темплейт по ходу я думаю как то так
Vladimir
Для этого нужен consul же
Dennis
подскажите как делать проверку переменной и если её нет то не выполнять блок вот такая конструкция фейлится {% if bgp.network is not undefined %} jfjfjfjfjf {% endif %} такая тоже {% if bgp.network is defined %} jfjfjfjfjf {% endif %}
kbks
пойду посмотрю что есть подходящего в инфре. спасибо.
Tadeusz
покажешь?)
bebebe
Господа, такой вопрос возник. Есть кластер с приложением, перед которым стоит nginx в качестве балансировщика. Все ноды кластера прописаны в апстриме. При деплое новой версии приложения надо по одной вытаскивать ноды из апстрима, апдейтить и возвращать обратно. Есть ли какой-нибудь цивилизованный способ это делать?
Вынесите файл с списком апстримов в отдельный nginx файл. В основной конфигурации сделайте include В ansible добавьте темплейт для списка апстримов Перед проходом по nginx нодам, генерите файл темплейтом исключая ноду которая обновляется
Vladimir
покажешь?)
https://www.nginx.com/blog/service-discovery-with-nginx-plus-and-consul/
Tadeusz
нарисовать на бумаге и я могу
Tadeusz
я про луашный код говорю
bebebe
Вообще у nginx есть health check backend
bebebe
Можно да и openresty
Tadeusz
мне интересно, как consul-template можно заменить lua’шечкой
Andrew
я про луашный код говорю
https://gist.github.com/gmr/82801bf32c62e5fedb3f держи
Tadeusz
благодарствую
Tadeusz
ну это всего-лишь апстримы 🙂
Tadeusz
это не удалит и не добавит новые location’ы, в отличии от consule-template'а
bebebe
можно хоть весь роутинг location'ов в базе держать
Vladimir
https://github.com/weibocom/nginx-upsync-module
Vladimir
А не лучше с плагином тогда собрать nginx и юзать
bebebe
вообщем до сих пор не понятно причем тут ansible
Павел
Доброго времени суток! Подскажите, пожалуйста, есть такая вот хреновина: https://github.com/mobz/elasticsearch-head С помощью Ansible стягиваю на сервер эту репу, Затем его с помощью command: 'npm install' После этого, нужно запустить команду nohup npm run start &. РУчками оно запускается и работает в фоне как надо. Ансибл же не может запустить это, так как привыполнении npm пытается понять, что ж за & такой Ошибка: npm ERR! elasticsearch-head@0.0.0 start: `grunt server \"&\"
Vladimir
https://docs.ansible.com/ansible/latest/modules/npm_module.html
Vladimir
Для npm есть модуль
Sergey
и так делать не надо опять же - делается unit минимальный для systemd.
Nklya
Ансиблом запускать сервисы без системд это успех
Nklya
И будет он бесконечно ждать когда жаваскрипт упадёт
Nklya
Хотя, может даже дождаться
Алексей
Не, ну можно просто в лоб - сделать скрипт с этой командой и запустить его. Всё должно по идее отработать. Костыль конечно.
GithubReleases
ansible/ansible was tagged: v2.6.0rc5 Link: https://github.com/ansible/ansible/releases/tag/v2.6.0rc5 Release notes: New release v2.6.0rc5
kbks
почитаю. спасибо.
kbks
Это что делать перед и после апгрейда ноды. Т.е. в моем случае pre-tasks - убрать ноду из апстрима, и post-tasks вернуть ноду в апстрим после деплоя. Больше интересовало способы как ее убрать. Мне кроме парсинга конфига и релоада нджинкса ничего не приходило в голову.