I am wondering how can i append the dictionary with subnet_id as key into 
vpc_result subnets element to look like below. Please find below all the 
tasks, vars and run output.


ok: [localhost] => {
    "vpc_result": [
        {
            "cidr_block": "10.10.8.0/21",
            "igw_id": "igw-0e06eba08c68ebf2b",
            "name": "A",
            "region": "eu-central-1",
            "subnets": {
                "10.10.8.0/24": {
                    "az": "a",
                    "map_public": true,
                    "subnet_id": "subnet-08b6790e6e51b6b78" <--
                },
                "10.10.9.0/24": {
                    "az": "b",
                    "subnet_id": "subnet-0e8512e1ace7ddc1f" <--
                }
            },
            "vpc_id": "vpc-000d7431c4a4f6e83"
        }
    ]
}

# roles/aws/defaults/main.yml

project: killerapp
customer: loser
stage: dev

resource_tags:
  Stage: "{{ stage }}"
  Application: "{{ project }}"
  Created-By: "Ansible for {{ customer }}"

vpc:
  - name: "A"
    cidr_block: "10.10.8.0/21"
    region: "eu-central-1"
    subnets:
      "10.10.8.0/24":
        az: "a"
        map_public: true
      "10.10.9.0/24":
        az: "b"
  - name: "B"
    cidr_block: "10.11.8.0/21"
    region: "eu-west-3"
    subnets:
      "10.11.8.0/24":
        az: "a"
        map_public: true
      "10.11.9.0/24":
        az: "b"

# roles/aws/tasks/main.yml
- name: Create VPC for each region
  loop: "{{ vpc }}"
  include_tasks: vpc.yml
  vars:
    region: "{{ item.region }}"
    name: "{{ item.name }}"
    cidr_block: "{{ item.cidr_block }}"
    subnets: "{{ item.subnets }}"

- name: "Report of generated networking"
  debug:
    var: vpc_result

# roles/aws/tasks/vpc.yml
- name: Create virtual private network for VPC {{ name }}
  ec2_vpc_net:
    region: "{{ region }}"
    name: "{{ name }}"
    cidr_block: "{{ cidr_block }}"
    tags: "{{ resource_tags }}"
  register: created_vpc

- name: Create internet gateway for VPC {{ name }} in {{ region }}
  ec2_vpc_igw:
    vpc_id: "{{ created_vpc.vpc.id }}"
    region: "{{ region }}"
    tags: "{{ resource_tags | combine({'Name': 'VPC internet gateway'}) }}"
  register: created_igw

- set_fact:
    vpc_result: "{{ vpc_result | default([]) + [{
      'name': created_vpc.vpc.name,
      'igw_id': created_igw.gateway_id,
      'vpc_id': created_vpc.vpc.id,
      'region': region,
      'subnets': subnets,
      'cidr_block': cidr_block
    }] }}"

- name: Create subnets in VPC {{ name }} in {{ region }}
  loop: "{{ subnets | list }}"
  loop_control:
    loop_var: subnet
  include_tasks: vpc_subnet.yml

# roles/aws/tasks/vpc_subnet.yml
- name: Create subnet {{ subnet }} for {{ name }} VPC in region {{ region }}
  ec2_vpc_subnet:
    vpc_id: "{{ created_vpc.vpc.id }}"
    region: "{{ region }}"
    cidr: "{{ subnet }}"
    tags: "{{ resource_tags | combine({'Name': subnet, 'Type': 
subnets[subnet].map_public|default(false) | ternary('public', 'private')}) 
}}"
    az: "{{ region }}{{ subnets[subnet].az }}"
    map_public: "{{ subnets[subnet].map_public | default(false) }}"
  register: created_subnet
  retries: 3
  delay: 5

- debug:
    var: created_subnet.subnet.id

# output
❯ ansible-playbook aws.yml

PLAY [localhost]
***********************************************************************************************************************************************************************************************************************************************************************************************************

TASK [roles/aws : Create VPC for each region]
******************************************************************************************************************************************************************************************************************************************************************************
included: 
/Users/tmihalicek/projects/ansible/bjesomar/roles/aws/tasks/vpc.yml for 
localhost => (item={'name': 'A', 'cidr_block': '10.10.8.0/21', 'region': 
'eu-central-1', 'subnets': {'10.10.8.0/24': {'az': 'a', 'map_public': 
True}, '10.10.9.0/24': {'az': 'b'}}})
included: 
/Users/tmihalicek/projects/ansible/bjesomar/roles/aws/tasks/vpc.yml for 
localhost => (item={'name': 'B', 'cidr_block': '10.11.8.0/21', 'region': 
'eu-west-3', 'subnets': {'10.11.8.0/24': {'az': 'a', 'map_public': True}, 
'10.11.9.0/24': {'az': 'b'}}})

TASK [roles/aws : Create virtual private network for VPC A]
****************************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : Create internet gateway for VPC A in eu-central-1]
*******************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : set_fact]
************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : Create subnets in VPC A in eu-central-1]
*****************************************************************************************************************************************************************************************************************************************************************
included: 
/Users/tmihalicek/projects/ansible/bjesomar/roles/aws/tasks/vpc_subnet.yml 
for localhost => (item=10.10.8.0/24)
included: 
/Users/tmihalicek/projects/ansible/bjesomar/roles/aws/tasks/vpc_subnet.yml 
for localhost => (item=10.10.9.0/24)

TASK [roles/aws : Create subnet 10.10.8.0/24 for A VPC in region 
eu-central-1]
*********************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : debug]
***************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "created_subnet.subnet.id": "subnet-0e8512e1ace7ddc1f"
}

TASK [roles/aws : Create subnet 10.10.9.0/24 for A VPC in region 
eu-central-1]
*********************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : debug]
***************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "created_subnet.subnet.id": "subnet-08b6790e6e51b6b78"
}

TASK [roles/aws : Create virtual private network for VPC B]
****************************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : Create internet gateway for VPC B in eu-west-3]
**********************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : set_fact]
************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : Create subnets in VPC B in eu-west-3]
********************************************************************************************************************************************************************************************************************************************************************
included: 
/Users/tmihalicek/projects/ansible/bjesomar/roles/aws/tasks/vpc_subnet.yml 
for localhost => (item=10.11.8.0/24)
included: 
/Users/tmihalicek/projects/ansible/bjesomar/roles/aws/tasks/vpc_subnet.yml 
for localhost => (item=10.11.9.0/24)

TASK [roles/aws : Create subnet 10.11.8.0/24 for B VPC in region eu-west-3]
************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : debug]
***************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "created_subnet.subnet.id": "subnet-06f30eb3f764c6f0c"
}

TASK [roles/aws : Create subnet 10.11.9.0/24 for B VPC in region eu-west-3]
************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [roles/aws : debug]
***************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "created_subnet.subnet.id": "subnet-01b797ba47beb350e"
}

TASK [roles/aws : Report of generated networking]
**************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "vpc_result": [
        {
            "cidr_block": "10.10.8.0/21",
            "igw_id": "igw-0e06eba08c68ebf2b",
            "name": "A",
            "region": "eu-central-1",
            "subnets": {
                "10.10.8.0/24": {
                    "az": "a",
                    "map_public": true
                },
                "10.10.9.0/24": {
                    "az": "b"
                }
            },
            "vpc_id": "vpc-000d7431c4a4f6e83"
        },
        {
            "cidr_block": "10.11.8.0/21",
            "igw_id": "igw-0e11aad5926a77e02",
            "name": "B",
            "region": "eu-west-3",
            "subnets": {
                "10.11.8.0/24": {
                    "az": "a",
                    "map_public": true
                },
                "10.11.9.0/24": {
                    "az": "b"
                }
            },
            "vpc_id": "vpc-010721abf4a235e03"
        }
    ]
}

PLAY RECAP
*****************************************************************************************************************************************************************************************************************************************************************************************************************
localhost                  : ok=21   changed=0    unreachable=0    failed=0 
   skipped=0    rescued=0    ignored=0

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/faa1d4bc-ed7b-43b0-bd9d-60beafb6595en%40googlegroups.com.

Reply via email to