manefesto
inqfen
Вечер
inqfen
Уважаемые, кто знаток лупов
inqfen
Есть получение с инфы по инстансам по тегу
inqfen
на выходе типа stdout типа:
instances: [
{instance_id: 1, data: 1},
{instance_id: 2, data: 2}
]
inqfen
Как запилить луп типа:
- name: super task
task:
for_instance: {{ item }}
loop: {{ inctances.stdout[].instance_id }}
inqfen
короче как реализовать
instances = []
for instance in instances:
instance['instance_id'].action
inqfen
Как для каждого элемента списка по ключу взять значение и использовать его как переменную в цикле? (сформулировал наконец)
Sergey
просто так работать не будет
Sergey
если что
Sergey
для ансибла выхлоп из stdout - недоверенная фигушка, поэтому он не будет рассматриваться как dict
Vadim
Sergey
здесь требуется скрипт динамического инвентори, иначе - боль и унижение
inqfen
stdout_lines?
там словари в листе, упадет на dict не имеет stdout_lines
inqfen
inqfen
Такая мысль меня посещала, мне его все равно писать, иначе костыли получатся, но думал вдруг в loop есть очевидный способ, а я его не знаю
inqfen
Тут конкретно задача в:
1. Взять все инстансы с таким-то тегом
2. Проверить, что они настроены как надо, если нет - добавить в лист для настройки
3. Передать list в таск который их настраивает
Sergey
Sergey
Ансибл делает так: берёт заданные инстансы и настраивает их так, как сказано.
inqfen
Потому что он умеет работать с aws
Sergey
Ну дык там dynamic inventory для AWS есть искаропки
inqfen
Стараюсь сделать если это возможно через ансибл, а вот если нет или костыли, тогда уже свое писать
inqfen
Инвентори это классно, она мне отдаёт что у меня есть с такими-то тегами и вот у меня есть список хостов, а их проверки уже нет
Sergey
Зачем хосты проверять-то? Применил и применил ко всей группе.
inqfen
Ага и хуяк начал прод разом все хосты останавливаться и стартовать
Sergey
эмммм..... почему останавливаться? плейбуки настолько отвратительно написаны?
Sergey
или там башем обмазано?
inqfen
Потому что в aws сменить тип инстанса = остановить, сменить, запустить
Nklya
чет тут попахивает костылями
Sergey
в общем, ты странного хочешь. _очень_ странного, а это не юзкейс ансибла. обычно в случаях странного нужно чинить процессы.
inqfen
Мне кажется вполне нормальный процесс
inqfen
Если инструмент это не умеет без костылей, не значит что процесс плохой как мне кажется
inqfen
Ну в общем подумаю, для удобства видимо нужен скрипт или свой модуль
Nklya
на баше))
Vadim
>Проверить, что они настроены как надо, если нет - добавить в лист для настройки
то есть, реализуете энсибл .... средствами энсибла?
Vadim
а чем add_group не годится тогда?
Анекдот.
Здрасьте. Как оказалось, самые глупые вопросы будут самыми сложными. Можете объяснить такую вещь насчёт ansible-galaxy:
Вот есть у меня инстанс на амазоне и есть у меня чужая ansible-роль. Например эта "ansible-galaxy install geerlingguy.git", которая ставит гит. Так вот, как мне её использовать, чтобы на моём сервере на амазоне появился этот самый гит? Мне нужно эту штуку на сервере запускать, или на локальной машине, имея в хостах мой сервер? Я вообще понять не могу куда и каким боком этот ansible-galaxy пихать
Анекдот.
тут стоит уточнить. Мне не нужно установить именно гит. Мне нужно понять, как ansible-galaxy работает. Если вместо гита будет что-то другое, это не важно
inqfen
Анекдот.
нет. Хочу именно на удалённый сервер
inqfen
Ансибл запускается на одной машине и по ssh идёт на другую выполнять какие либо действия
inqfen
Ну вот, в твоём случае гит должен быть там где ансибл запускается
inqfen
Затем он идёт на целевой хост и ставит там гит
inqfen
А как это сделать в роли и написано
inqfen
Проще почитай сурс роли, сразу станет все понятно
Asgoret
inqfen
На galaxy должна быть если он оттуда тянет
Анекдот.
https://galaxy.ansible.com/geerlingguy/git ссылочка вот
inqfen
Ну вот нажми там github repo и почитай
Vadim
inqfen
Скорее первое (возьму на себя смелость ответить за человека)
Анекдот.
такс. Т.е. мне нужно:
1) скачать командой себе это роль на локальный ПК, с которого ансибл запускается в дирректорию, например /ans_git_role/
2) Создать плейбук, в котором будет что-то типа:
---
- name: MyPlaybook
hosts: all
roles:
- /ans_git_role/
3) Запустить плейбук MyPlaybook.yml самым стандартным образом
Так? Я просто думал, что роль как-то хитро может ссылаться сразу на репозиторий
Vadim
роль всегда будет из локального чекаута, но чтобы не таскать её с собой, нужен ansible-galaxy
inqfen
inqfen
Это практически такой способ просто делиться репами со своей ролью и все
Nklya
Это способ разделять код и подтягивать по необходимости.
Это не всегда про делится
Vadim
он не только гит поддерживает, но в целом - да
Denis
inqfen
Анекдот.
всем спасибо, вы мне очень помогли
Nklya
Кстати, некоторые одаренные личности реально подтягивают роли через git clone
inqfen
Например я, но бизнес требования такие, куча ролей должна оставаться онли внутри
inqfen
Поэтому складирую просто в определённый проект их
Alexander
/help@ansible_ru_bot
Aleksey
/help@ansible_ru_bot
Nikolay
cent
Nklya
неа, он очень одаренный
Евгений
Добрый день. Нужно настроить хосты по ролям, 1 сервер и куча клиентов.
Клиенты на стороне сервера настраиваются индивидуальными файлами.
Инвентори с группами: клиены, сервер.
Плейбук по клиентам - копирует по шаблонам с переменными файлы конфикурации на клиентов.
Не понятно, как сделать цикл по клиентам для роли сервера.
В одном плее можно сделать цикл по группе клиентов, сделать set_fact и вызвать с этими переменными template ?
Или еще думал в плейбуке для клиентов делать delegate_to и в нем уже template.
Есть идеи как лучше подойти к решению?
Udjin
всем привет
Aleksei
Евгений
Три переменные зависят от хоста, ip клиента, хостнейм и пароль, который я беру из файла командами shell
Евгений
Когда таск в роли клиентов - все переменные доступны в плейбуке и динамически от хоста меняются. А в роли сервера - один хост и как брать переменные клиентов - непонятно
Fedor
Привет всем. Возможно ли дергать адреса некоторых сервисов из управляющей системы? например, нтп сервер.
bebebe
Fedor
🤦♂️
Fedor
вопрос к чему. проект может конфигурироваться в разных средах, открытых, закрытых. в случае закрытых могут использоваться кастомные нтп сервера. может ли ансибл дергать это из системного окружения машины, на которой он исполняется, вместо того, чтобы руками их прописывать в варз какие-нибудь?
bebebe
что означает закрытые и открытые среды?
обычная практика что есть описание сред, и плейбук который умеет в это описание