I tried on multiple amazon linux hosts, both using native python 2.7.10 as
well as a virtual environment for python 2.7.10. I have also tried with
Ansible 1.9.4 and 2.0.0.2, and with boto 2.38.0 and 2.39.0. The same error
persists:
failed: [localhost] => {"failed": true, "parsed": false}
Traceback (most recent call last):
File
"/root/.ansible/tmp/ansible-tmp-1453831301.21-186005588822085/ec2_asg",
line 2455, in <module>
main()
File
"/root/.ansible/tmp/ansible-tmp-1453831301.21-186005588822085/ec2_asg",
line 2444, in main
create_changed, asg_properties=create_autoscaling_group(connection,
module)
File
"/root/.ansible/tmp/ansible-tmp-1453831301.21-186005588822085/ec2_asg",
line 2246, in create_autoscaling_group
wait_for_elb(connection, module, group_name)
File
"/root/.ansible/tmp/ansible-tmp-1453831301.21-186005588822085/ec2_asg",
line 2113, in wait_for_elb
except boto.exception.InvalidInstance, e:
AttributeError: 'module' object has no attribute 'InvalidInstance'
I can avoid the error if I do not use the option "wait_for_instances" in my
Ansible config. So something in this code path is executing the call
getting the error. The error itself is a Python/Boto error, as the task
really does succeed (although Ansible does not know that).
In the file:
ansible/modules/core/cloud/amazon/ec2_asg.py
def elb_healthy(asg_connection, elb_connection, module, group_name):
healthy_instances = []
as_group = asg_connection.get_all_groups(names=[group_name])[0]
props = get_properties(as_group)
# get healthy, inservice instances from ASG
instances = []
for instance, settings in props['instance_facts'].items():
if settings['lifecycle_state'] == 'InService' and settings[
'health_status'] == 'Healthy':
instances.append(instance)
log.debug("ASG considers the following instances InService and Healthy:
{0}".format(instances))
log.debug("ELB instance status:")
for lb in as_group.load_balancers:
# we catch a race condition that sometimes happens if the instance
exists in the ASG
# but has not yet show up in the ELB
try:
lb_instances = elb_connection.describe_instance_health(lb,
instances=instances)
except boto.exception.InvalidInstance, e:
pass
for i in lb_instances:
if i.state == "InService":
healthy_instances.append(i.instance_id)
log.debug("{0}: {1}".format(i.instance_id, i.state))
return len(healthy_instances)
On Monday, January 18, 2016 at 9:59:28 PM UTC-8, Alex Leonhardt wrote:
>
>
> Did you try on a vm (or in docker?) with old ansible 1.9.4? Just to
> prevent environmental "interference".
>
>
>
> On Tuesday, 19 January 2016, <[email protected] <javascript:>> wrote:
>
>> I am running a playbook to update an existing AWS Autoscaling group and
>> have started to encounter an error message that I was not seeing before.
>>
>> Environment:
>>
>> Amazon Linux
>>
>> Python 2.7.10
>>
>> ansible (2.0.0.2)
>>
>> boto (2.38.0)
>>
>> botocore (1.3.20)
>>
>>
>>
>> running the playbook to update an existing autoscaling group, I started
>> getting this error last week:
>>
>>
>> TASK [Update Autoscaling Group]
>> ************************************************
>>
>> task path: /opt/hephaestus/ansible/tasks/update-asg.yaml:13
>>
>> ESTABLISH LOCAL CONNECTION FOR USER: root
>>
>> localhost EXEC ( umask 22 && mkdir -p "$( echo
>> $HOME/.ansible/tmp/ansible-tmp-1453161674.67-268535195031737 )" && echo "$(
>> echo $HOME/.ansible/tmp/ansible-tmp-1453161674.67-268535195031737 )" )
>>
>> localhost PUT /tmp/tmpSYEg2V TO /root/.ansible/tmp/ansible-tmp-
>> 1453161674.67-268535195031737/ec2_asg
>>
>> localhost EXEC LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-
>> 8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1453161674.67-
>> 268535195031737/ec2_asg; rm -rf
>> "/root/.ansible/tmp/ansible-tmp-1453161674.67-268535195031737/" > /dev/
>> null 2>&1
>>
>> An exception occurred during task execution. The full traceback is:
>>
>> Traceback (most recent call last):
>>
>> File
>> "/root/.ansible/tmp/ansible-tmp-1453161674.67-268535195031737/ec2_asg",
>> line 2998, in <module>
>>
>> main()
>>
>> File
>> "/root/.ansible/tmp/ansible-tmp-1453161674.67-268535195031737/ec2_asg",
>> line 2987, in main
>>
>> create_changed, asg_properties=create_autoscaling_group(connection,
>> module)
>>
>> File
>> "/root/.ansible/tmp/ansible-tmp-1453161674.67-268535195031737/ec2_asg",
>> line 2664, in create_autoscaling_group
>>
>> wait_for_elb(connection, module, group_name)
>>
>> File
>> "/root/.ansible/tmp/ansible-tmp-1453161674.67-268535195031737/ec2_asg",
>> line 2526, in wait_for_elb
>>
>> healthy_instances = elb_healthy(asg_connection, elb_connection, module
>> , group_name)
>>
>> File
>> "/root/.ansible/tmp/ansible-tmp-1453161674.67-268535195031737/ec2_asg",
>> line 2500, in elb_healthy
>>
>> except boto.exception.InvalidInstance, e:
>>
>> AttributeError: 'module' object has no attribute 'InvalidInstance'
>>
>>
>> fatal: [localhost]: FAILED! => {"changed": false, "failed": true,
>> "invocation": {"module_name": "ec2_asg"}, "parsed": false}
>>
>>
>>
>>
>> I have tried to change the version of boto and ansible, however the error
>> now persists. I have not been able to identify any root cause or known bug
>> other than the error message. I have tried switching a few options on and
>> off in the playbook such as: wait_for_instances and lc_check.
>>
>>
>>
>> Thanks!
>>
>>
>>
>>
>>
>>
>> --
>> 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/15bb28c2-e25b-40ac-be8d-da4630e5f729%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/15bb28c2-e25b-40ac-be8d-da4630e5f729%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> --
>
> gpg public key: http://dpaste.com/1CEJ38Z
>
>
--
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/91e57855-6424-4db5-9faa-d068b4977a1e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.