Solved it - had to use "key,value" - here is the revised template:
<VirtualHost *>
{% for site,value in sites.iteritems() %}
ServerName {{ site }}
{% for vhost in value.vhosts %}
ServerAlias {{ vhost }}
{% endfor %}
DocumentRoot /var/www/html/{{ site }}
<Directory /var/www/html/{{ site }}
AllowOverride All
Order allow,deny
Allow from All
</Directory>
{% endfor %}
</Virtualhost>
iteritems() is there to get around the "too many values to unpack" problem.
On Friday, April 8, 2016 at 10:34:16 AM UTC+1, David Goodall wrote:
>
> Hi,
>
> I'm trying to create an Apache vhost config file using a legacy yaml file
> *that I can't change*.
>
> I'm nearly there, but the nested loop in the template doesn't work as
> expected.
>
>
> Here's the yaml:
>
>
> sites:
>
>
> site1.com:
>
> vhosts:
>
> - vhost1.com
>
> - v <http://www.alpha.org/>host2.com
>
> - v <http://brand2014.test.alpha.org/>host3.com
>
> other1: blah
>
> other2: blah
>
> etc
>
> etc
>
> s <http://shop.alpha.org/>ite50.com:
>
> vhosts:
>
> - v <http://shop.alpha.org/>host51.com
>
> - vhost52.com
>
> - v <http://online.alpha.org/>host53.com
>
> other1: blah
>
> other2: blah
>
>
> Here's my play:
>
>
> - name: Populate vhost config
>
> template: src=httpd.j2 dest=/etc/httpd/conf.d/vhosts.conf
>
> with_dict: "{{ sites }}"
>
>
> Here's my template:
>
>
> <VirtualHost *>
>
> {% for site in sites %}
>
> ServerName {{ site }}
>
> {% for vhost in item.value.vhosts %}
>
> ServerAlias {{ vhost }}
>
> {% endfor %}
>
> DocumentRoot /var/www/html/{{ site }}
>
> <Directory /var/www/html/{{ site }}
>
> AllowOverride All
>
> Order allow,deny
>
> Allow from All
>
> </Directory>
>
> {% endfor %}
>
> </Virtualhost>
>
>
> Expected result:
>
>
> <VirtualHost *>
>
> ServerName site1.com
>
> ServerAlias vhost1.com <http://vhost51.com/>
>
> ServerAlias vhost2.com <http://vhost52.com/>
>
> ServerAlias vhost3.com <http://vhost53.com/>
>
> DocumentRoot /var/www/html/site1.com
>
> <Directory /var/www/html/site1.com
>
> AllowOverride All
>
> Order allow,deny
>
> Allow from All
>
> </Directory>
>
> etc
>
> etc
>
> ServerName site50.com
>
> ServerAlias vhost51.com
>
> ServerAlias vhost52.com
>
> ServerAlias vhost53.com
>
> DocumentRoot /var/www/html/site50.com
>
> <Directory /var/www/html/site50.com
>
> AllowOverride All
>
> Order allow,deny
>
> Allow from All
>
> </Directory>
>
> etc.
>
> etc.
>
>
> Actual result:
>
>
> <VirtualHost *>
>
> ServerName site1.com
>
> ServerAlias vhost51.com
>
> ServerAlias vhost52.com
>
> ServerAlias vhost53.com
>
> DocumentRoot /var/www/html/site1.com
>
> <Directory /var/www/html/site1.com
>
> AllowOverride All
>
> Order allow,deny
>
> Allow from All
>
> </Directory>
>
> etc
>
> etc
>
> ServerName site50.com
>
> ServerAlias vhost51.com
>
> ServerAlias vhost52.com
>
> ServerAlias vhost53.com
>
> DocumentRoot /var/www/html/site50.com
>
> <Directory /var/www/html/site50.com
>
> AllowOverride All
>
> Order allow,deny
>
> Allow from All
>
> </Directory>
>
> etc.
>
> etc.
>
--
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].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/2072c47a-9fc7-4d9d-9ba7-21457e7de54c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.