@pro_ansible

Страница 500 из 625
Pavel
26.06.2018
11:42:24
Но тогда я не понимаю, о чём всё же написано в оф. статье https://docs.ansible.com/ansible/latest/reference_appendices/galaxy.html?highlight=galaxy#dependencies

Vladimir
26.06.2018
11:42:54
Что тебе там не ясно ?!

Я уже 100 раз рассказал же

Vasiliy
26.06.2018
11:43:22
Может кто подсказать - что не так с инвентори в 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

Google
Vladimir
26.06.2018
11:44:33
файл hosts ...

Pavel
26.06.2018
11:44:34
То есть нет понимания, зачем прописывать зависимости в "meta/main.yml", если ВСЁ-РАВНО придётся запустить ansible-galaxy перед выполнением всего плейбука? Я надеялся, что в этом случае ansible-playbook скачает зависимости по URL сам.

Pavel
26.06.2018
11:46:55
мета для ansible galaxy а не для ansible playbook
Допустим. Запустил я галакси, он прошёл по мете, скачал зависимости, всё ОК. Следом запускаю плейбук и он мне ругается на синтаксис. Что за дичь...

Vasiliy
26.06.2018
11:47:00
Vladimir
26.06.2018
11:47:03
и скидывай на пастбин или что то подобное читать не удобно

Vladimir
26.06.2018
11:47:27
Я уже писал это ему

А playbook ругается значит там и есть проблема с синтаксисом!

ansible-playbook не читает твой файл МЕТА

Pavel
26.06.2018
11:48:18
Мета нужна для Галакси, чтобы он сам выкачал
Когда не в мете, всё работает. Он из файла requirements.yml берёт и всё выкачивает. А когда в мете. ansible-playbook спотыкается о синтаксис.

Google
Pavel
26.06.2018
11:48:57
ansible-playbook не читает твой файл МЕТА
Как не читает? Он же в роли, которой требуется кластер, так? Значит читает. И запинается.

Nklya
26.06.2018
11:50:01
Не читает ансибл плейбук никакую мету. Нахер надо оно ему?

Pavel
26.06.2018
11:50:51
Не читает ансибл плейбук никакую мету. Нахер надо оно ему?
Ну как же не читает? А другие роли я по вашему зависимые как выполняю?

Vladimir
26.06.2018
11:50:52
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_reuse_roles.html#using-roles

Pavel
26.06.2018
11:52:48
Вот и пропиши все в reqyuirements и не занимайся странным
Это не настолько странное, на сколько будущее. Гораздо более удобным выглядит переключение версий кластера, в зависимостях для каждой роли, чем одна версия кластера из requirements.yml на весь плейбук.

Потому как для одной роли в одном и том же плейбуке я хочу поднять одну версию кластера БД, а для других более старую.

Nklya
26.06.2018
11:53:38
Как говорится, PRs are welcome

Nklya
26.06.2018
11:54:33
Странные решения рождаются из странных задач

Pavel
26.06.2018
11:55:01
Роль другая получается. Причём тут факты. Это как бы другая версия репозитория. Старая версия MySQL, например.

bebebe
26.06.2018
11:55:27
что-то утомительно как-то, давай начнем с простого

какую проблему вы решаете?

Pavel
26.06.2018
11:56:42
какую проблему вы решаете?
В разных ветках разных головных репозиториев, с плейбуками, использовать вспомогательные репозитории, и желательно разных версий.

Вот пример из оф. доки: dependencies: - src: geerlingguy.ansible - src: git+https://github.com/geerlingguy/ansible-role-composer.git version: 775396299f2da1f519f0d8885022ca2d6ee80ee8 name: composer Который бы меня устроил. Но он не работает.

bebebe
26.06.2018
11:58:17
В разных ветках разных головных репозиториев, с плейбуками, использовать вспомогательные репозитории, и желательно разных версий.
это решается при помощи докер контейнеров, собираете для разных веток, разных репозиториоев контейнеры с разными метками: 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

артефакты в виде контейнеров вам должен деливерить сам CI

Google
Pavel
26.06.2018
11:59:06
Ну и в разных ветках наверное будут разные requirements?
Не так. Есть большая ветка с плейбуками. В ней есть один, который зависит от роли из другого репозитория.

Nklya
26.06.2018
11:59:51
И что?

bebebe
26.06.2018
11:59:55
это один из бест-практисов, либо пригласите в чатик сюда человека который вам инфру делает, я ему объясню за жизнь

Pavel
26.06.2018
12:00:49
артефакты в виде контейнеров вам должен деливерить сам CI
Но задача не в этом. А в гибкости синтеза конечного продукта. То етсь основную ветку тестировать со старой версией БД, потом с новой. Потом девелоп ветку со старой, потом с новой. Потом легаси ветку, со старой и новой версией кластера БД. Вот в чём задача.

bebebe
26.06.2018
12:02:06
еще раз, на мой взгляд, у вас проблема не совсем ансибла, а подхода к процессу, тут скорее нужен @devops_ru чатик или похожее

Pavel
26.06.2018
12:03:15
Тут у меня лично, только одна проблема. Я лишь правлю плейбуки и запускаю, некоторые из них пишут сами разрабы. И они хотят выбирать сами без CI, какую версию им использовать, например локально.

Vladimir
26.06.2018
12:03:49
Вы решаете проблему CI CD через ansible

Pavel
26.06.2018
12:04:07
Vladimir
26.06.2018
12:04:16
https://docs.gitlab.com/ee/ci/environments.html

В gitlab ci все достаточно гибко и просто, а про jenkins я не знаю.

Pavel
26.06.2018
12:04:42
Вы решаете проблему CI CD через ansible
Не совсем. Галакси для того и существует.

Vladimir
26.06.2018
12:04:55
Но думаю там такое тоже решается

Гелакси

Это как github для git

Google
Nklya
26.06.2018
12:05:10
Вы прослушали час наркомании

Vladimir
26.06.2018
12:05:25
Pavel
26.06.2018
12:05:26
И ничего из этого не почерпнули)))

Зато приятно пообщаться с умными людьми!

Когда ещё такое повторится :)

Vasyl
26.06.2018
12:06:19
Господа, такой вопрос возник. Есть кластер с приложением, перед которым стоит nginx в качестве балансировщика. Все ноды кластера прописаны в апстриме. При деплое новой версии приложения надо по одной вытаскивать ноды из апстрима, апдейтить и возвращать обратно. Есть ли какой-нибудь цивилизованный способ это делать?

мне в голову приходит только костыль с shell: 'sed ...."

Pavel
26.06.2018
12:08:34
мне в голову приходит только костыль с shell: 'sed ...."
Может где-то есть глобальный список сервисов? Как-то не хорошо парсить работающую конфигу. А потом, после завершения работ заполнять темплейт.

Admin
ERROR: S client not available

Vladimir
26.06.2018
12:08:37
Делегировать на хост менять темплейт по ходу я думаю как то так

Pavel
26.06.2018
12:09:33
Можно и Консул

Денис
26.06.2018
12:10:04
подскажите как делать проверку переменной и если её нет то не выполнять блок вот такая конструкция фейлится {% if bgp.network is not undefined %} jfjfjfjfjf {% endif %} такая тоже {% if bgp.network is defined %} jfjfjfjfjf {% endif %}

Pavel
26.06.2018
12:10:24
Можно вообще сделать чтобы nginx через LUA из Консула запрашивал переодически рабочие конфиги сервисов...

Vasyl
26.06.2018
12:10:41
пойду посмотрю что есть подходящего в инфре. спасибо.

bebebe
26.06.2018
12:10:48
Господа, такой вопрос возник. Есть кластер с приложением, перед которым стоит nginx в качестве балансировщика. Все ноды кластера прописаны в апстриме. При деплое новой версии приложения надо по одной вытаскивать ноды из апстрима, апдейтить и возвращать обратно. Есть ли какой-нибудь цивилизованный способ это делать?
Вынесите файл с списком апстримов в отдельный nginx файл. В основной конфигурации сделайте include В ansible добавьте темплейт для списка апстримов Перед проходом по nginx нодам, генерите файл темплейтом исключая ноду которая обновляется

Vladimir
26.06.2018
12:11:00
покажешь?)
https://www.nginx.com/blog/service-discovery-with-nginx-plus-and-consul/

Artem
26.06.2018
12:11:25
нарисовать на бумаге и я могу

Google
Artem
26.06.2018
12:11:29
я про луашный код говорю

bebebe
26.06.2018
12:12:00
Вообще у nginx есть health check backend

Можно да и openresty

Artem
26.06.2018
12:12:23
мне интересно, как consul-template можно заменить lua’шечкой

Andrew
26.06.2018
12:12:53
я про луашный код говорю
https://gist.github.com/gmr/82801bf32c62e5fedb3f держи

Artem
26.06.2018
12:13:07
благодарствую

Pavel
26.06.2018
12:13:10
покажешь?)
Ты думаешь это оптимальный вариант? Я не знаю, как часто сервисы меняются и т.д. Может лучше будет, чтобы некий вачдог, дёргал nginx с подменой конфигов, через тот же confd. Рекомендую сделать так.

bebebe
26.06.2018
12:13:15
Artem
26.06.2018
12:13:57
ну это всего-лишь апстримы ?

это не удалит и не добавит новые location’ы, в отличии от consule-template'а

bebebe
26.06.2018
12:16:10
можно хоть весь роутинг location'ов в базе держать

Vladimir
26.06.2018
12:16:29
https://github.com/weibocom/nginx-upsync-module

А не лучше с плагином тогда собрать nginx и юзать

bebebe
26.06.2018
12:16:45
вообщем до сих пор не понятно причем тут ansible

Artem
26.06.2018
12:17:39
Павел
26.06.2018
12:36:26
Доброго времени суток! Подскажите, пожалуйста, есть такая вот хреновина: 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
26.06.2018
12:37:42
https://docs.ansible.com/ansible/latest/modules/npm_module.html

Для npm есть модуль

Страница 500 из 625