Hi All,

I have noticed a “strange” behaviour in one of my playbooks that use the 
ec2_vpc module. After changing how to input data the output format changed.

I’m not sure if this is expected or not but couldn’t find any documentation 
around it. Perhaps someone encountered the same scenario before ?

Let me explain.

I had a playbook to create a VPC that I was using variables for CIDR Block, 
Internet Gateway (yes/no) and two Tags (Name and Environment). After running 
the playbook I was able to retrieve the vpc_id from {{ ec2_vpc_out.vpc_id }}.


Request — without using with_items:

 35     # create the VPC
 36     - name: VPC | Create the required VPC
 37       ec2_vpc:
 38         aws_access_key: "{{ aws_access_key }}"
 39         aws_secret_key: "{{ aws_secret_key }}"
 40         region: "{{ aws_region }}"
 41         state: present
 42         cidr_block: "{{ aws_vpc_cidr_block }}"
 43         resource_tags:
 44           Name: "{{ aws_vpc_name }}"
 45           Environment: "{{ aws_vpc_subnet_envname }}"
 46         internet_gateway: "{{ aws_vpc_internet_gateway }}"
 47         subnets:
 48           "{{ my_subnets }}"
 49         route_tables:
 50           "{{ aws_route_table_info }}"
 51       register: ec2_vpc_out

Response — without using with_items:

ok: [localhost] => {
    "msg": {
        "changed": false,
        "igw_id": "igw-dddddddd",
        "subnets": [
            {
                "az": "ap-southeast-2a",
                "cidr": "10.125.0.0/24",
                "id": "subnet-bbbbbbbb",
                "resource_tags": {
                    "Environment": “Test",
                    "Name": “Subnet-Test-A",
                    "TierName": “Test",
                    "TierType": “Test"
                }
            },
(…)
        ],
        "vpc": {
            "cidr_block": "10.125.0.0/16",
            "dhcp_options_id": "dopt-99999999",
            "id": "vpc-55555555",
            "region": "ap-southeast-2",
            "state": "available"
        },
        "vpc_id": "vpc-55555555"
    }
}


I changed this playbook to read those variables for CIDR Block, Internet 
Gateway (yes/no) and two Tags (Name and Environment) from a dictionary and 
after this the output format changed.

Dictionary:

 19 aws_vpc_info:
 20   - cidr_block: "{{ aws_vpc_cidr_block }}"
 21     vpc_internet_gateway: yes
 22     resource_tags:
 23         Name: "{{ aws_iac_fullstackname }}-{{ aws_nc_vpc }}"
 24         Environment: "{{ aws_vpc_subnet_envname }}"
 25         "CIDR_BLOCK": "{{ aws_vpc_cidr_block }}"


Request — with_items:

 35     # create the VPC
 36     - name: VPC | Create the required VPC
 37       ec2_vpc:
 38         aws_access_key: "{{ aws_access_key }}"
 39         aws_secret_key: "{{ aws_secret_key }}"
 40         region: "{{ aws_region }}"
 41         state: present
 42         cidr_block: "{{ item.cidr_block }}"
 43         resource_tags: "{{ item.resource_tags }}"
 44         internet_gateway: "{{ item.vpc_internet_gateway }}"
 45         subnets:
 46           "{{ my_subnets }}"
 47         route_tables:
 48           "{{ aws_route_table_info }}"
 49       with_items: aws_vpc_info
 50       register: ec2_vpc_out

Response — with_items:
ok: [localhost] => {
    "msg": {
        "changed": false,
        "msg": "All items completed",
        "results": [
            {
                "_ansible_no_log": false,
                "changed": false,
                "igw_id": "igw-dddddddd",
                "invocation": {
                    "module_args": {
                        "aws_access_key": "AAAAAAAAAAAAAAAAAAAA",
                        "aws_secret_key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
                        "cidr_block": "10.125.0.0/16",
                        "dns_hostnames": true,
                        "dns_support": true,
                        "ec2_url": null,
                        "instance_tenancy": "default",
                        "internet_gateway": true,
                        "profile": null,
                        "region": "ap-southeast-2",
                        "resource_tags": {
                            "Environment": “Test",
                            "Name": "Test-VPC",
                            "CIDR_BLOCK": "10.125.0.0/16"
(…)
                ],
                "vpc": {
                    "cidr_block": "10.125.0.0/16",
                    "dhcp_options_id": "dopt-99999999",
                    "id": "vpc-55555555",
                    "region": "ap-southeast-2",
                    "state": "available"
                },
                "vpc_id": "vpc-55555555"
            }
        ]
    }
}


After the change to the playbook I had to change the return vpc_id information 
from {{ ec2_vpc_out.vpc_id }}  to {{ ec2_vpc_out.results.0.subnets }}.

As you can see, the output are radically different between each other. Nothing 
else was changed and I can run both playbooks and despite the output both works 
as expected.

Does anyone know if this is a bug or if it’s expected ? If it is expected, can 
someone point me some documentation so I can handle this changes ?

Thank you,
—Gustavo Aguiar
---------------------------------------------------------------------------------------
 This email has been scanned for email related threats and delivered safely by 
Mimecast.
 For more information please visit http://www.mimecast.com
---------------------------------------------------------------------------------------

-- 
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/6C9F3E1D-4F2A-4E18-9866-8A8012C3668A%40itmethods.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to