Max
можно общие запускать на all
Алексей
Можешь пример плейбука дать?
Max
возьми мой 1й плейбук и замени dbs на all
Max
а роли на то что надо.
Алексей
я когда делал, только ансибл начал осваивать
Max
не важно, я не винипух, никого не виню
Max
иерархия такая: группа хостов это список хостов на который ты хочешь запускать какие то общие роли.
Max
хост может сидеть в нескольких
Алексей
хост может сидеть в нескольких
не согласен, категорически - сложно отслеживать взаимосвязи и аффекты от такого
Max
у тебя сейчас так плэйбук построен, что сложно.
Max
если бы у тебя была последовательность выраженная в плейбуке, было бы не сложно.
Max
дай пример сложности.
Max
сложно отслеживать, если начнешь использовать dependencies между ролями.
Max
в таком режиме как сейчас.
Алексей
я не использую зависимости между ролями
Max
дай пример сложности, не томи.
Max
кстати у вас инвентарь статический или динамический ?
Алексей
в одной группе и в другой какая то одна роль, например фронты для приложения А и фронты для приложения Б. я не могу хост засунуть и туда и туда тк могут быть различные параметры для nginx например и применится не то что мне нужно.
Алексей
кстати у вас инвентарь статический или динамический ?
статика до динамики пока не дошёл, нужно настроить всё нормально, для начала
Max
в одной группе и в другой какая то одна роль, например фронты для приложения А и фронты для приложения Б. я не могу хост засунуть и туда и туда тк могут быть различные параметры для nginx например и применится не то что мне нужно.
имеет смысл выкурить: 1. тему инвентаря (переменные груп через инвентарь, переменные хостов через инвентарь) 2. тему переменных вообще (какие переменные, как перегружаются, и по какой закономерности) 3. тему групп (кого класть в какую группу)
Max
если 1 и 2 выкурено, (может я и не догоняю сложности), то вопрос не должен был стоять.
Max
3 тоже.
Max
ухожу сейчас по делам.
Max
посоветуйся с народом по поводу group_vars и инвентаря тут, думаю будут рады тебе помочь.
Max
в пэйстбин куски того и того
Алексей
потому и не дублирую по группам тк дабы не было сложно отслеживаеммых аффектов при примененни. Я не хочу задмываться о том в какой последовательности идёт применение параметров, мне достаточно, что хост в одной группе и я точно заню, что на него применяется. Потому и в группы вынесен vRoles.
Max
я ушёль
Max
вот чем отличается приложение X от Y?
cent
Коллеги, кто-то дергал helm через ansible? Как указать KUBECONFIG для helm модуля?
Max
через env: KUBECONFIG: /path/to/.kube/myconf не работает?
cent
через env: KUBECONFIG: /path/to/.kube/myconf не работает?
Нет Я и не вижу в pyhelm чтение перменной KUBECONFIG
Max
pyhelm разьве не вызывает библиотеки хельма? это нативная pure python имплементация?
cent
grep KUBECONFIG -niR ./pyhelm
cent
grep KUBECONFIG -niR ./hapi/|wc -l 0 Тут тоже нигде не задается эта переменная
Andrey
cent
А что можно сделать? Я так понимаю, в подобном проекте https://github.com/att-comdev/armada Пихают KUBECONFIG в $HOME/.kube/config Можно конфиг нужно скопировать и подменить хомяк? environment: HOME: some_dir KUBECONFIG: $HOME/.kube/config
Алексей
вот чем отличается приложение X от Y?
не суть важно. У меня были подобные проблемы около года назад, особенно когда есть роли иклудящие другие роли. В общем сложность сразу повышается.
cent
В общем, ansible helm - это явно не production решение
Алексей
Уже подобные костыли реализованы в kubespray
Ну вот я и не хочу каждый раз разбираться что-где-как-куда-зачем, а иметь достаточно чёткое представление на каком этапе что падает и из-за чего.
Asgoret
Всем привет. Кейс: ансибл не делает луп таска с новыми переменными. что можно сделать или куда смотреть? Код таска: --- - name: Deploy route k8s: merge_type: merge verify_ssl: "{{ verify_ssl }}" api_key: "{{ deploy_token }}" host: "{{ master_api }}" state: "{{ state }}" definition: "{{ lookup ('template', 'route.yaml.j2')}}" loop: "{{ route_host|zip_longest(route_port, route_name)|list }}"
Andrey
В общем, ansible helm - это явно не production решение
https://github.com/ansible/ansible/issues/32513 вот когда этот баг закроют, тогда можно задуматься о применении этого модуля
cent
Ну вот я и не хочу каждый раз разбираться что-где-как-куда-зачем, а иметь достаточно чёткое представление на каком этапе что падает и из-за чего.
Если честно, то я не до конца понял о чем идет речь. Но если речь о наследовании кода в ansible, то это есть в kubespray. Как показала практика, это лучший вариант если делать проект такого масштаба как debops
Алексей
проект кубеспрея достаточно сложный и его делают не оди и не два человека. Мне для настройки моей инфры такого не требуется (имхо)
Max
т.е. не нужно найти решение как позволить этому кривому процессу "просто работать". нужно спагетти искоренять.
Stan
как установить и настроить openvpn server с помощью ansible? это сложно?
Алексей
роли инклюдящие роли - это тоже спагетти ансибла. это нарушает separation of concerns.
я допускаю одну-две мультироли которые зависят от окружения. Мне один коллега объяснил почему это бывает иногда здорово и в общем то там где он использовалл - да это отличный вариант. В остальном -ДА я против "спагетти".
Алексей
Ну, так никто же не запрещает срисовать хорошие практики.
пока не вижу применимости этой практики у себя
Andrey
как установить и настроить openvpn server с помощью ansible? это сложно?
если вы знаете по отдельности 1) как устанавливать и настраивать openvpn 2) как пользоваться ansible - то не сложно.
Stan
знаю как в ansible ставить по, и конфиги заливать
Алексей
системными?
Stan
делать плейбук на ansible который будет устанавливать на новом сервере ( можно использовать какой-нибудь DO, linode и тд) OpenVPN сервер, генерировать пару клиентских конфигов и скачивать их на машину админа. Сервер должен подниматься с совершенно пустого состояния до полностью рабочего OpenVPN сервера к которому можно подключиться
Max
системными?
я про опенвпн -) но можно и это тоже.
Andrey
альтернативы там описаны, ну и другие есть, например самому починить этот баг :)
Asgoret
Всем привет. Кейс: ансибл не делает луп таска с новыми переменными. что можно сделать или куда смотреть? Код таска: --- - name: Deploy route k8s: merge_type: merge verify_ssl: "{{ verify_ssl }}" api_key: "{{ deploy_token }}" host: "{{ master_api }}" state: "{{ state }}" definition: "{{ lookup ('template', 'route.yaml.j2')}}" loop: "{{ route_host|zip_longest(route_port, route_name)|list }}"
Решение: ансибл таск: --- - name: Deploy route k8s: merge_type: merge verify_ssl: "{{ verify_ssl }}" api_key: "{{ deploy_token }}" host: "{{ master_api }}" state: "{{ state }}" definition: "{{ lookup ('template', 'route.yaml.j2')}}" loop: "{{ route_name|zip_longest(route_host, route_port)|list }}" Jinja2: .... name: '{{ item.0 }}' .... host: '{{ item.1 }}' ... targetPort: '{{ item.2 }}-tcp' ....
Max
ну и радость. life is like a box of chocolates....
cent
альтернативы там описаны, ну и другие есть, например самому починить этот баг :)
Ну, мне интересно просто знать как все остыльные с этой болью живут? Потому что пока для себя я не вижу альтернативый ansible -> shell -> helm
Andrey
делать kubectl port-forward на время выполнения playbook самое простое
cent
делать kubectl port-forward на время выполнения playbook самое простое
Ну, это вообще не вариант. Получится, что сначала нужно проверить доступность порта, потом через ansible-> shell сначала дернуть kubectl, потом еще проверку навернуть, что порт пробросился. Да и не плохо было бы для каждой таски знать наверняка, что порт все еще активен. И только потом дергать этот кривой модуль... Проще тогда уже сразу через shell дергать helm
Sergey
Почистил про опенвпн, плюс пара РО на сутки.
Andrey
в любом случае костыли какие-то нужны
cent
https://gist.github.com/wknapik/3b93d93053de458fbc2114cd5a7199b6
Да, я об этом и говорю. Это только 1 стадия из четырех.
Andrey
во, ещё можно попытаться скрестить kubectl и helm модули :)
cent
во, ещё можно попытаться скрестить kubectl и helm модули :)
Ну, свой модуль писать - это вообще целый гемор. Потому что проблема не в самом модуле ансамбля, а в зависимых либах Т.е. сначала написать свой hapi с преферансом и секретаршами, а потом еще поверх него и модуль
Andrey
зависимостей не избежать
Andrey
вообще я бы попробовал дописать модуль helm
cent
вообще я бы попробовал дописать модуль helm
Смысл? Если не в нем проблема
Andrey
как раз таки в нём, ему не хватает одной фичи с проксированием порта
cent
как раз таки в нём, ему не хватает одной фичи с проксированием порта
Кому?)) Он ничего не проксирует) Он юзает pyhelm, который hapi, который это не умеет
Andrey
точно. ну тогда pyhelm починить
Andrey
чёрт. ещё питоновский клиент придётся чинить https://github.com/kubernetes-client/python/issues/585