I believe you need to make 2 changes:
loop.index instead of usenet_servers[server].loop.index
And just use server instead usenet_servers[server] everywhere else. server isn't the index, it is the actual hash/dict.
Hi all--Can anyone help me with do a loop in a template?bcoca helped me earlier on IRC and I think I'm a bit closer than I was before! =](1) variables (layout copied from http://www.yaml.org/start.html)usenet_servers:
- server: astraweb
level: 0
host: ssl-eu.astraweb.com
port: 563
username: me
password: mypass
join_group: yes
connections: 2
- server: newsgroupdirect
level: 1
host: news-eu-ssl.newsgroupdirect.com
port: 563
username: me
password: mypass
join_group: yes
connections: 3
- server: newsgroupdirect
level: 1
host: news.tweaknews.eu
port: 563
username: me
password: mypass
join_group: yes
connections: 10(2) task- name: create nzbget conf file
template:
src=nzbget.conf.j2
dest=/etc/nzbget.conf
mode=660
owner=root
group=library(3) loop in template nzbget.conf.j2{% for server in usenet_servers %}
Server{{ usenet_servers[server].loop.index }}.Level={{ usenet_servers[server].level }}
Server{{ usenet_servers[server].loop.index }}.Host={{ usenet_servers[server].host }}
Server{{ usenet_servers[server].loop.index }}.Port={{ usenet_servers[server].port }}
Server{{ usenet_servers[server].loop.index }}.Username={{ usenet_servers[server].username }}
Server{{ usenet_servers[server].loop.index }}.Password={{ usenet_servers[server].password }}
Server{{ usenet_servers[server].loop.index }}.JoinGroup={{ usenet_servers[server].join_group }}
Server{{ usenet_servers[server].loop.index }}.Connections= {{ usenet_servers[server].connections }}
{% endfor %}(4) desired output from loopServer1.Level=0
Server1.Host=ssl-eu.astraweb.com
Server1.Port=563
Server1.Username=me
Server1.Password=mypass
Server1.JoinGroup=yes
Server1.Connections=2
Server2.Level=1
Server2.Host=news-eu-ssl.newsgroupdirect.com
Server2.Port=563
Server2.Username=me
Server2.Password=mypass
Server2.JoinGroup=yes
Server2.Connections=3
Server3.Level=1
Server3.Host=news.tweaknews.eu
Server3.Port=563
Server3.Username=me
Server3.Password=mypass
Server3.JoinGroup=yes
Server3.Connections=10(5) errorTASK: [nzbget | create nzbget conf file] **************************************
<archpi> ESTABLISH CONNECTION FOR USER: root
<archpi> EXEC ['sshpass', '-d12', 'ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/home/alex/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'Port=22', '-o', 'GSSAPIAuthentication=no', '-o', 'PubkeyAuthentication=no', '-o', 'User=root', '-o', 'ConnectTimeout=10', 'archpi', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1419240488.89-153756188720618 && echo $HOME/.ansible/tmp/ansible-tmp-1419240488.89-153756188720618'"]
fatal: [archpi] => {'msg': "AnsibleUndefinedVariable: One or more undefined variables: list object has no element {'username': 'me', 'level': 0, 'server': 'astraweb', 'connections': 2, 'host': 'ssl-eu.astraweb.com', 'join_group': True, 'password': 'mypass', 'port': 563}", 'failed': True}
fatal: [archpi] => {'msg': "AnsibleUndefinedVariable: One or more undefined variables: list object has no element {'username': 'me', 'level': 0, 'server': 'astraweb', 'connections': 2, 'host': 'ssl-eu.astraweb.com', 'join_group': True, 'password': 'mypass', 'port': 563}", 'failed': True}
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 ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/fab45645-6282-4da9-8125-e94a0b1b053c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.