Hello,
I'm trying to figure out how to loop over a variable with with_items and 
pass it to the template module with a different name other than item.

The issue is that I don't want to refer to {{ item }}, {{ item.host }} and 
etc in the jinja2 templates, because it's a terrible variable name outside 
of the context of the task and makes it hard for people looking at just the 
templates to figure out what they're supposed to do. I wasn't able to 
figure out a generic way to set variables inside tasks, so in 1.3, I was 
hacking this behavior with with_items + include, but it was deprecated in 
1.4.

This is what I had:

main.yml:
- include: conf.yml vhost=${item}
  with_items: ${vhosts}

And then in conf.yml:
- name: set up nginx conf for vhost
  template: src={{ vhost.template | default("vhost.conf.j2") }} dest="{{ 
nginx_conf_path }}/{{ vhost.host }}{% if vhost.suffix is defined %}_{{ 
vhost.suffix }}{% endif %}.conf" backup=true
  notify: restart nginx
  tags: nginx

The templates themselves refer to the vhost variable quite often.

I can understand why this was deprecated, it was a strange thing that 
produced strange results that were rather inconsistent (originally I had 
with_items: vhosts up in there, as it should be, but it stopped working 
after an upgrade. I was also using the old, non-j2 syntax vhost=${item} 
because vhost={{item}} didn't seem to work and vhost=item just passed the 
string "item" to conf.yml).

My question is, is there any better way to do what I'm trying to do (and 
compatible with 1.4+, of course)? Sorry if I missed it, I went through all 
of http://www.ansibleworks.com/docs/playbooks_loops.html, but it seems I 
can't get away from having the loop variable called "item."

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to