Is it possible to use a variable as a key in a key:value pair?

19 views
Skip to first unread message

Dayton Jones

unread,
May 19, 2017, 3:53:57 PM5/19/17
to Ansible Project
I'm trying to populate a file based on some default vars and I'm wondering if the following is possible (and if so, how?) because I've been unable to get it to work.

given:
  ansible 2.3.0.0
  python version = 2.7.13 (default, May 10 2017, 20:04:28) [GCC 6.3.1 20161221 (Red Hat 6.3.1-1)]

../defaults/main.yml
hosts:
  - {name: "{{inventory_hostname}}", '{{ansible_ec2_placement_region}}': true, "{{ansible_ec2_placement_availability_zone}}": true, test: true, group1: true}
 
host_groups:
  - name: '{{ansible_ec2_placement_region}}'    
  - name: '{{ansible_ec2_placement_availability_zone}}'
  - name: 'group1'
  - name: 'test'

../templates/groups.cfg
{% for group in host_groups %}
  group_name  {{group.name}};
  members  {{hosts|selectattr(group.name, 'defined')|map(attribute='name')|join(',')}}
{% endfor %}

../tasks/groups.yml
- name: Generate groups
  become: true
  template:
    src: groups.cfg
    dest: "{{object_dir}}/groups.cfg"
    mode: 0644
  with_items:
    - "{{host_groups}}"
 
 

I would like for the template to be converted to:

group_name  test;
members  my.host.name;
 
group_name us-west-2;
members my.host.name;

group_name us-west-2a
members my.host.name;
group_name  group1;
members  my.host.name;

but what I get is:

group_name  test;
members  my.host.name;

group_name  us-west-2;
members ;

group_name  us-west-2a;
members ;

group_name  group1;
members  my.host.name;
 
Reply all
Reply to author
Forward
0 new messages