
Dorian
12.04.2018
11:40:04

Maksim
12.04.2018
11:40:37
а причем переменные и роли ?

Sergey
12.04.2018
11:42:06

Dorian
12.04.2018
11:42:26

Google

Maksim
12.04.2018
11:42:57
это как ?
для какого кейса такой изврат нужен ?

Dorian
12.04.2018
11:43:46
Например выполняется роль www, нужно вызвать выполнение роли haproxy на этих же хостах.
Это решается import_role.
Кейс простой, переиспользование плейбуков

Vadim
12.04.2018
11:44:19
мы часто юзаем import_role и УМВР с переменными
часть в инвентори, часть в group_vars

Sergey
12.04.2018
11:44:37

Maksim
12.04.2018
11:45:18
children я так понимаю

Dorian
12.04.2018
11:45:29

Maksim
12.04.2018
11:46:14
- host: webservers[all]
- roles:
- http
- hosts: webservers[balancer]
- roles:
- haproxy

Sergey
12.04.2018
11:46:36

Vadim
12.04.2018
11:46:54

Google

Dorian
12.04.2018
11:46:56

Maksim
12.04.2018
11:47:10
беспрактис гласит что нужно хосты по группа разбивать
лимит не то
и не торт
- hosts: bd
roles:
- backup_db
- hosts: master
roles:
- update_master
- hosts: slaves
roles:
- update_slave
я так делаю

Dorian
12.04.2018
11:50:23
У меня так же

Maksim
12.04.2018
11:51:12
тогда нахер лимиты, просто переосмыслить и сделать правильно
может я не прав

Dorian
12.04.2018
11:52:18

Maksim
12.04.2018
11:52:50
ты в один плейбук всё пихаешь ?

Dorian
12.04.2018
11:53:04

Maksim
12.04.2018
11:53:08
тебя сейчас тапками закидают

Dorian
12.04.2018
11:53:19
В смысле в один ?

Maksim
12.04.2018
11:53:32
тэги как бы моветон
почитай про блоки

Dorian
12.04.2018
11:54:13
Блоки есть
Использую их активно
Тэги нужны для обновления конфигурации.

Nklya
12.04.2018
11:55:13
нано))

Google

Maksim
12.04.2018
11:56:05
я например в плейбуке использую несколько ролей, без тегов
то есть плейбук update_prod у меня вызывает две роли
- backup_db
- update_prod
первая бэкапить БД
вторая бэкапит исходники и собирает мой софт
тэги вообще не использую
типа лучше иметь 10 плейбуков чем 10 ключей у одного плейбука
я всё это дело вкорячил в awx и отдал на откуп прогерам

Dorian
12.04.2018
11:58:21
А как дизастер рековери?

Maksim
12.04.2018
11:58:33
что это такое, слова низвестные

Dorian
12.04.2018
11:58:35
Будешь 10 плейбуков на проект запускать ?

Maksim
12.04.2018
11:58:53
зачем ?

Dorian
12.04.2018
11:59:00
Это когда все наебнулось

Maksim
12.04.2018
11:59:33
ну наебнулось, но через теги импортить роли меня как то не радует совсем
создам роль "restore_from_hell"

Dorian
12.04.2018
11:59:58
Я стараюсь придерживаться универсальности в плейбуках. Чтобы можно были и конфигурить и деплоить

Maksim
12.04.2018
12:00:00
jq
ну твоё дело, только это в итоге делает твои плейбуки менее читаемыми
через полгода не поймешь что сделал

Sergey
12.04.2018
12:01:11

Maksim
12.04.2018
12:01:22
о чем и речь
я отказался от лимитов и тэгов
делают сначала hosts:all а потом через лимит ограничивают
не надо так
https://www.meme-arsenal.com/memes/d90178d4037c0596dbfcb48283b70497.jpg

Google

Maksim
12.04.2018
12:04:07
я кстати так раньше и делал как ты говоришь
тэги и extra-vars рулили

Nklya
12.04.2018
12:04:46
И как тебе теги мешают, если их просто можно не использовать?

Dorian
12.04.2018
12:05:12
Как без тэгов можно рулить конфигурацией ?
Я у freeseacher учился

Maksim
12.04.2018
12:07:25
ну бери меня к себе на работу. придем к консенсусу

Sergey
12.04.2018
12:08:49
я отказался от лимитов и тэгов
на мой вкус - почём зря.
к примеру, у меня есть некоторый набор тегов фиксированный, который есть во всех ролях. таким образом я знаю, что любая роль, будучи запущенной с тегом restart, сделает рестарт сервиса, с configure - приведёт его конфиги к заданному виду, с install - установит сервис в систему, с prepare - штуки типа "притащить на хост толстый внешний архив"
понятно, что почти всегда install,configure.

Maksim
12.04.2018
12:09:16
у меня видимо нет таких задач

Dorian
12.04.2018
12:09:19
на мой вкус - почём зря.
к примеру, у меня есть некоторый набор тегов фиксированный, который есть во всех ролях. таким образом я знаю, что любая роль, будучи запущенной с тегом restart, сделает рестарт сервиса, с configure - приведёт его конфиги к заданному виду, с install - установит сервис в систему, с prepare - штуки типа "притащить на хост толстый внешний архив"
понятно, что почти всегда install,configure.
Поддерживаю

Sergey
12.04.2018
12:10:46
у меня видимо нет таких задач
как говорится - YMMV. при наличии мешка сервисов, и если роли написаны однообразно - здорово помогает поддерживать хозяйство в актуальном виде.

Maksim
12.04.2018
12:11:11
пойду искать интересную работу

George
12.04.2018
12:21:51
Случайно на ноут приехал ансибл 2.5 Было смешно. include_role + delegate_to делают что сказали, но не там, где сказали. Прям как в анекдоте: Я сказал руку. Я сказал левую. Я сказал, накладываем гипс.

Maksim
12.04.2018
12:23:52
откатывайся

kevit
12.04.2018
12:27:35

George
12.04.2018
12:29:47
Сергей, о, расскажи почему. Я как раз думал её внедрять.

kevit
12.04.2018
12:30:30
и в каждом энве 001_local

Kirill
12.04.2018
12:31:29

kevit
12.04.2018
12:32:02
неисключено, это ваше IT весьма небольшое

Google

kevit
12.04.2018
12:34:07
но есть нюансы например у нас билдеры докеризированы

Alex
12.04.2018
12:34:30

kevit
12.04.2018
12:34:34
и systemd превращается в небольшое приключение ( как пример)
начинаются странные вещи типа

Alex
12.04.2018
12:34:43

kevit
12.04.2018
12:34:44
capabilities:
- SYS_ADMIN
privileged: true
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
provisioner:

Alex
12.04.2018
12:34:53
есть специальная магия для этого жеж

kevit
12.04.2018
12:35:00
я про это и говорю
слишком много магии
если нет норм интеграции (которой ни у кого нет)
а запускать ansible-lint можно и из того же пайпа

Vadim
12.04.2018
12:36:42
systemd не нужен privileged емнип, по крайней мере в центосе

George
12.04.2018
12:37:39
Я у себя добился, что проект полностью в lxc способен подняться. Хотя чистый прогон после коммита - жирновато.

Maksim
12.04.2018
12:39:38

George
12.04.2018
12:56:10
Несколько мест, где "контейнеры не сервера" обойдены простым when: ansible_virtualization_type != 'lxc' and ansible_virtualization_role != 'guest'
А дальше просто ansible-playbook -i staging -c lxc site.yaml и поехали.
Плюс container-bootstrap, который их создаёт.
- hosts: containers
gather_facts: no
connection: local
tasks:
- name: Creating container
import_role:
name: lxc_container
tasks_from: create_container
- hosts: containers
gather_facts: no
connection: lxc
tasks:
- name: Preparing container
import_role:
name: lxc_container
tasks_from: prepare_container
сами роли копеечные. Создать контейнер с именем как inventory_name, да поставить python в raw-режиме.