Возможность создания шаблона в цикле с доступом к элементу - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь динамически создать новый хост nginx для каждого элемента в массиве. Однако мне нужно знать детали цикла.

- name: 'adding sites to nginx'
  template:
    src: 'nginx/template.conf.j2'
    dest: '/etc/nginx/conf.d/{{ item }}.conf'
    owner: 'root'
    group: 'root'
    mode: 0644
  with_items:
    - '{{ sites }}'

Это работает отлично, за исключением того, что шаблон не имеет доступа к данным цикла. (сайты) Мне нужно знать сайт, чтобы я мог правильно сгенерировать шаблон.

1 Ответ

0 голосов
/ 28 октября 2019

Мне удалось получить доступ, используя {{ item }} вместо {{ sites }}.

- name: 'adding sites to nginx'
  template:
    src: 'nginx/template.conf.j2'
    dest: '/etc/nginx/conf.d/{{ item }}.conf'
    owner: 'root'
    group: 'root'
    mode: 0644
  with_items:
    - '{{ sites }}'

Затем в пределах template.conf.j2 вы можете получить доступ к токовой петле, указав {{ item }}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name {{ item }}.{{ domain }};
  set $base {{ app_path }}/{{ item }};
  root $base/public;

  # SSL
  ssl_certificate /etc/letsencrypt/live/{{ domain }}/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/{{ domain }}/privkey.pem;
}
...