Ivan
И потом все это попадает в факты из инвентаря на всех последующих стадиях
Я добавил необходимые вещи в сам файл, они там есть. А как достать их оттуда лучше? - name: touch var set_fact: qweqwe: "{{ item.internal_address }}" with_items: "{{ lookup('file', molecule_instance_config) | molecule_from_yaml }}" есть ли способ проще?
Ivan
я пытался как molecule.instance_config.internal_address и не прокатило
Timur
Для примера. У нас инвентарь для динамически создаваемых виртуалок формируется так: - name: Populate instance config dict set_fact: instance_conf_dict: instance: '{{ item.instances[0].tags.instance }}' address: '{{ item.instances[0].private_ip }}' public_ip: '{{ item.instances[0].public_ip | default("") }}' user: '{{ item.instances[0].tags.ssh_user }}' port: '{{ ssh_port }}' identity_file: '{{ keypair_path }}' instance_ids: '{{ item.instance_ids }}' loop: '{{ instance_create.results }}'
Timur
Как видите, есть и паблик адрес, и приватный
Ivan
Да, что-то я мудрю. Спасибо Я подумал, что оттуда ничего не достать, потому что это просто для формирования файла молекулы нужно.
Timur
При любом плее все данные оттуда автоматически попадают в факты
Timur
Если вам нужны именно определенные свойства конкретных хостов, создаваемых на этапе create, то лучше инвентаря сложно что-то придумать
Timur
Если у вас в сценарии есть инстансы разного типа, то их можно добавлять в разные группы, и каждой группе тоже назначать свои наборы дополнительных переменных
Timur
Можете посмотреть на наши универсальные драйвера для AWS как образец
Timur
https://github.com/lean-delivery/ansible-molecule-drivers/tree/master/AWS
Timur
2019 год на дворе
Ivan
дыа? а что вместо него?
Timur
loop: https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#comparing-loop-and-with
Ivan
Вообще я сейчас понял, что мне надо в начале каждого плея переопределять ansible_host переменную. Ибо при старте каждый раз оно берётся из /tmp/molecule/yc_ansible_deploy/ubuntu18/inventory/ansible_inventory.yml
Ivan
1) потому что она указывает на внешний адрес 2) остальной код использует её и рассчитывает, что адрес есть на машине
Timur
Контроллер ансибла подключается к таргетам по какому адресу?
Timur
По внутреннему или по внешнему?
Timur
А внутренний зачем?
Ivan
а код поднимает софт, в конфигах которого есть темплейтинг с биндом на адрес. Софт очевидно хочет биндиться на реально существующий на машине адрес
Timur
Так какой адрес у вас основной? Внутренний или внешний?
Ivan
Так какой адрес у вас основной? Внутренний или внешний?
А что такое основной? Для кода, который я ъочу тестировать — основной внутренний. Для того, чтобы добраться до этой машины молекуле требуется внешний адрес
Ivan
я думал об этой возможности, конечно
Timur
к сожалению, нет
Это плохой феншуй
Ivan
но тогда придётся держать его там 24/7 и платить =)
Ivan
как выделенный воркер для задачи
Timur
Timur
Не гитлаб случайно?
Ivan
спавнить воркер, а потом с него ползать уже?
Timur
Можно встроенные механизмы автоскейлинга юзать
Ivan
Это пока высокая магия Я ещё попробую костыли, чтобы прямо здесь и сейчас А потом сделаю наверное выделенный воркер, да
Timur
У вас яндекс облако?
Ivan
У вас яндекс облако?
Ну конкретно сейчас — да
Ivan
У вас яндекс облако?
А к чему вопрос был?)
Timur
Просто хотел проверить - есть ли готовый солюшн для раннеров на этой платформе
Сергей
всем привет, подскажите как с помощью jinja2 добавить в nginx два конфига для виртуальных хостов используюя один шаблон? никак не могу понять как это сделать
inqfen
Loop с разными dest
checkdiff
Добрый вечер! Предлагаю обсудить кейс: много окружений, плейбуки одинаковые, инвентарь разный. Необходимо убрать копипасту плейбуков и заполнение кучи переменных. Родилась идея хранить базовую версию плейбука в одном репозитории, а в других наследоваться и при необходимости менять переменные, благо group_vars могут быть определены в playbooks(приоритет выше) директории и в inventory. Таким образом можно перетирать" defaults" плейбука. Кажется кейс очевидным и должен решаться многими. Однако сходу подтягивание плейбуков из репозитория аналогично как реализовано для ролей ansible-galaxy не нашел. Вариант держать различный инвентарь в одном репозитори нам не подходит, так как могут быть сторонние взаимодействия клиентов с плейбуками.
Сергей
Спасибо я посмотрю)
CHIP
Спасибо я посмотрю)
нзчт, если что пинай, скину тебе пример переменных
Timur
вот тебе пример http://pastiebin.com/embed/5d6ab2e5979c8
Что это за треш на джиндже?
CHIP
Что это за треш на джиндже?
пацан, покажи круче
Timur
А, понял. Прошу прощения, неправильно понял - на какой пост был ответ
Timur
Для шаблона код норм
Timur
Если плейбук и так один для разных окружений, чего ещё не хватает?
checkdiff
Если плейбук и так один для разных окружений, чего ещё не хватает?
Например 3 окружения: dev, test, prod. Мы заводим 3 репозитория, переопредляем некоторые переменные и едем. Далее сделали еще один сервис, добавили роль, прогнали на деве и пошли все это дело копипастить на тест и прод, а было бы удобнее отнаследоваться от дева, и заменить необходимые специфичные переменные на двух других и все - мы уже на тесте и в проде.
Сергей
нзчт, если что пинай, скину тебе пример переменных
Подскажите где эти item можно найти, я этого не понимаю
CHIP
Подскажите где эти item можно найти, я этого не понимаю
https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html
Антон
Подскажите где эти item можно найти, я этого не понимаю
Если у вас конфиг отличается незначительно (как павило доменным именем и именем серта, то вам проще поставить вместо изменяемых частей переменные и определить их в переменных конкретного хоста
Timur
Можно на примерах показать, что у вас есть и чего вы хотите добиться?
checkdiff
Можно на примерах показать, что у вас есть и чего вы хотите добиться?
Да, завтра пришлю. Пока реализация на сабмодулях думаю самая интересная
Gleb
что мешает положить 3 инвентаря рядом ?
Gleb
Да. Но также и плейбуки хочу отнаследовать, их изменять не собираемся, а копипаста надоела.
концепция ролей вообще не предполагает необходимость их копипасты
Gleb
а плейбуки наследовать чет хз
checkdiff
Логичней держать всё в дефолтах на роли. Например дефолты роли соответствуют дев окружению, дальше что надо переопределять
Да, но если одна роль ставит >1 компонента, то всю настройку приходится держать в плейбуках
Gleb
ну сделай на один энвайронмент 1 инвентарь и вообще все будет в 1 репе жить спокойно
checkdiff
что мешает положить 3 инвентаря рядом ?
Пока этот вариант оставляем на план Б, но в нем все равно много копипасты.