Hello Ananda,

Is your number of processes (containers in your case) static? What about 
the ports? do they have a particular generation rule that matters to you?

On Friday, 7 November 2014 16:08:51 UTC+1, Ananda Debnath wrote:
>
> Thanks for looking Michael,
>
> I was looking for an intuitive way for expressing nested variables in this 
> use case.
>
> In my group vars, I specify 3 ec2 region/ami specs:
> ec2_specs:
>   - { region: "us-east-1", ami: "ami-b66ed3de", count: 1, type: "t2.micro" 
> }
>   - { region: "us-west-1", ami: "ami-b56e64f0", count: 2, type: "t2.micro" 
> }
>   - { region: "sa-east-1", ami: "ami-9337828e", count: 1, type: "t2.micro" 
> }
>
> I want to spin up *count* instances of each ami. In *each* of them I want 
> to setup N separate processes that run on different ports:
> process_ports:
>   - { name: "Process_A", hostport: "1443" }
>   - { name: "Process_B", hostport: "2974" }
>   - { name: "Process_C", hostport: "3555" }
>
> To make sure these ports are accessible from the outside world I need to 
> set up ec2 security groups for these instances. *How can I express this 
> by using my group vars rather than hard coding them as I have done below?*
>
> - name: Setup AWS EC2 Security group
>   ec2_group:
>     name: microserver_security_group
>     description: "Security group for microservices"
>     region: "{{ item.region }}"
>     rules:
>       - proto: tcp
>         from_port: 22
>         to_port: 22
>         cidr_ip: 0.0.0.0/0
>       - proto: tcp
>
>
> *        from_port: 1443        to_port: 1443*        cidr_ip: 0.0.0.0/0
>       - proto: tcp
>
>
> *        from_port: 2754        to_port: 2754*        cidr_ip: 0.0.0.0/0
>       - proto: tcp
>
>
> *        from_port: 3555        to_port: 3555*        cidr_ip: 0.0.0.0/0
>     rules_egress:
>       - proto: all
>         cidr_ip: 0.0.0.0/0
>   with_items: *ec2_specs*
>
> Using nesting variables trivially doesn't work:
>
> - name: Setup AWS EC2 Security group
>   ec2_group:
>     name: microserver_security_group
>     description: "Security group for microservices"
>     region: "{{ item[0].region }}"
>     rules:
>       - proto: tcp
>         from_port: 22
>         to_port: 22
>         cidr_ip: 0.0.0.0/0
>       - proto: tcp
>
> *        from_port: "{{ item[1].hostport }}"        to_port: *
> *"{{ item[1].hostport }}"*        cidr_ip: 0.0.0.0/0
>     rules_egress:
>       - proto: all
>         cidr_ip: 0.0.0.0/0
>   with_nested:
> *    - ec2_specs*
> *    - process_ports*
>
> This simply causes 3 separate runs of the same ec2_group command and I end 
> up with a single security group in each region where only the last hostport 
> is exposed (each run overwriting the previous run).
>

-- 
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/bf672a5e-ab59-459b-ac90-546e162466b3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to