Ansible创建模板可循环访问项目

时间:2019-10-28 20:45:31

标签: ansible ansible-template

我正在尝试为数组中找到的每个项目动态创建一个新的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 :(得分:0)

我能够使用{{ 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;
}