Hi All -
I'm trying iterate over a list of dicts stored in an external file.
My variables file (vpc.yml) is as follows:
---
eu-west-1:
stage:
- { name: eu-west-1a, subnet: subnet-832023ea }
- { name: eu-west-1b, subnet: subnet-10272479 }
- { name: eu-west-1c, subnet: subnet-8e2724e7 }
live:
- { name: eu-west-1a, subnet: subnet-cd340ea4 }
- { name: eu-west-1b, subnet: subnet-18272471 }
- { name: eu-west-1c, subnet: subnet-37af955e }
<snip>
And my task definition is:
---
- hosts: 127.0.0.1
connection: local
vars_files:
- vpc.yml
tasks:
- name: Create ASG for each zone
ec2_asg:
name: "{{ component_name }}-{{ environment }}-{{ item.name }}"
availability_zones: [ "{{ item.name }}" ]
launch_config_name: 'lc-1'
min_size: 1
max_size: 10
desired_capacity: 1
vpc_zone_identifier: [ "{{ item.subnet }}" ]
tags:
- Component: "{{ component_name }}"
- ComponentVersion: "{{ component_name }}"
- EnvLevel: "{{ environment }}"
- ClusterName: "{{ cluster_name }}"
- Country: "{{ country }}"
propagate_at_launch: yes
with_items: {{ region[environment] }}
Which I then invoke with:
ansible-playbook create-clustered-persistance-infra.yml --check -i inventory.ini --extra-vars="component_name=elasticsearch environment=stage clustername=eventsearch instance_type=m1.medium country=us region=us-east-1 component_version=9 component_ami=ami-293872"
But receive the error:
TASK: [Create ASG for each zone] **********************************************
fatal: [127.0.0.1] => One or more undefined variables: 'item' is undefined
FATAL: all hosts have already failed -- aborting
I've tried what feels like every combination of brackets and quotes, but I'm clearly missing something.
Any assistance gratefully received.
Ta,
Neil