@pro_ansible

Страница 560 из 625
Andrey
23.08.2018
10:13:38
я не это имел в виду.

я имел в виду что в переменных (например группы) я укажу хост БД, переменная будет использована для генерации конфига приложения. и одновременно в списке хостов мне нужно будет внести этот же хост (например в группу database) получается что я одну и ту же информацию продублирую. или я чего-то не понимаю или можно этого избежать?

bebebe
23.08.2018
10:17:39
"{{ hostvars[groups['database'][0]].intentory_hostname }}"

Google
Andrey
23.08.2018
10:18:17
а так делают вообще? или я что-то на более высоком уровне неправильно делаю?

bebebe
23.08.2018
10:18:44
я делаю, другие - не знаю

Andrey
23.08.2018
10:19:02
bebebe
23.08.2018
10:26:36
а так делают вообще? или я что-то на более высоком уровне неправильно делаю?
вообще. по идеи, у вас должна быть отдельная dns зона для базы, которая будет CNAME на сервер на котором она непосредственно запущена что-то вроде db-server0 A 10.0.0.63 db-server1 A 10.0.0.64 database CNAME db-server0 как пример, но это уже не оффтопик

bebebe
23.08.2018
10:30:19
у крупных систем (типа шефа) для этих целей используется поиск
а что бы он искал? в примере описанном выше?

Paul
23.08.2018
10:30:35
хосты с ролью сервера БД

bebebe
23.08.2018
10:31:24
типа hostvars['database-role'][0].inventory_hostname ?

Paul
23.08.2018
10:31:36
типа того

но вообще какой именно цели вы хотите добиться?

что именно вы хотите сделать?

Alex
23.08.2018
10:32:06
уменьшить дублируемость кода

Google
Andrey
23.08.2018
10:32:08
избежать дублирования.

Paul
23.08.2018
10:32:26
избежать дублирования.
это инструмент, а не цель

Andrey
23.08.2018
10:32:30
чтобы те, кто будут потом править/адаптировать плейбук проще жили

Paul
23.08.2018
10:32:34
давайте начнем с самого начала, цель

bebebe
23.08.2018
10:33:34
цель проста, поменял в одном месте, не поменял в другом, не консистенность

bebebe
23.08.2018
10:34:04
но я бы все таки настоял, что-бы создавались дополнитеьные dns зоны для разруливания "где сервер"

Andrey
23.08.2018
10:34:29
ну можно и консул сделать и ему инвентори скормить, но хочется без такого оверхеда

bebebe
23.08.2018
10:34:54
это решение не требует консула.

Andrey
23.08.2018
10:35:04
я про днс.

bebebe
23.08.2018
10:35:16
и я про днс

Vadim
23.08.2018
10:35:23
при установке этой самой БД делайте set_fact: db_hostname: foo.example.com и потом читайте этот факт?

Andrey
23.08.2018
10:36:57
и я про днс
я как пример привел - динамическое нахождение сервисов тоже вариант, но на мой взгляд, поднимать DNS если можно сразу все сгенерировать - лишне

bebebe
23.08.2018
10:38:38
такая организация с архитектурной точки зрения правильнее. про "поднимать DNS" не понял пассаж, добавить CNAME запись в зону делается один раз.

Andrey
23.08.2018
10:38:46
но я сделаю сначала как bebebe предложил, еще раз спасибо

bebebe
23.08.2018
10:38:54
и далее изменяется как только у вас база переезжает с одного место в другое

bebebe
23.08.2018
10:39:19
какое доменное имя у вашего компьютера с базой данных?

Andrey
23.08.2018
10:39:40
нету, ip только непубличный

Google
bebebe
23.08.2018
10:41:25
поднимите dns серевер с доменом, .infra, добавьте туда ваши сервера, пропишите в /etc/resolv.conf на ваши машинах все что не .infra, пересылайте forwarding на dns вашего провайдера

это можно сделать подняв один docker контейнер. есть так же роли которые это сделают из коробки

Andrey
23.08.2018
10:42:31
я понял решение. и по вашему это не лишне? не проще сразу при деплое все сгенерировать?

bebebe
23.08.2018
10:43:22
вам виднее безусловно, я полной картины не знаю, может быть вы над домашним проектом работаете и впринципе пофик

Andrey
23.08.2018
10:44:19
потому что в конечном счете конфиг днс тоже будет сгенерирован при деплое и вариант что-то поменять - запустить ansible снова, не предполагается что руками будут лазать. конечно при изменении хоста БД в моем варианте приложениям рестарт понадобится, но для меня это несущественно.

bebebe
23.08.2018
10:45:20
можно делать dnsupdate при изменении вашей инфры https://docs.ansible.com/ansible/2.6/modules/nsupdate_module.html впрочем это уже давно оффтопик

объяснять зачем в 2018 нужен dns как то даже неловко, впрочем как и в 2004

Andrey
23.08.2018
10:45:50
понял, спасибо за пищу для размышлений :)

Sergey
23.08.2018
10:58:51
я имел в виду что в переменных (например группы) я укажу хост БД, переменная будет использована для генерации конфига приложения. и одновременно в списке хостов мне нужно будет внести этот же хост (например в группу database) получается что я одну и ту же информацию продублирую. или я чего-то не понимаю или можно этого избежать?
Здесь нужно понимание решаемой задачи. Если "тупо указать единственный хост БД" - это одно, просто подстановка, как указано выше. Если нужно обеспечивать какую-то балансировку - это другое, и Ансибл не сможет решить за вас, как именно это нужно сделать, а самое главное - зачем. Наиболее очевидный, но и наиболее скучный вариант - клиент умеет перебирать хосты, тогда состав группы серверов БД туда пишется. Менее очевидный и более сложный - есть какая-то внешняя сущность (consul/etcd/zookeeper/younameit), куда клиент обращается с вопросом "дай-ка мне актуальное имя сервера БД".

Andrey
23.08.2018
11:01:56
Здесь нужно понимание решаемой задачи. Если "тупо указать единственный хост БД" - это одно, просто подстановка, как указано выше. Если нужно обеспечивать какую-то балансировку - это другое, и Ансибл не сможет решить за вас, как именно это нужно сделать, а самое главное - зачем. Наиболее очевидный, но и наиболее скучный вариант - клиент умеет перебирать хосты, тогда состав группы серверов БД туда пишется. Менее очевидный и более сложный - есть какая-то внешняя сущность (consul/etcd/zookeeper/younameit), куда клиент обращается с вопросом "дай-ка мне актуальное имя сервера БД".
я понял, спасибо. хотелось именно обойтись без внешней сущности, без service discovery вообще, по крайней мере на первом этапе, сервис не супер большой. возможно DNS и вариант, хотя посмотрев интернет, говорят что он не для этого (хоть и используют так) и нормальный заточенный под это сервис лучше. спасибо за развернутые ответы

Danis
23.08.2018
15:18:33
Использую remote_user, есть способ передать пароль без set facts?

Или любой другой способ указать пароль без facts?

Vladimir
23.08.2018
18:03:58
Есть способ спрятать пароль ansible-vault

Constantin
23.08.2018
18:13:31
Admin
ERROR: S client not available

Paul
23.08.2018
18:39:19
Есть способ спрятать пароль ansible-vault
Судя по постановке вопроса - в голове или пасс-менеджере

Terminator
24.08.2018
06:30:44
@EvgenyLityushkin будет жить. Поприветствуем!

Joseph
24.08.2018
06:31:01
Приветствую друзья!

@varyumin в gitlab в секретную переменную

@varyumin ещё вариант - использовать сертификаты в смарткартах, но прямо с ansible я такого не использовал и полагаю, есть подводныеикамни

Google
Vladimir
24.08.2018
07:05:12
@varyumin в gitlab в секретную переменную
Не совсем она там секретная ? если сделать printenv или env можно ее прочитать

bebebe
24.08.2018
07:44:46
Joseph
24.08.2018
08:12:58
@varyumin да наверное так можно. Разве, что поколжовать над правами доступа как то. Чтобы запустить CI можно было но вывести переменную - нет

Terminator
24.08.2018
11:38:18
@deniswork81 будет жить. Поприветствуем!

den.work
24.08.2018
11:40:53
Коллеги, подскажите, как правильно работать из ансибла с приватными репозитариями в гите ?

bebebe
24.08.2018
11:42:16
Коллеги, подскажите, как правильно работать из ансибла с приватными репозитариями в гите ?
https://docs.ansible.com/ansible/2.5/modules/git_module.html а чем приватный, от не приватного отличается?

ну и первая ссылка из гугла https://www.jeffgeerling.com/blog/2018/cloning-private-github-repositories-ansible-on-remote-server-through-ssh

den.work
24.08.2018
11:43:27
ну может я не до конца понимаю, но условно на удаленом сервере, мне чтобы отклонировать репу, нужен будет приватный ключ, на УДАЛЕННОМ сервере. Куда ложить его не хочется

bebebe
24.08.2018
11:44:10
ssh-agent вам поможет в этом

den.work
24.08.2018
11:44:56
пойду попробую, спасибо за наводку

brestows
24.08.2018
11:48:29
Народ а кто-то сдавал экзамен у red hat по ansible ?

den.work
24.08.2018
12:28:59
Что то не горит он желанием туда форвардится. Сгенерировал ключ. ДОбавил в гит. Добавил в sshagent ключ видется, если сделать обычный git clone с локальной машины - вполне нормально отрабатывает. В конфиг .ssh/config добавил Host 1.2.3.4 ForwardAgent yes

что ему еще не нравится - фиг знает

правда лью с арча на убунту, но по идее в обще фиолетово должно быть

den.work
24.08.2018
12:36:04
причем если сделать через ансибл ssh -T git@github.com You've successfully authenticated, but GitHub does not provide shell access но клонировать ни в какую

в общем само потупило - само завелось

не удобно как то

потом сломалось. Может кому поможет в будущем - очистите ssh ключи агента. Помогает

Terminator
24.08.2018
15:52:36
@Amelion будет жить. Поприветствуем!

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