
Dmitry
07.07.2017
06:34:09
Можно vault юзать
Если прямо очкуешь
Делать роль, класть ключи в files
А там уже опционально волтом

Google

Andrey
07.07.2017
07:06:24
По-моему вполне нормальная практика хранить публичные ключи в открытом виде

Bogdan
07.07.2017
07:51:42
Я вообще lineinfile юзаю

Dmitrii
07.07.2017
08:23:27
https://github.com/%USERNAME%.keys
Высрет все ключи для юзера
А, перепутал гит и гитхаб ) Но не беда. Этот вариант тоже может быть полезным :)

lastsky
07.07.2017
09:09:27
gitlab вроде также ключи отдаёт

Ricky-Ticky
07.07.2017
09:18:24
подтверждаю. gitlab точно так же отдает ключи

Bogdan (SirEdvin)
07.07.2017
09:29:43
Лол, буду знать

Hackru
07.07.2017
09:30:28
надо сразу в роли с гитхаба брать ключи
а задавать только логины
:)


Roquie
07.07.2017
10:39:02
Как в ansible организовать структуру так, чтобы деплой был возможен и с рабочего компа, и из CI? Поясню. У меня в инвентаре расписана прод-конфигурация, у которой изменены значения путей до файлов проекта. То есть для CI одни пути до файликов, для деплоинга прода из моего компа другие. Не могу организовать структуру конфигов так, чтобы оба файла прод-конфигурации не дубдировались. Нужно что-то типа инклюда из базового прод-конфига в 2 конфига под разные системы. Никто таким не маялся?
inventory
-- group_vars
---- local.yml
---- prod-ci.yml -> здесь отличается только пара переменных и все, а по факту копипаста
---- prod-local.yml -> здесь отличается только пара переменных и все, а по факту копипаста
-- hosts
Хотелось бы иметь какой-нить base-конфигурашку, чтобы различные параметры подтянуть в спец. конфиги под систему. Есть какие идеи? Ни лимит групп (как здесь), ни разбивка по разным файлам инвентарей не помогла.

Google

lastsky
07.07.2017
10:41:28
в репозиторий с кодом для каждого микросервиса кладётся плейбук, который его билдит и катит из ci на dev/stage/prod. через плей с local_action скрипт синхронизирует локально inventory и перешифровывает vault для ci. среда куда катить задаётся переменной. кнопка в ci = среда, из которой вызывается плейбук, куда подставляется переменная.

Roquie
07.07.2017
10:41:31
Думаю уже над этим, хотя может есть решение получше
http://docs.ansible.com/ansible/include_vars_module.html

lastsky
07.07.2017
10:43:16
inventory может быть папкой, -i inventory-prod/ (а там файлы)

Roquie
07.07.2017
10:47:45
Как раз сейчас так и сделано, через папку. Но проблема не в том, куда положить. А в том, что конфигурашка дублируется. То есть, если я деплою через CI, работает папка inventory-prod, если через свой комп (CI - сломался, например), работает папка inventory-prod-local, чтобы он мог взять файлики из нужных папок. При этом получаем полную копию yml-конфигов для продакшена. То есть, если я захочу сменить ключик мандрилла, обязан это делать в двух местах.

lastsky
07.07.2017
10:48:24
а vault у тебя тоже одинаковый в ci и локально?

Roquie
07.07.2017
10:49:49
Его пока нет, но допустим он одинаковый.

lastsky
07.07.2017
10:51:03
просто тогда один любой сотрудник забыл ноут в кафе - меняй все пароли, называется...

Roquie
07.07.2017
11:03:43
ну это да, но тем не менее, удобнее проверять работоспособность написанных тасков на локальной машине, а не делать по 100 коммитов в гит и затем сквэшить ...

Константин
07.07.2017
13:24:22
сотрудники с ноутбуками должны уметь в полнодисковое шифрование - утечка кода с прода это как-то хуже, чем пароли от ансибла

lastsky
07.07.2017
13:31:17
выкатить такой же прод и попасть на готовый прод - из двух зол меньшее.
нашел в коде: {{ item.item.item }}
работает.

Алексей
07.07.2017
23:13:31
отпизди сам себя.

lastsky
07.07.2017
23:13:50
уже.
кто писал - не найти. (и это хорошо)

Алексей
07.07.2017
23:14:30
git blame не ?

lastsky
07.07.2017
23:15:32
не, не найти. при миграции в новый gitlab .git папка потерта оказалась.

Алексей
07.07.2017
23:15:55
а. ну ладно. так и запишем. заметал следы.

Kirill
07.07.2017
23:31:24

Google

lastsky
07.07.2017
23:32:39

Kirill
07.07.2017
23:33:46
просто прими как есть, выпей пивка
и найди того. кто позволил себе сделать это.

Konstantin
08.07.2017
18:37:52
пипл, чот нифига придумать не могу, можно как-то вытащить адресс конкретного физ интерфейса?
или только явно ens160, eth0?

nikoinlove
08.07.2017
18:39:54
А что для тебя конкретный интерфейс?)

Konstantin
08.07.2017
18:41:23
ну хз, номер? )
ну если брать стандартную практику:
1. wan
2. lan
как ансиблом выбирать нужный?
!= default? :)
{{ ansible_all_ipv4_addresses | ipaddr(my_network)| first }}

Kirill
10.07.2017
13:44:10
А подскажите-ка, сработает ли такой финт ушами
with_dict: "{{ some_tasks }}"
register: task_result[{{ item.name}}]

Kirill
10.07.2017
13:44:50
дабы результаты для каждого таска из with_dict в отдельный кусок массива сложить?
или может есть более разумные методы?
а-то если любой из тасков возвращает changed - весь task_results = changed

lastsky
10.07.2017
13:47:47
у тебя хэндлеры зависят от этого? вешать их только на нужные таски...
есть ещё changed_when: false когда ты точно знаешь что какой-нибудь shell command ничего не поменяет (остерегайтесь таких людей)

Kirill
10.07.2017
14:01:09
Не совсем, там таска, которая выполняет ряд задач
возвращает task_results, в котором
"changed": true,
"msg": "All items completed",
"results": [
.......
]

Max
10.07.2017
14:03:05
ммм
программирование на конфигах
если ничего не сломали в эту сторону, то не сработает

Google

Kirill
10.07.2017
14:04:14
а в резалтах пакован результатов, которые не именованы, т.е. типа
{
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_parsed": true,
"actions": [],
"changed": false,
и в нём есть
"item": {
"key": "task-postgres-execute",
но я не могу в следующей таске сделать when: task_results.%taskname%.changed
пушшо секции идут просто списком

Admin
ERROR: S client not available

Kirill
10.07.2017
14:05:45
хотя, можно попробовать итерировать with_items: task_results.results, там-же есть changed....
Всё, спасибо, кажется я понял как это проитерировать :)

lastsky
10.07.2017
14:08:46
правильнее делать кучу мелких тасков. нужным таскам - нужные results. потом по ним логику, если там всё так сложно.
не стоит вешать на ansible задачи пакетного менеджера который хитро катит postgres.
впрочем, я всего кода не видел, предполагаю только.

Алексей
10.07.2017
14:11:20
А можно применить роль не создавая yaml файл?

Kirill
10.07.2017
14:28:02

lastsky
10.07.2017
14:29:21
здесь уже сказали что делать.

Kirill
10.07.2017
14:34:06
Придётся, что-ж делать...

Serge
10.07.2017
15:52:41
Pyventory 2.1 is out https://t.me/SergeMatveenko/20

Hackru
10.07.2017
16:52:09
вот это они борзые
есть кто на венду ансибл натравливает?
win_copy так и должен как черепаха работать?
20МБ уже минут 10 льёт в локальной сети

veff
10.07.2017
17:36:27
я из под винды натравливаю ансибл на винду на локалхосте

Google

veff
10.07.2017
17:37:01
из под msys2
ебала конечно. но по работе надо )

Hackru
10.07.2017
17:37:49
короче win_copy по чанку маленькому упаковывает в base64 и трансферрит
ессна по таймауту отваливается если файл больше пары килобайт
как вообще можно так жить
как в фидонет вернулся
uue в файлэху

Dmitry
10.07.2017
17:40:41
каждый раз, когда у подоконных мышевозов от боли взрывается пердак, где-то в Африке выздоравливает больной ребенок, а на Чукотке - больной котенок :)

Hackru
10.07.2017
17:42:13
ну мне для дела
fatal: [TEST01]: FAILED! => {"changed": false, "failed": true, "msg": "PowerShellCommunityExtensions PowerShell Module (PSCX) is required for non-'.zip' compressed archive types.", "win_unzip": {}}