Раз уж тут выше поднимались вопросы о великом, вспомнил, что

я давно забывал спросить.
Вот есть у меня роль, которая настраивает мне пайплайны logstash. На N хостах создаёт M разных наборов конфигов (часть - через copy (статический файл), часть - template). Когда я это впиливал, я делал "чтобы работало" - и host-specific файлы и j2-темплейты запихнул прямо в роль.

Если говорить о "красивом" и "правильном", то, как я понимаю, по-хорошему мне бы в роли стоило оставить только основные и дефолтные вещи + саму логику, а host-specific штуки убрать из роли и использовать где-то в самом environment'е. Вот только... гляжу я в best practices, а именно в используемую у меня иерархию директорий https://docs.ansible.com/ansible/2.8/user_guide/playbooks_best_practices.html#id12 , и не особо понимаю, так а куда же "по-красивому" я должен это положить.

Или можно даже упростить. Если мне недостаточно host_vars и group_vars, и у меня есть ещё и host-specific файлы и темлейты - то где вообще, по-хорошему, это должно валяться? Имею в виду, что священное писание ансибла об этом говорит, ибо путь праведный я пока не находил.

5 ответов

22 просмотра

делаешь отдельный ключ extra_files и в него под ключами с именами файлов через | фигачишь контент файла

lex-P. Автор вопроса
George Gaál
делаешь отдельный ключ extra_files и в него под кл...

спасибо, но меня, откровенно говоря, пугает необходимость пихать внутрь yaml'а то, что для него вообще не предназначено. несколько нужных мне файлов имеют пару сотен строк. может это дело привычки, конечно, но это мне кажется ещё бОльшим извращением Навскидку нагуглил https://stackoverflow.com/a/32839977/2555979 - вот это мне предварительно намного более симпатично выглядит. (создание руками "files/hostname" внутри environment, и далее их использование в виде - name: Copy any host based file copy: src={{ inventory_hostname }}/file1 dest= /tmp )

lex P.
спасибо, но меня, откровенно говоря, пугает необхо...

тогда ты можешь файлы разложить в каталогах групп или хостов и в варсах просто указать к ним путь (или сделать ригидную структуру с конвенцией, что они лежат по каталогу ХХХ внутри инвентори)

lex-P. Автор вопроса
George Gaál
тогда ты можешь файлы разложить в каталогах групп ...

вот последнее, в скобочках, мне пока как-то лучше всего в голову укладывается. спасибо

lex P.
спасибо, но меня, откровенно говоря, пугает необхо...

Используй гибридную структуру каталогов. files могут лежать рядом с плейбуками. Конечно, часть пути, зависимую от хоста, придётся дописывать руками (через переменную), но это всё равно лучше, чем замусоривать левыми файлами инвентори.

Похожие вопросы

Обсуждают сегодня

Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта