Добрый всем вечер! Скажите пожалуйста, если у меня есть несколько тасков

и какое-то количество из них работает с одной и той же переменной, но переменная это список (условно, один таск создает директорию с названием переменной, второй по шаблону создает файл, внутри у которого используется эта переменная ), то как правильно описать плейбук?
Я сейчас сделал в таком виде:
- hosts: all
tasks:
- name: install nginx
apt:
name: nginx=1.18.0-*
- name: copy nginx.conf
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
- name: create folders for virtual hosts nginx
file:
path: /var/www/{{ item }}
state: directory
loop:
- site1.192.168.1.2.nip.io
- site2.192.168.1.3.nip.io
- site3.192.168.1.4.nip.io
- name: copy index.html to site folder
template:
src: index.html.j2
dest: /var/www/{{ item }}/index.html
loop:
- site1.192.168.1.2.nip.io
- site2.192.168.1.3.nip.io
- site3.192.168.1.4.nip.io

Но мне кажется, что должен быть более элегантный способ, чем каждый раз этот loop повторять со всем списком.
Можно наверно запихнуть сам список в var и подставлять его как переменную в loop, но все же интересно, верен ли сам подход?

9 ответов

19 просмотров

Можно список в переменную, и/или можно эту пару тасков вынести в отдельный файл и в луп поместить include_tasks с ним. Имхо ради двух тасок достаточно просто вынести в переменные.

antifreeze- Автор вопроса
Lamobot
Можно список в переменную, и/или можно эту пару та...

Ну то есть принципиально других подходов нет?

antifreeze
Ну то есть принципиально других подходов нет?

Не, почему же. Есть. Хотите - можно нагенерить все файлы заранее на контроллере и потом через copy прямо директориями скопировать на таргет. Если их много - то будет не очень быстро. Можно файлы нагенерить и запаковать. И в плейбуке передавать архив и распаковывать на таргете.

antifreeze- Автор вопроса
Lamobot
Не, почему же. Есть. Хотите - можно нагенерить все...

Я про саму концепцию - либо луп для каждого таска, либо несколько тасков в файл и инклюд_таскс.

antifreeze
Я про саму концепцию - либо луп для каждого таска,...

Да, к сожалению или счастью только так :)

antifreeze- Автор вопроса

А я бы сказал - задача слишком эфемерная. Если это реально nginx и большой конфиг - проще и быстрее держать конфиг в одном файле. А директории создать на этапе деплоя кода на сервер… Вы же ведь не будете n сайтов такими шаблонами на сервер заливать… Ну а если это просто на поиграться - то loop самое оно

antifreeze- Автор вопроса

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

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

Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Всем привет В общем надо на странице вакансии вывести вакансии с hh, но когда я пишу код в разделе Code ошибка Invalid URL format. The URL should start with the forward slash...
A da
1
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
DataGrip не сканирует почему-то все таблицы, хотя раньше показывал их че за херня, сталкивались?
Magic
9
Это немного оффтоп, но я просто хз куда писать. Как можно решить проблему эту? У некоторых людей автовоспроизведение гифок включено, но все равно подобное вместо гифок
Anton Shvets
1
Помните я тут рассказывал про таролога программистку? Мне выдали новый мем
Magic
6
Карта сайта