Need help with how to grab public ip and use it for later part in playbook

here is the dubug output ec2-facts

“ec2”: {
“changed”: false,
“failed”: false,
“instances”: [
{
“ami_launch_index”: 0,
“architecture”: “x86_64”,
“block_device_mappings”: [
{
“device_name”: “/dev/xvda”,
“ebs”: {
“attach_time”: “2019-03-21T18:28:03+00:00”,
“delete_on_termination”: true,
“status”: “attached”,
“volume_id”: “vol-xxxx”
}
}
],
“client_token”: “”,
“cpu_options”: {
“core_count”: 1,
“threads_per_core”: 1
},
“ebs_optimized”: false,
“ena_support”: true,
“hibernation_options”: {
“configured”: false
},
“hypervisor”: “xen”,
“image_id”: “ami-xxxx”,
“instance_id”: “i-xxx”,
“instance_type”: “t2.micro”,
“key_name”: “xxxxx”,
“launch_time”: “2019-03-21T18:28:03+00:00”,
“monitoring”: {
“state”: “disabled”
},
“network_interfaces”: [
{
“association”: {
“ip_owner_id”: “amazon”,
“public_dns_name”: “ec2-xxxxx.us-east-2.compute.amazonaws.com”,
“public_ip”: “xx.xx.xx.51”
},
“attachment”: {
“attach_time”: “2019-03-21T18:28:03+00:00”,
“attachment_id”: “eni-attach-xxxxxx”,
“delete_on_termination”: true,
“device_index”: 0,
“status”: “attached”
},
“description”: “”,
“groups”: [
{
“group_id”: “sg-xx”,
“group_name”: “xxxxxx”
}
],
“ipv6_addresses”: ,
“mac_address”: “xx:66:xx:77:d4:f4”,
“network_interface_id”: “eni-xxxxxxx”,
“owner_id”: “xxxxxx”,
“private_dns_name”: “ip-xxxxxxx8.us-east-2.compute.internal”,
“private_ip_address”: “1xxxxxx”,
“private_ip_addresses”: [
{
“association”: {
“ip_owner_id”: “amazon”,
“public_dns_name”: “ec2-xx-xxx-xxx-xx.us-east-2.compute.amazonaws.com”,
“public_ip”: "18.x.xx.xx
},
“primary”: true,
“private_dns_name”: “xxxxxx.us-east-2.compute.internal”,
“private_ip_address”: “xxxxxx”
}
],
“source_dest_check”: true,
“status”: “in-use”,
“subnet_id”: “subnet-xxxx”,
“vpc_id”: “vpc-xxxxx”
}
],
“placement”: {
“availability_zone”: “us-east-2c”,
“group_name”: “”,
“tenancy”: “default”
},
“private_dns_name”: “xxxxxxx.us-east-2.compute.internal”,
“private_ip_address”: “xxx.xx.xx.xx”,
“product_codes”: ,
“public_dns_name”: “xxxxxxx.us-east-2.compute.amazonaws.com”,
“public_ip_address”: “xx.xxx.44.51”,
“root_device_name”: “/dev/xvda”,
“root_device_type”: “ebs”,
“security_groups”: [
{
“group_id”: “sg-xxxx”,
“group_name”: “xxxxxx”
}
],
“source_dest_check”: true,
“state”: {
“code”: 64,
“name”: “stopping”
},
“state_reason”: {
“code”: “Client.UserInitiatedShutdown”,
“message”: “Client.UserInitiatedShutdown: User initiated shutdown”
},
“state_transition_reason”: “User initiated (2019-03-21 19:33:16 GMT)”,
“subnet_id”: “subnet-xxx”,
“virtualization_type”: “hvm”,
“vpc_id”: “vpc-xxxx”
}
]
}
}

i want to use debug option in playbook to print only the public ip

ec2.instances.public_ip is not working

can anyone please help

On 21.03.19 22:48, tinkuchowdary32@gmail.com wrote:> here is the dubug
output ec2-facts

"ec2": {
        "changed": false,
        "failed": false,
        "instances": [
            {
                "ami_launch_index": 0,
                "architecture": "x86_64",

[..]

                "product_codes": ,
                "public_dns_name":
"xxxxxxx.us-east-2.compute.amazonaws.com",
                "public_ip_address": "xx.xxx.44.51",
                "root_device_name": "/dev/xvda",

[...]

            }
        ]
    }
}

i want to use debug option in playbook to print only the public ip

ec2.instances.public_ip is not working

instances is an array of dicts here.

You'll need a 0 in there to access the first element of that list:

ec2.instances.0.public_ip_address

- Sebastian

Thank you sebastian for quick reply

unfortunately that didn’t work

here the part that i am running

  • name: “gather instance facts”
    ec2_instance_facts:
    instance_ids: i-xxxxxx
    region: “{{ region }}”
    delegate_to: localhost
    when: ec2_instance_prov == ‘no’
    register: ec2
    tags:
  • gather-facts
  • provision-ec2
  • debug:
    var: ec2.instances.0.public_ip_address
    tags:
  • gather-facts

after i run this i see no output

PLAY [Provision an EC2 Instance] *************************************************************************************************************************************************************************************************************

TASK [gather instance facts] *****************************************************************************************************************************************************************************************************************
ok: [localhost → localhost]

TASK [debug] *********************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
“ec2.instances.0.public_ip_address”: “VARIABLE IS NOT DEFINED!”
}

PLAY RECAP ***********************************************************************************************************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0

Hi,

in this case verify that

- debug:
    var: ec2

works first.

Then try:

- debug:
    var: ec2.instances

Afterwards:

- debug:
    var: ec2.instances.0

So basically you try to build the path to the value you want. If one
fails, please post the output of the last succeeding debug.

- Sebastian

Hello Sebastian

Thank you for the help i was able to get it working

i have another problem how can i get only the arn value but not complete output saved in to variable

in the below example

TASK [debug] ****************************************************************************************************************************************************************************************************************************

ok: [localhost] => {

“template_arn.results.0.stdout_lines[1]”: " "assessmentTemplateArn": "arn:aws:inspector:us-west-2:024283424342:target/0-Rrtw16WK/template/0-5KIIPQREcC""

i want to print only arn:aws:inspector:us-west-2:024283424342:target/0-Rrtw16WK/template/0-5KIIPQREcC\ i dont want “”““assessmentTemplateArn””“” to be saved to my variable
Can anyone please help

Thank you

Please send a new message for that and don't pollute this thread for
(judging by the error) an unrelated issue.
Be sure to add enough information though (tasks/playbooks).

thx!

Dick