Ansible 在循环中创建模板,可以访问项目
Ansible create template in loop with access to item
我正在尝试为在数组中找到的每个项目动态创建一个新的 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 }}'
除了模板无法访问循环数据外,这非常有效。 (站点)我需要知道站点,以便正确生成模板。
我能够通过使用 {{ 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;
}
我正在尝试为在数组中找到的每个项目动态创建一个新的 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 }}'
除了模板无法访问循环数据外,这非常有效。 (站点)我需要知道站点,以便正确生成模板。
我能够通过使用 {{ 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;
}