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

и какое-то количество из них работает с одной и той же переменной, но переменная это список (условно, один таск создает директорию с названием переменной, второй по шаблону создает файл, внутри у которого используется эта переменная ), то как правильно описать плейбук?
Я сейчас сделал в таком виде:
- 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 ответов

69 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Как думаете через какой сервис они верифицируют?
inc.
5
Добрый день! Подскажите, каким сборщиком фронта для OctoberCMS кто пользуется? Я имею ввиду сборщики, с которыми можно работать по стандартной схеме директорий октября. Я испо...
Николай Афанасенко
2
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
🙋 Ребята, всем привет. Поправил задачу: Нужно каждому новому сообщению (1 раз по каждому юзеру) в чате прибавлять снизу кнопку с предложением подписаться на канал. Как добавит...
Alexander
1
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
Карта сайта