I was able to reference new_ec2 using the hostvars magic variable as follows
:
- name: 'Run post-launch baseline configuration on instance'
hosts: 'launched'
gather_facts: no
become: yes
tasks:
- debug: var=hostvars['127.0.0.1']['new_ec2']['instances']
when: hostvars['127.0.0.1']['new_ec2']['instances'] is defined
The output shows the following:
TASK [debug]
****************************************************************************************************************************************************************************
task path: /etc/ansible/playbooks/rhel-8-build.yml:255
ok: [test8] => {
"hostvars['127.0.0.1']['new_ec2']['instances']": [
{
"ami_launch_index": 0,
"architecture": "x86_64",
"block_device_mappings": [
{
"device_name": "/dev/sda1",
"ebs": {
"attach_time": "2022-08-23T14:32:05+00:00",
"delete_on_termination": false,
"status": "attaching",
"volume_id": "vol-0"
}
}
],
"capacity_reservation_specification": {
"capacity_reservation_preference": "open"
},
"client_token": "",
"cpu_options": {
"core_count": 1,
"threads_per_core": 2
},
"ebs_optimized": true,
"ena_support": true,
"enclave_options": {
"enabled": false
},
"hibernation_options": {
"configured": false
},
"hypervisor": "xen",
"iam_instance_profile": {
"arn":
"arn:aws-us:iam::xxxxxxxxxxxxxxxx:instance-profile/xxxxxxxxxxx",
"id": "xxxxxxxxxxxx"
},
"image_id": "ami-0xxxxxxxxxxxxxx",
"instance_id": "i-0xxxxxxxxxxxx",
"instance_type": "t3a.medium",
"key_name": "xxxx",
"launch_time": "2022-08-23T14:32:05+00:00",
"maintenance_options": {
"auto_recovery": "default"
},
"metadata_options": {
"http_endpoint": "enabled",
"http_protocol_ipv6": "disabled",
"http_put_response_hop_limit": 1,
"http_tokens": "optional",
"instance_metadata_tags": "disabled",
"state": "pending"
},
"monitoring": {
"state": "disabled"
},
"network_interfaces": [
{
"attachment": {
"attach_time": "2022-08-23T14:32:05+00:00",
"attachment_id": "eni-attach-06xxxxx7",
"delete_on_termination": true,
"device_index": 0,
"network_card_index": 0,
"status": "attaching"
},
"description": "",
"groups": [
{
"group_id": "sg-34758e50",
"group_name": "xxxxxx"
}
],
"interface_type": "interface",
"ipv6_addresses": [],
"mac_address": "0xxxxxxx",
"network_interface_id": "eni-xxxxxxxx",
"owner_id": "xxxxxxxxxxxx",
"private_dns_name":
"ip-xxx-xx-xx-xx.us-west-1.compute.internal",
"private_ip_address": "xxx.xx.xx.24",
"private_ip_addresses": [
{
"primary": true,
"private_dns_name":
"ip-xxx-xx-xx-24.us-west-1.compute.internal",
"private_ip_address": "xxx.xx.xx.24"
}
],
"source_dest_check": true,
"status": "in-use",
"subnet_id": "subnet-xxx",
"vpc_id": "vpc-xxx"
}
],
"placement": {
"availability_zone": "us-west-1a",
"group_name": "",
"tenancy": "default"
},
"platform_details": "Red Hat Enterprise Linux",
"private_dns_name":
"ip-xxx-xx-xx-24.us-west-1.compute.internal",
"private_dns_name_options": {
"enable_resource_name_dns_a_record": false,
"enable_resource_name_dns_aaaa_record": false,
"hostname_type": "ip-name"
},
"private_ip_address": "xxx.xx.xx.24",
"product_codes": [],
"public_dns_name": "",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"security_groups": [
{
"group_id": "sg-xxxxx",
"group_name": "xxxxx"
}
],
"source_dest_check": true,
"state": {
"code": 0,
"name": "pending"
},
"state_transition_reason": "",
"subnet_id": "subnet-xxxxx",
"tags": {
"Application Group": "CO",
"Application System": "xxx",
"Backupset": "true",
"CST Start/Stop Schedule": "0700;1900;Weekdays",
"CostCenter": "xxx",
"Description": "Evaluation Server",
"Environment": "xxxxx",
"Name": "test8",
"OS": "RHEL",
"OS Version": "8",
"Owner": "CO",
"Patch Group": "Normal",
"Sub Environment": "xxxxxxxx",
"Type": "Eval"
},
"usage_operation": "RunInstances:0010",
"usage_operation_update_time": "2022-08-23T14:32:05+00:00",
"virtualization_type": "hvm",
"vpc_id": "vpc-dxxxxx"
}
]
}
My next question is, how can I grab the Name tags and use it in my update
system name command below? I tried this but it errors out:
- name: 'Update system name'
shell: >
hostnamectl set-hostname
{{ hostvars['127.0.0.1']['new_ec2']['instances']['tags']['Name']
}}.{{ domain['fqdn'] }} --static --transient &&
hostnamectl set-hostname {{
hostvars['127.0.0.1']['new_ec2']['instances'] 'tags]'[''Name'] }}.{{
domain['fqdn'] }} --pretty
TASK [Update system name]
***************************************************************************************************************************************************************
task path: /etc/ansible/playbooks/rhel-8-build.yml:278
fatal: [test8]: FAILED! => {"msg": "The task includes an option with an
undefined variable. The error was: 'list object' has no attribute
'tags'\n\nThe error appears to be in
'/etc/ansible/playbooks/rhel-8-build.yml': line 278, column 8, but may\nbe
elsewhere in the file depending on the exact syntax problem.\n\nThe
offending line appears to be:\n\n\n - name: 'Update system name'\n
^ here\n"}
On Mon, Aug 22, 2022 at 4:23 PM Carmen <[email protected]> wrote:
> Correct, I'm getting the domain['fqdn'] in my global environment variables
> yml file.
>
> I updated the hostname task, but it's still failing on an
> undefined variable 'new_ec2" when it reaches that point
>
> - name: 'Update system name'
> shell: >
> hostnamectl set-hostname
> {{ item.tags.Name }}.{{ domain['fqdn'] }} --static --transient &&
> hostnamectl set-hostname {{ item.tags.Name }}.{{ domain['fqdn']
> }} --pretty
> loop: "{{ new_ec2.instances }}"
>
>
> PLAY [Run post-launch baseline configuration on instance]
> *******************************************************************************************************************************
> META: ran handlers
>
> TASK [Update system name]
> ***************************************************************************************************************************************************************
> task path: /etc/ansible/playbooks/rhel-8-build.yml:265
> fatal: [test8]: FAILED! => {"msg": "'new_ec2' is undefined"}
>
> PLAY RECAP
> ******************************************************************************************************************************************************************************
> 127.0.0.1 : ok=14 changed=2 unreachable=0
> failed=0 skipped=0 rescued=0 ignored=0
> test8 : ok=0 changed=0 unreachable=0 failed=1
> skipped=0 rescued=0 ignored=0
>
>
>
> So there are 2 different hosts with specific tasks ran from each. The
> start of this playbook has localhost set to create a new RHEL ec2 instance
> from an ami. I also prompt for specific vars at the beginning prior to
> creating a new ec2 instance. See below....I didn't include all the prompts
> to keep this ansible post so it's not so long but let me know if you need
> it. Does Ansible clear its memory of variables/facts from tasks from
> localhost to the new hosts? I want to be able to launch a new ec2 instance,
> connect to it, and then run post configuration tasks (without having to run
> 2 different ansible-playbook commands). The only issue has been trying to
> grab the tag Name from a newly launched ec2 instance. Maybe there's a
> better way to do this than the approach I'm taking.
>
> - name: 'Build a RHEL 8 server from AMI'
> hosts: '127.0.0.1'
> connection: 'local'
> gather_facts: no
>
> pre_tasks:
>
> - pause:
> prompt: >-
> What is the name of this system? ( ex: DB-09 )
> register: prompt_name_tag
>
> - pause:
> prompt: >-
> Instance Type? ( press Enter for default: t3a.medium )
> register: prompt_ec2_type
>
> - pause:
> prompt: >-
> Provide an AMI ID:
> ( press Enter for default: Vanilla RHEL 8 Base AMI )
> register: prompt_ami_id
>
> tasks:
>
> - name: 'Launch instance'
> ec2_instance:
> image_id: >-
> {{
> prompt_ami_id.user_input if prompt_ami_id.user_input
> else build['aws']['defaults']['ami']
> }}
> instance_type: >-
> {{
> prompt_ec2_type.user_input if prompt_ec2_type.user_input
> else 't3a.medium'
> }}
>
> register: new_ec2
>
> - name: 'Run post-launch baseline configuration on instance'
> hosts: 'launched'
> gather_facts: no
> become: yes
>
> roles:
> - 'component_baselines/hostname'
>
>
> Details of the hostname role being called:
>
> - name: 'Update system name'
> shell: >
> hostnamectl set-hostname
> {{ item.tags.Name <http://item.tags.name/> }}.{{ domain['fqdn']
> }} --static --transient &&
> hostnamectl set-hostname {{ item.tags.Name
> <http://item.tags.name/> }}.{{ domain['fqdn'] }} --pretty
> loop: "{{ new_ec2.instances }}"
>
> On Mon, Aug 22, 2022 at 2:01 PM 'Rowe, Walter P. (Fed)' via Ansible
> Project <[email protected]> wrote:
>
>> The registered new_ec2.instances has a tags dictionary key so
>> item.tags.Name should reference it in a loop on new_ec2.instances. I
>> assume domain[fqdn] is some other dictionary set somewhere else.
>>
>> *"tags"*: {"Application Group": "CORE", "Application System":
>> "Development Team", "Backupset": "true", "CST Start/Stop Schedule":
>> "0700;1900;Weekdays", "CostCenter": "Dev", "Description": "Evaluation
>> Server", "Environment": "DEV", *"Name"*: "test8", "OS": "RHEL", "OS
>> Version": "8", "Owner": "Development Center", "Patch Group": "Normal", "Sub
>> Environment": "Development", "Type": "Eval"}
>>
>> - name: 'Update system name'
>> shell: >
>> hostnamectl set-hostname
>> {{ *item.tags.Name <http://item.tags.Name>* }}.{{
>> domain['fqdn'] }} --static --transient &&
>> hostnamectl set-hostname {{ tags.Name }}.{{ domain['fqdn'] }}
>> --pretty
>>
>> * loop: "{{ new_ec2.instances }}"*
>>
>>
>>
>> Walter
>> --
>> Walter Rowe, Division Chief
>> Infrastructure Services, OISM
>>
>> On Aug 22, 2022, at 1:42 PM, Carmen <[email protected]> wrote:
>>
>> Hi Walter,
>>
>> Thanks for the reply! Yes, that's correct. How can I reference the tags
>> inside the new_ec2_instances?
>> Specifically, I want to pull the tag called Name to use in this next set
>> of play once the new instance is launched and up and running. Below is
>> where i expect to use the name tag to set the hostname on the server:
>>
>> - name: 'Run post-launch baseline configuration on instance'
>> hosts: 'launched'
>> gather_facts: no
>> become: yes
>>
>> tasks:
>>
>> - name: 'Update system name'
>> shell: >
>> hostnamectl set-hostname
>> {{ tags.Name }}.{{ domain['fqdn'] }} --static --transient &&
>> hostnamectl set-hostname {{ tags.Name }}.{{ domain['fqdn'] }}
>> --pretty
>>
>>
>>
>>
>> *Here's more of the output results, if needed:*
>>
>> TASK [Launch instance]
>> ******************************************************************************************************************************************************************
>> task path: /etc/ansible/playbooks/rhel-8-build.yml:96
>> redirecting (type: modules) ansible.builtin.ec2_instance to
>> community.aws.ec2_instance
>> redirecting (type: modules) community.aws.ec2_instance to
>> amazon.aws.ec2_instance
>> [DEPRECATION WARNING]: The purge_tags parameter currently defaults to
>> False. For consistency across the collection, this default value will
>> change to True in release 5.0.0. This
>> feature will be removed from amazon.aws in version 5.0.0. Deprecation
>> warnings can be disabled by setting deprecation_warnings=False in
>> ansible.cfg.
>> changed: [127.0.0.1] => {"changed": true, "instance_ids": ["i-005f7ce"],
>> "instances": [{"ami_launch_index": 0, "architecture": "x86_64",
>> "block_device_mappings": [{"device_name": "/dev/sda1", "ebs":
>> {"attach_time": "2022-08-22T16:44:38+00:00", "delete_on_termination":
>> false, "status": "attaching", "volume_id": "vol-0488a0"}}],
>> "capacity_reservation_specification": {"capacity_reservation_preference":
>> "open"}, "client_token": "64c1d4b064f", "cpu_options": {"core_count": 1,
>> "threads_per_core": 2}, "ebs_optimized": true, "ena_support": true,
>> "enclave_options": {"enabled": false}, "hibernation_options":
>> {"configured": false}, "hypervisor": "xen", "iam_instance_profile": {"arn":
>> "arn:aws-us:iam::23489:instance-profile/Ansible", "id": "AIPAXKK"},
>> "image_id": "ami-0beac6", "instance_id": "i-005f7ce", "instance_type":
>> "t3a.medium", "key_name": "test", "launch_time":
>> "2022-08-22T16:44:37+00:00", "maintenance_options": {"auto_recovery":
>> "default"}, "metadata_options": {"http_endpoint": "enabled",
>> "http_protocol_ipv6": "disabled", "http_put_response_hop_limit": 1,
>> "http_tokens": "optional", "instance_metadata_tags": "disabled", "state":
>> "pending"}, "monitoring": {"state": "disabled"}, "network_interfaces":
>> [{"attachment": {"attach_time": "2022-08-22T16:44:37+00:00",
>> "attachment_id": "eni-attach-03c0fe9", "delete_on_termination": true,
>> "device_index": 0, "network_card_index": 0, "status": "attaching"},
>> "description": "", "groups": [{"group_id": "sg-34", "group_name": "INT User
>> Data"}], "interface_type": "interface", "ipv6_addresses": [],
>> "mac_address": "06", "network_interface_id": "eni-0cac24c", "owner_id":
>> "23489", "private_dns_name": "ip-10-1-4-3.us-west-1.compute.internal",
>> "private_ip_address": "10.1.4.3", "private_ip_addresses": [{"primary":
>> true, "private_dns_name": "ip-10-1-4-3.us-west-1.compute.internal",
>> "private_ip_address": "10.1.4.3"}], "source_dest_check": true, "status":
>> "in-use", "subnet_id": "subnet-f5b", "vpc_id": "vpc-dbc"}], "placement":
>> {"availability_zone": "us-west-1a", "group_name": "", "tenancy":
>> "default"}, "platform_details": "Red Hat Enterprise Linux",
>> "private_dns_name": "ip-10-1-4-3.us-west-1.compute.internal",
>> "private_dns_name_options": {"enable_resource_name_dns_a_record": false,
>> "enable_resource_name_dns_aaaa_record": false, "hostname_type": "ip-name"},
>> "private_ip_address": "10.1.4.3", "product_codes": [], "public_dns_name":
>> "", "root_device_name": "/dev/sda1", "root_device_type": "ebs",
>> "security_groups": [{"group_id": "sg-34", "group_name": "INT User Data"}],
>> "source_dest_check": true, "state": {"code": 0, "name": "pending"},
>> "state_transition_reason": "", "subnet_id": "subnet-f5b", "tags":
>> {"Application Group": "CORE", "Application System": "Development Team",
>> "Backupset": "true", "CST Start/Stop Schedule": "0700;1900;Weekdays",
>> "CostCenter": "Dev", "Description": "Evaluation Server", "Environment":
>> "DEV", "Name": "test8", "OS": "RHEL", "OS Version": "8", "Owner":
>> "Development Center", "Patch Group": "Normal", "Sub Environment":
>> "Development": "hvm", "vpc_id": "vpc-dbc"}], "spec":
>> {"BlockDeviceMappings": [], "ClientToken": "64c1d4b",
>> "DisableApiTermination": true, "EbsOptimized": true, "IamInstanceProfile":
>> {"Arn": "arn:aws-us:iam::23489:instance-profile/Ansible"}, "ImageId":
>> "ami-0beac", "InstanceType": "t3a.medium", "KeyName": "test", "MaxCount":
>> 1, "MinCount": 1, "NetworkInterfaces": [{"AssociatePublicIpAddress": false,
>> "DeviceIndex": 0, "Groups": ["sg-34"], "SubnetId": "subnet-f5b"}],
>> "TagSpecifications": [{"ResourceType": "volume", "Tags": [{"Key":
>> "Application Group", "Value": "CORE"}, {"Key": "Application System",
>> "Value": "Development Team"}, {"Key": "Backupset", "Value": "true"},
>> {"Key": "CST Start/Stop Schedule", "Value": "0700;1900;Weekdays"}, {"Key":
>> "Description", "Value": "Evaluation Server"}, {"Key": "CostCenter",
>> "Value": "Dev"}, {"Key": "Environment", "Value": "DEV"}, {"Key": "Name",
>> "Value": "test8"}, {"Key": "OS", "Value": "RHEL"}, {"Key": "OS Version",
>> "Value": "8"}, {"Key": "Owner", "Value": "Develoment Center"}, {"Key":
>> "Patch Group", "Value": "Normal"}, {"Key": "Sub Environment", "Value":
>> "Development"}, {"Key": "Type", "Value": "Eval"}]}, {"ResourceType":
>> "instance", "Tags": [{"Key": "Application Group", "Value": "CORE"}, {"Key":
>> "Application System", "Value": "Development Team"}, {"Key": "Backupset",
>> "Value": "true"}, {"Key": "CST Start/Stop Schedule", "Value":
>> "0700;1900;Weekdays"}, {"Key": "Description", "Value": "A1 Operations
>> Evaluation Server"}, {"Key": "CostCenter", "Value": "Dev"}, {"Key":
>> "Environment", "Value": "DEV"}, {"Key": "Name", "Value": "test8"}, {"Key":
>> "OS", "Value": "RHEL"}, {"Key": "OS Version", "Value": "8"}, {"Key":
>> "Owner", "Value": "Development Center"}, {"Key": "Patch Group", "Value":
>> "Normal"}, {"Key": "Sub Environment", "Value": "Development"}, {"Key":
>> "Type", "Value": "Eval"}]}]}}
>>
>>
>>
>> TASK [Add new instance to host group]
>> ***************************************************************************************************************************************************
>> task path: /etc/ansible/playbooks/rhel-8-build.yml:209
>> creating host via 'add_host': hostname=test8
>> ok: [127.0.0.1] => (item={'ami_launch_index': 0, 'image_id':
>> 'ami-0beac6b6', 'instance_id': '06-005sd3sfs', 'instance_type':
>> 't3a.medium', 'key_name': 'test', 'launch_time':
>> '2022-08-22T16:44:37+00:00', 'monitoring': {'state': 'disabled'},
>> 'placement': {'availability_zone': 'us-west-1a', 'group_name': '',
>> 'tenancy': 'default'}, 'private_dns_name':
>> 'ip-10-1-4-1x.us-west-1.compute.internal',
>> 'private_ip_address': '10.1.4.1x', 'product_codes': [], 'public_dns_name':
>> '', 'state': {'code': 0, 'name': 'pending'}, 'state_transition_reason': '',
>> 'subnet_id': 'subnet-f5b', 'vpc_id': 'vpc-dbc5', 'architecture': 'x86_64',
>> 'block_device_mappings': [{'device_name': '/dev/sda1', 'ebs':
>> {'attach_time': '2022-08-22T16:44:38+00:00', 'delete_on_termination':
>> False, 'status': 'attaching', 'volume_id': 'vol-0488sdfec'}}],
>> 'client_token': '64c1d49a1d', 'ebs_optimized': True, 'ena_support': True,
>> 'hypervisor': 'xen', 'iam_instance_profile': {'arn':
>> 'arn:aws-usv:iam::23489:instance-profile/Ansible', 'id': 'AI'},
>> 'network_interfaces': [{'attachment': {'attach_time':
>> '2022-08-22T16:44:37+00:00', 'attachment_id': 'eni-attach-03c0fe',
>> 'delete_on_termination': True, 'device_index': 0, 'status': 'attaching',
>> 'network_card_index': 0}, 'description': '', 'groups': [{'group_name':
>> 'User group', 'group_id': 'sg-34'}], 'ipv6_addresses': [], 'mac_address':
>> '06', 'network_interface_id': 'eni-0cac24cf', 'owner_id': '23489',
>> 'private_dns_name': 'ip-10-1-4-3.us-west-1.compute.internal',
>> 'private_ip_address': '10.1.4.3', 'private_ip_addresses': [{'primary':
>> True, 'private_dns_name': 'ip-10-1-4-3.us-west-1.compute.internal',
>> 'private_ip_address': '10.1.4.3'}], 'source_dest_check': True, 'status':
>> 'in-use', 'subnet_id': 'subnet-f5bsdfs', 'vpc_id': 'vpc-dbc5',
>> 'interface_type': 'interface'}], 'root_device_name': '/dev/sda1',
>> 'root_device_type': 'ebs', 'security_groups': [{'group_name': 'User group',
>> 'group_id': 'sg-34'}], 'source_dest_check': True, 'tags': {'OS': 'RHEL',
>> 'Owner': 'Development Center', 'Environment': 'DEV', 'Sub Environment':
>> 'Development', 'CostCenter': 'Dev', 'Backupset': 'true', 'Application
>> System': 'Development Team', 'OS Version': '8', 'Application Group':
>> 'CORE', 'Patch Group': 'Normal', 'Description': 'Evaluation Server',
>> 'Name': 'test8', 'CST Start/Stop Schedule': '0700;1900;Weekdays', 'Type':
>> 'Eval'}, 'virtualization_type': 'hvm', 'cpu_options': {'core_count': 1,
>> 'threads_per_core': 2}, 'capacity_reservation_specification':
>> {'capacity_reservation_preference': 'open'}, 'hibernation_options':
>> {'configured': False}, 'metadata_options': {'state': 'pending',
>> 'http_tokens': 'optional', 'http_put_response_hop_limit': 1,
>> 'http_endpoint': 'enabled', 'http_protocol_ipv6': 'disabled',
>> 'instance_metadata_tags': 'disabled'}, 'enclave_options': {'enabled':
>> False}, 'platform_details': 'Red Hat Enterprise Linux', 'usage_operation':
>> 'RunInstances:0010', 'usage_operation_update_time':
>> '2022-08-22T16:44:37+00:00', 'private_dns_name_options': {'hostname_type':
>> 'ip-name', 'enable_resource_name_dns_a_record': False,
>> 'enable_resource_name_dns_aaaa_record': False}, 'maintenance_options':
>> {'auto_recovery': 'default'}}) => {"add_host": {"groups": ["launched"],
>> "host_name": "test8", "host_vars": {}}, "ansible_loop_var": "item",
>> "changed": false, "item": {"ami_launch_index": 0, "architecture": "x86_64",
>> "block_device_mappings": [{"device_name": "/dev/sda1", "ebs":
>> {"attach_time": "2022-08-22T16:44:38+00:00", "delete_on_termination":
>> false, "status": "attaching", "volume_id": "vol-0488sdfec2f4e9e6"}}],
>> "capacity_reservation_specification": {"capacity_reservation_preference":
>> "open"}, "client_token": "64c1d4b064fa418d99eeca4aa44c7a1d", "cpu_options":
>> {"core_count": 1, "threads_per_core": 2}, "ebs_optimized": true,
>> "ena_support": true, "enclave_options": {"enabled": false},
>> "hibernation_options": {"configured": false}, "hypervisor": "xen",
>> "iam_instance_profile": {"arn":
>> "arn:aws-us-:iam::23489:instance-profile/Ansible", "id":
>> "AIPAXKKA2BWLPEG6LE23X"}, "image_id": "ami-0beac6b6ed4da44ce",
>> "instance_id": "06-005sd3sfs0a0d9", "instance_type": "t3a.medium",
>> "key_name": "test", "launch_time": "2022-08-22T16:44:37+00:00",
>> "maintenance_options": {"auto_recovery": "default"}, "metadata_options":
>> {"http_endpoint": "enabled", "http_protocol_ipv6": "disabled",
>> "http_put_response_hop_limit": 1, "http_tokens": "optional",
>> "instance_metadata_tags": "disabled", "state": "pending"}, "monitoring":
>> {"state": "disabled"}, "network_interfaces": [{"attachment":
>> {"attach_time": "2022-08-22T16:44:37+00:00", "attachment_id":
>> "eni-attach-03c0fe95d6d45e0a2", "delete_on_termination": true,
>> "device_index": 0, "network_card_index": 0, "status": "attaching"},
>> "description": "", "groups": [{"group_id": "sg-347", "group_name": "User
>> Data"}], "interface_type": "interface", "ipv6_addresses": [],
>> "mac_address": "06", "network_interface_id": "eni-0cac24c770", "owner_id":
>> "23489", "private_dns_name": "ip-10-1-4-3.us-west-1.compute.internal",
>> "private_ip_address": "10.1.4.3", "private_ip_addresses": [{"primary":
>> true, "private_dns_name": "ip-10-1-4-3.us-west-1.compute.internal",
>> "private_ip_address": "10.1.4.3"}], "source_dest_check": true, "status":
>> "in-use", "subnet_id": "subnet-f5sdfws", "vpc_id": "vpc-dbc5"}],
>> "placement": {"availability_zone": "us-west-1a", "group_name": "",
>> "tenancy": "default"}, "platform_details": "Red Hat Enterprise Linux",
>> "private_dns_name": "ip-10-1-4-3.us-west-1.compute.internal",
>> "private_dns_name_options": {"enable_resource_name_dns_a_record": false,
>> "enable_resource_name_dns_aaaa_record": false, "hostname_type": "ip-name"},
>> "private_ip_address": "10.1.4.3", "product_codes": [], "public_dns_name":
>> "", "root_device_name": "/dev/sda1", "root_device_type": "ebs",
>> "security_groups": [{"group_id": "sg-34", "group_name": "User group"}],
>> "source_dest_check": true, "state": {"code": 0, "name": "pending"},
>> "state_transition_reason": "", "subnet_id": "subnet-f5sdfws", "tags":
>> {"Application Group": "CORE", "Application System": "Development Team",
>> "Backupset": "true", "CST Start/Stop Schedule": "0700;1900;Weekdays",
>> "CostCenter": "Dev", "Description": "Evaluation Server", "Environment":
>> "DEV", "Name": "test8", "OS": "RHEL", "OS Version": "8", "Owner":
>> "Development Center", "Patch Group": "Normal", "Sub Environment":
>> "Development", "Type": "Eval"}, "usage_operation": "RunInstances:0010",
>> "usage_operation_update_time": "2022-08-22T16:44:37+00:00",
>> "virtualization_type": "hvm", "vpc_id": "vpc-db"}}
>>
>> TASK [Wait for SSH to come up]
>> **********************************************************************************************************************************************************
>> task path: /etc/ansible/playbooks/rhel-8-build.yml:231
>> [WARNING]: Reset is not implemented for this connection
>> ok: [127.0.0.1 -> 10.1.4.3] => (item={'ami_launch_index': 0, 'image_id':
>> 'ami-0beac6b6ed4da44ce', 'instance_id': '06-005sd3sfs0a0d9',
>> 'instance_type': 't3a.medium', 'key_name': 'test', 'launch_time':
>> '2022-08-22T16:44:37+00:00', 'monitoring': {'state': 'disabled'},
>> 'placement': {'availability_zone': 'us-west-1a', 'group_name': '',
>> 'tenancy': 'default'}, 'private_dns_name':
>> 'ip-10-1-4-3.us-west-1.compute.internal',
>> 'private_ip_address': '10.1.4.3', 'product_codes': [], 'public_dns_name':
>> '', 'state': {'code': 0, 'name': 'pending'}, 'state_transition_reason': '',
>> 'subnet_id': 'subnet-f5bsdfs', 'vpc_id': 'vpc-dbc5', 'architecture':
>> 'x86_64', 'block_device_mappings': [{'device_name': '/dev/sda1', 'ebs':
>> {'attach_time': '2022-08-22T16:44:38+00:00', 'delete_on_termination':
>> False, 'status': 'attaching', 'volume_id': 'vol-0488sdfec2f4e9e6'}}],
>> 'client_token': '64c1d4b064fa418d99eeca4aa44c7a1d', 'ebs_optimized': True,
>> 'ena_support': True, 'hypervisor': 'xen', 'iam_instance_profile': {'arn':
>> 'arn:aws-us-:iam::23489:instance-profile/Ansible', 'id': 'AIPAXKK'},
>> 'network_interfaces': [{'attachment': {'attach_time':
>> '2022-08-22T16:44:37+00:00', 'attachment_id': 'eni-attach-03c0fe',
>> 'delete_on_termination': True, 'device_index': 0, 'status': 'attaching',
>> 'network_card_index': 0}, 'description': '', 'groups': [{'group_name':
>> 'User group', 'group_id': 'sg-34'}], 'ipv6_addresses': [], 'mac_address':
>> '06', 'network_interface_id': 'eni-0cac24cf', 'owner_id': '23489',
>> 'private_dns_name': 'ip-10-1-4-3.us-west-1.compute.internal',
>> 'private_ip_address': '10.1.4.3', 'private_ip_addresses': [{'primary':
>> True, 'private_dns_name': 'ip-10-1-4-3.us-west-1.compute.internal',
>> 'private_ip_address': '10.1.4.3'}], 'source_dest_check': True, 'status':
>> 'in-use', 'subnet_id': 'subnet-f5bsdfs', 'vpc_id': 'vpc-dbc5',
>> 'interface_type': 'interface'}], 'root_device_name': '/dev/sda1',
>> 'root_device_type': 'ebs', 'security_groups': [{'group_name': 'User group',
>> 'group_id': 'sg-34'}], 'source_dest_check': True, 'tags': {'OS': 'RHEL',
>> 'Owner': 'Development Center', 'Environment': DEV', 'Sub Environment':
>> 'Evaluation'', 'CostCenter': 'Eval2', 'Backupset': 'true', 'Application
>> System': 'Development Team', 'OS Version': '8', 'Application Group':
>> 'CORE', 'Patch Group': 'Normal', 'Description': 'Evaluation Server',
>> 'Name': 'test8', 'CST Start/Stop Schedule': '0700;1900;Weekdays', 'Type':
>> 'Eval'}, 'virtualization_type': 'hvm', 'cpu_options': {'core_count': 1,
>> 'threads_per_core': 2}, 'capacity_reservation_specification':
>> {'capacity_reservation_preference': 'open'}, 'hibernation_options':
>> {'configured': False}, 'metadata_options': {'state': 'pending',
>> 'http_tokens': 'optional', 'http_put_response_hop_limit': 1,
>> 'http_endpoint': 'enabled', 'http_protocol_ipv6': 'disabled',
>> 'instance_metadata_tags': 'disabled'}, 'enclave_options': {'enabled':
>> False}, 'platform_details': 'Red Hat Enterprise Linux', 'usage_operation':
>> 'RunInstances:0010', 'usage_operation_update_time':
>> '2022-08-22T16:44:37+00:00', 'private_dns_name_options': {'hostname_type':
>> 'ip-name', 'enable_resource_name_dns_a_record': False,
>> 'enable_resource_name_dns_aaaa_record': False}, 'maintenance_options':
>> {'auto_recovery': 'default'}}) => {"ansible_loop_var": "item", "changed":
>> false, "elapsed": 120, "item": {"ami_launch_index": 0, "architecture":
>> "x86_64", "block_device_mappings": [{"device_name": "/dev/sda1", "ebs":
>> {"attach_time": "2022-08-22T16:44:38+00:00", "delete_on_termination":
>> false, "status": "attaching", "volume_id": "vol-0488sdfe"}}],
>> "capacity_reservation_specification": {"capacity_reservation_preference":
>> "open"}, "client_token": "64c1d", "cpu_options": {"core_count": 1,
>> "threads_per_core": 2}, "ebs_optimized": true, "ena_support": true,
>> "enclave_options": {"enabled": false}, "hibernation_options":
>> {"configured": false}, "hypervisor": "xen", "iam_instance_profile": {"arn":
>> "arn:aws-us-:iam::23489:instance-profile/Ansible", "id": "AIPAX"},
>> "image_id": "ami-0bea", "instance_id": "i-005", "instance_type":
>> "t3a.medium", "key_name": "test", "launch_time":
>> "2022-08-22T16:44:37+00:00", "maintenance_options": {"auto_recovery":
>> "default"}, "metadata_options": {"http_endpoint": "enabled",
>> "http_protocol_ipv6": "disabled", "http_put_response_hop_limit": 1,
>> "http_tokens": "optional", "instance_metadata_tags": "disabled", "state":
>> "pending"}, "monitoring": {"state": "disabled"}, "network_interfaces":
>> [{"attachment": {"attach_time": "2022-08-22T16:44:37+00:00",
>> "attachment_id": "eni-attach-03c0fe95d6d45e0a2", "delete_on_termination":
>> true, "device_index": 0, "network_card_index": 0, "status": "attaching"},
>> "description": "", "groups": [{"group_id": "sg-34", "group_name": "User
>> group"}], "interface_type": "interface", "ipv6_addresses": [],
>> "mac_address": "06", "network_interface_id": "eni-0cac", "owner_id":
>> "23489", "private_dns_name": "ip-10-1-4-1x-1.us-west-1.compute.internal",
>> "private_ip_address": "10.1.4.1x.1", "private_ip_addresses": [{"primary":
>> true, "private_dns_name": "ip-10-1-4-3.us-west-1.compute.internal",
>> "private_ip_address": "10.1.4.3"}], "source_dest_check": true, "status":
>> "in-use", "subnet_id": "subnet-f5sd", "vpc_id": "vpc-dbc5"}], "placement":
>> {"availability_zone": "us-west-1a", "group_name": "", "tenancy":
>> "default"}, "platform_details": "Red Hat Enterprise Linux",
>> "private_dns_name": "ip-10-1-4-3.us-west-1.compute.internal",
>> "private_dns_name_options": {"enable_resource_name_dns_a_record": false,
>> "enable_resource_name_dns_aaaa_record": false, "hostname_type": "ip-name"},
>> "private_ip_address": "10.1.4.3", "product_codes": [], "public_dns_name":
>> "", "root_device_name": "/dev/sda1", "root_device_type": "ebs",
>> "security_groups": [{"group_id": "sg-34", "group_name": "User group"}],
>> "source_dest_check": true, "state": {"code": 0, "name": "pending"},
>> "state_transition_reason": "", "subnet_id": "subnet-f5sdfws", "tags":
>> {"Application Group": "CORE", "Application System": "Development Team",
>> "Backupset": "true", "CST Start/Stop Schedule": "0700;1900;Weekdays",
>> "CostCenter": Dev", "Description": "Evaluation Server", "Environment":
>> "DEV", "Name": "test8", "OS": "RHEL", "OS Version": "8", "Owner":
>> "Development Center", "Patch Group": "Normal", "Sub Environment":
>> "Evaluation", "Type": "Eval"}, "usage_operation": "RunInstances:0010",
>> "usage_operation_update_time": "2022-08-22T16:44:37+00:00",
>> "virtualization_type": "hvm", "vpc_id": "vpc-dbc"}}
>> META: ran handlers
>> META: ran handlers
>>
>> PLAY [Run post-launch baseline configuration on instance]
>> *******************************************************************************************************************************
>> META: ran handlers
>>
>> TASK [Update system name]
>> ***************************************************************************************************************************************************************
>> task path: /etc/ansible/playbooks/rhel-8-build.yml:265
>> fatal: [test8]: FAILED! => {"msg": "The task includes an option with an
>> undefined variable. The error was: 'tags' is undefined\n\nThe error appears
>> to be in '/etc/ansible/playbooks/rhel-8-build.yml': line 265, column 8, but
>> may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe
>> offending line appears to be:\n\n\n - name: 'Update system name'\n
>> ^ here\n"}
>>
>> PLAY RECAP
>> ******************************************************************************************************************************************************************************
>> 127.0.0.1 : ok=14 changed=2 unreachable=0
>> failed=0 skipped=0 rescued=0 ignored=0
>> test8 : ok=0 changed=0 unreachable=0
>> failed=1 skipped=0 rescued=0 ignored=0
>>
>>
>>
>>
>>
>> #######################################################################################################
>>
>>
>>
>>
>>
>> On Mon, Aug 22, 2022 at 6:21 AM 'Rowe, Walter P. (Fed)' via Ansible
>> Project <[email protected]> wrote:
>>
>>> Do you need to reference the tags inside new_ec2.instances ?
>>>
>>> Walter
>>> --
>>> Walter Rowe, Division Chief
>>> Infrastructure Services, OISM
>>>
>>> On Aug 19, 2022, at 3:55 PM, Carmie <[email protected]> wrote:
>>>
>>> Can anyone shed some light into this?
>>>
>>> 1. I'm using the aws_ec2 plugin
>>> 2. I can launch an ec2 instance successfully and run commands post launch
>>>
>>> My issue comes in when I reference the {{ tags['Name'] }} to pull from
>>> AWS tag Name from the newly created instance. I can see all the tag
>>> key/value info from the when I add the new instance to the host group;
>>> however, for some reason it fails as soon as it hits the new play/task to
>>> configure the hostname based on the aws ec2 tag Name. I'm guessing Ansible
>>> is not carrying over the variables in the add_host to host group.
>>>
>>> *fatal: FAILED! => {"msg": "The task includes an option with an
>>> undefined variable. The error was: 'tags' is undefined\n\nThe error appears
>>> to be in '/etc/ansible/roles/component_baselines/hostname/tasks/main.yml':
>>> line 12, column 5, but may\nbe elsewhere in the file depending on the exact
>>> syntax problem.\n\nThe offending line appears to be:\n\n\n - name: 'Update
>>> system name'\n ^ here\n"}*
>>>
>>> Here's a snippet of the tail end of the ec2 create playbook:
>>>
>>> register: new_ec2
>>>
>>>
>>> - name: 'Add new instance to host group'
>>> add_host:
>>> hostname: "{{ item.private_ip_address }}"
>>> groupname: 'launched'
>>> loop: "{{ new_ec2.instances }}"
>>>
>>> - name: 'Wait for SSH to come up'
>>> delegate_to: "{{ item.private_ip_address }}"
>>> wait_for_connection:
>>> delay: 120
>>> timeout: 480
>>> loop: "{{ new_ec2.instances }}"
>>>
>>>
>>> - name: 'Run post-launch baseline configuration on instance'
>>> hosts: 'launched'
>>> gather_facts: no
>>> become: yes
>>>
>>> roles:
>>> - 'component_baselines/hostname'
>>>
>>>
>>> Details of the hostname role being called:
>>>
>>> - name: 'Gather current system name'
>>> ansible.builtin.setup:
>>>
>>> - name: 'Update system name'
>>> shell: >
>>> hostnamectl set-hostname
>>> {{ tags['Name'] }}.{{ domain['fqdn'] }} --static --transient &&
>>> hostnamectl set-hostname {{ tags['Name'] }}.{{ domain['fqdn'] }}
>>> --pretty
>>> when: "tags['Name'] != ansible_facts['hostname']"
>>>
>>> - name: 'Update sysconfig File'
>>> template:
>>> src: 'network.j2'
>>> dest: '/etc/sysconfig/network'
>>> owner: 'root'
>>> group: 'root'
>>> mode: '0644'
>>> register: taskresult
>>> notify: 'Restart systemd-hostnamed'
>>> when: "tags['Name'] != ansible_facts['hostname']"
>>>
>>>
>>> --
>>> 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/f76dcef9-921e-47e7-aea3-8b588613192cn%40googlegroups.com
>>> <https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Fansible-project%2Ff76dcef9-921e-47e7-aea3-8b588613192cn%2540googlegroups.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Cwalter.rowe%40nist.gov%7C92888ccea9804189735808da8465c466%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C637967869882272440%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=9Tu4b%2FJU8kWNwPoHlefvLm6VimTiYC8UXcEPCqN2zhM%3D&reserved=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/AA182698-D710-47BF-A68C-47F98192403E%40nist.gov
>>> <https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Fansible-project%2FAA182698-D710-47BF-A68C-47F98192403E%2540nist.gov%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Cwalter.rowe%40nist.gov%7C92888ccea9804189735808da8465c466%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C637967869882272440%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=UB6kUcbeOmfOQeE9oX0oVktwPzQXMkSkKeWpD2Xb5Lk%3D&reserved=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/CAPsYAg%2BuB6Z5%2BOZeCGUyQVmaZPS%3DbO%3DJq8Cjz_tn9xH7jKP%3DWQ%40mail.gmail.com
>> <https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Fansible-project%2FCAPsYAg%252BuB6Z5%252BOZeCGUyQVmaZPS%253DbO%253DJq8Cjz_tn9xH7jKP%253DWQ%2540mail.gmail.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Cwalter.rowe%40nist.gov%7C92888ccea9804189735808da8465c466%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C637967869882272440%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=N2TArAsJj0UxDhuRZ%2BrugBsNrXSaVtnTwsyH1GQ3My8%3D&reserved=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/589501B1-F229-42E6-92F1-D54E3443BB00%40nist.gov
>> <https://groups.google.com/d/msgid/ansible-project/589501B1-F229-42E6-92F1-D54E3443BB00%40nist.gov?utm_medium=email&utm_source=footer>
>> .
>>
>
--
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/CAPsYAgL3_%3DUAYdhjscbmkSYxwpH9QOoU24ZKKiLC2AybCd%3DD2Q%40mail.gmail.com.