
sic transit
17.08.2017
13:57:18
на крайняк vault, либо через jenkins credentials
смторя что да как утебя

Oleg ?
17.08.2017
13:58:36
что такое переменная сверху ?)
мне условно надо десяти юзерам сгенрить 10 разных паролей

Google

Oleg ?
17.08.2017
13:59:38
и вывести результат login:pass

sic transit
17.08.2017
14:02:50
нагенери пароли в файл переменных для роли, зашифруй vault'ом
Мне видится странным такой подход к применению паролей, который ты используешь... Может я картины в целом не вижу...
Но я бы через переменные любым подходящим способом просовывал бы пароли ансиблу

Oleg ?
17.08.2017
14:08:02
я понял идею. я хотел чтобы ансибл сам мне все генерил и раздавал пароли юзерам в лупе

sic transit
17.08.2017
14:08:49
А ты бы их потом выдергивал и хранил? :)

Oleg ?
17.08.2017
14:09:38
ну я бы stdout в файл направил :)

sic transit
17.08.2017
14:10:18
хз можно и так,т но мне не нравится

Алексей
17.08.2017
14:19:06
тоже не нра.
хотя так конечно можно но архитектурно херова.

sic transit
17.08.2017
14:19:53
много вопросов возникает с таким подходом
кидай креденшиалсы сверху через переменные
Если останешься при своем, читай внимательнее http://docs.ansible.com/ansible/latest/playbooks_loops.html#using-register-with-a-loop

Google

Oleg ?
17.08.2017
15:13:02
Да в итоге в волт запихнул) слишком много времени ушло на луп

sic transit
17.08.2017
15:15:35


Dmitrii
17.08.2017
15:54:56
Всем привет. А подскажите, в чем проблема может быть. Запускаю плейбук с группой app-В-backend
В inventory лежит следующее:
[tag_Kind_app_A_backend]
[app-A:children]
App-A-backend
[App-A-backend:children]
tag_Kind_app_A_backend
[tag_Kind_app_B_backend]
[app-B:children]
App-B-backend
[App-B-backend:children]
tag_Kind_app_B_backend
В group_vars лежат 2 файла с именами app-A.yml и app-B.yml.
Теперь самое интересное: роль плейбука генерит файл для app-A-backend вместо app-B-backend хотя в плейбуке я явно без всяких интерполяций в hosts: указываю app-B-backend
И еще... если из инвентори убрать любое упоминание об app-A то все становится ок
Единственное, как A и B связаны так это хост тега tag_Kind_app_A_backend и tag_Kind_app_B_backend — одинаковый. Если проблема в этом, то как от этого избавиться? Мне надо запускать один и тот же плейбук на одном и том же хосте с разными группами


lastsky
17.08.2017
16:00:00
убери дефисы, сделай землю
http://docs.ansible.com/ansible/latest/playbooks_variables.html#what-makes-a-valid-variable-name
foo-port, foo port, foo.port and 12 are not valid variable names.

Dmitrii
17.08.2017
16:07:33
Не помогает. Все равно цепляет параметры от другой группы

lastsky
17.08.2017
16:13:11
а, у тебя не ломается... у меня вот ломалось от группы с дефисом. не вариант прописать в плейбуке что-то типа вот такого?
vars_files:
- app_B.yml
и во втором
vars_files:
- app_A.yml

Dmitrii
17.08.2017
16:14:33
Там такое дело, что я понадеялся на ибучий ансибл что он нормльноумеет по группам раскидывать все и сделал один плейбук универсальный с группами на каждое приложение
Т.е. на проде где у меня хосты всегда под каждое приложение разные — все ок, а вот на стейджинге где хост один и где нет смысла заводить столько же машин под каждое не работает даже если я hosts ограничивать пытаюсь

lastsky
17.08.2017
16:15:14
vars_files:
- {{ app_name }}.yml

sic transit
17.08.2017
16:16:02
Ансибл то в чем виноват?

Dmitrii
17.08.2017
16:16:16
Тем что это его базовая функция, не?
Мне нужно генерировать файл, где разные параметры. В каждой группе задано 2 переменных
1) Имя файла
2) Значение
И вы хотите сказать что Ансибл не может такое сделать?
Это полностью вписывается в идеологию. Роль которая генерит файл, для нее применяются параметры либо хоста либо группы.

sic transit
17.08.2017
16:18:09
У меня есть хосты, где куча все разного. Ансибл рулит как нужно

lastsky
17.08.2017
16:18:15
можно и не генерировать файл, а через set_facts прогонять. тут проблема очевидна - приоритет переменных. как её решать - либо писать просто, определяя переменную всегда в одном месте, либо через set_facts.

Google

Dmitrii
17.08.2017
16:18:46
Так а скажите почему переменные из одной группы перетирают переменные из другой группы?
Это действительно как то связано с тем, что корневой тег ссылается на один и тот же хост?

sic transit
17.08.2017
16:19:28
переменные на хост же апплаются

Dmitrii
17.08.2017
16:20:06
Дак проблема в том что я плейбук вызываю не для общей группы а для сабгруппы
Посмотри выше

sic transit
17.08.2017
16:20:50
переменные группы инициировались по хосту, потом переменные второй группы с таким же идентификатором перезаписали по этому же хосту

Dmitrii
17.08.2017
16:22:22
Ок, положим что тут я прострелил себе ногу. Как тогда лучше решить проблему?

sic transit
17.08.2017
16:23:06
Хочешь чтобы кто-то вникал в твою кухню?

Dmitrii
17.08.2017
16:23:28
И не надеюсь :) Но малоли есть совет с наскоку

sic transit
17.08.2017
16:23:51
это же надо курить твой контекст, сам понимаешь

Dmitrii
17.08.2017
16:24:04
Понимаю, проблема не на уровне "сходи в гугл"

Sergey
17.08.2017
16:24:04

Dmitrii
17.08.2017
16:24:22

lastsky
17.08.2017
16:24:30
чем меньше кода и чем он проще - тем легче его поддерживать. совет из этого следует очевидный, но есть те кому такой принцип не нравится.

Dmitrii
17.08.2017
16:24:36
Затык в том что хост один и тот же

sic transit
17.08.2017
16:24:37

lastsky
17.08.2017
16:24:52
назови хост по-разному?

Dmitrii
17.08.2017
16:25:07
Это EC2 инстанс

lastsky
17.08.2017
16:25:20
mysql_stage ansible_ssh_host=1.2.3.4
nginx_stage ansible_ssh_host=1.2.3.4

sic transit
17.08.2017
16:25:34

Google

Dmitrii
17.08.2017
16:25:54
Получается надо лезть в ec2.py патчить ?

sic transit
17.08.2017
16:26:04
нет

Dmitrii
17.08.2017
16:26:24
А как тогда. Я IP адреса динамически получаю

lastsky
17.08.2017
16:26:30
у тебя там в плейбуках хостнейм выставляется так как ты его в ansible написал?
а.

Dmitrii
17.08.2017
16:26:45
tag_Kind_app_B_backend — это и есть "группа"
Амазоновский тег

sic transit
17.08.2017
16:27:58
inventory_hostname для хоста поменяй во второй группе

Dmitrii
17.08.2017
16:28:10
Каким образом?
Не совсем понял

sic transit
17.08.2017
16:28:27
в inventory file

Dmitrii
17.08.2017
16:29:27
А это вообще законно?)

sic transit
17.08.2017
16:29:35
ты мапишь Inventory_hostname на хост в инвентарии 2 раза на хост, хосты останутся прежними, inventory_hostname будут отличаться

Dmitrii
17.08.2017
16:29:55
Щас попоробую, сек

sic transit
17.08.2017
16:30:05
но я бы в целом пересмотрел подход, но попрообуй

Dmitrii
17.08.2017
16:32:33
[app_A:vars]
inventory_hostname=app-A
[app_B:vars]
inventory_hostname=app-B
...
Вот так не помогло

sic transit
17.08.2017
16:33:46
не так

Dmitrii
17.08.2017
16:33:53
А как?
Или к амазоновскому тегу?

sic transit
17.08.2017
16:34:55
к тегу

Google

Dmitrii
17.08.2017
16:37:16
[tag_Kind_app_A]
[tag_Kind_app_A:vars]
inventory_hostname=app-A
[tag_Kind_app_B]
[tag_Kind_app_B:vars]
inventory_hostname=app-B
Вот так тоже непашетЪ
А оно точно по inventory_hostname применяет в конченом счете?

sic transit
17.08.2017
16:38:12
не так, чо у тебя так все запутно?
переменные групп в конце раскидываются какпеременные хоста. Утебя же есть хост, который состоит в 2х группах?

Dmitrii
17.08.2017
16:39:15
Ну вот то что выше это виртуальная группа, которая генерится с помощью ec2.py
Ее имя генерится из значения тега Kind в EC2
Т.к. Kind может быть записан через запятую, а ec2.py сплитнуть, в итоге создается две виртуальных группы которые назначены на один и тот же хост

sic transit
17.08.2017
16:41:25
с твоей схемой, как я ее понял: нужно прийти к тому, чтобы хост, который попадет в 2+ группы получал разный inventory_hostname в каждой группе

Dmitrii
17.08.2017
16:42:12
Ну это прямая дорога править ec2.py. Но это не так уж и страшно
Щас гляну что там назначается.

sic transit
17.08.2017
16:42:31
а ты зачем то пишешь в переменные группы "inventory_hostname"

Dmitrii
17.08.2017
16:42:55

sic transit
17.08.2017
16:42:57
правь, чо

Dmitrii
17.08.2017
16:43:14

sic transit
17.08.2017
16:43:16

Dmitrii
17.08.2017
16:43:33
У нас давно был взят ec2.py стандартный
Он вычитывает теги и вот работает таким образом