я давно забывал спросить.
Вот есть у меня роль, которая настраивает мне пайплайны 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 файлы и темлейты - то где вообще, по-хорошему, это должно валяться? Имею в виду, что священное писание ансибла об этом говорит, ибо путь праведный я пока не находил.
делаешь отдельный ключ 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 )
тогда ты можешь файлы разложить в каталогах групп или хостов и в варсах просто указать к ним путь (или сделать ригидную структуру с конвенцией, что они лежат по каталогу ХХХ внутри инвентори)
вот последнее, в скобочках, мне пока как-то лучше всего в голову укладывается. спасибо
Используй гибридную структуру каталогов. files могут лежать рядом с плейбуками. Конечно, часть пути, зависимую от хоста, придётся дописывать руками (через переменную), но это всё равно лучше, чем замусоривать левыми файлами инвентори.
Обсуждают сегодня