и какое-то количество из них работает с одной и той же переменной, но переменная это список (условно, один таск создает директорию с названием переменной, второй по шаблону создает файл, внутри у которого используется эта переменная ), то как правильно описать плейбук?
                  
                  
                  Я сейчас сделал в таком виде:
                  
                  
                  - 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, но все же интересно, верен ли сам подход?
                  
                  
                
Можно список в переменную, и/или можно эту пару тасков вынести в отдельный файл и в луп поместить include_tasks с ним. Имхо ради двух тасок достаточно просто вынести в переменные.
Ну то есть принципиально других подходов нет?
Не, почему же. Есть. Хотите - можно нагенерить все файлы заранее на контроллере и потом через copy прямо директориями скопировать на таргет. Если их много - то будет не очень быстро. Можно файлы нагенерить и запаковать. И в плейбуке передавать архив и распаковывать на таргете.
Я про саму концепцию - либо луп для каждого таска, либо несколько тасков в файл и инклюд_таскс.
Да, к сожалению или счастью только так :)
А я бы сказал - задача слишком эфемерная. Если это реально nginx и большой конфиг - проще и быстрее держать конфиг в одном файле. А директории создать на этапе деплоя кода на сервер… Вы же ведь не будете n сайтов такими шаблонами на сервер заливать… Ну а если это просто на поиграться - то loop самое оно
Поиграться - поучиться
Тогда подход норм
Обсуждают сегодня