Hello fellow ansible users.
I have a process that turns on ec2 instances, then subsequently adds said instances to their respective load balancers. I get very intermittent results, sometimes the playbook will complete successfully, even consecutively at times. No matter what I do, ( change logic, implement ‘pauses’ etc, setting and retrieving facts ) I can not get around this AWS throttling message.
ansible code:
-
name: starting instance(s)
when: instance_id is defined and lights_on|default (“false”) == “true”
local_action: ec2
args:
region: ‘us-west-2’
instance_ids: “{{ instance_id }}”
state: ‘running’
wait: ‘yes’
wait_timeout: ‘300’
register: ec2 -
name: Pausing, trying to avoid AWS throttling
pause: minutes=10 -
name: registering instance to its respective groups ELB
instances that do not require ELBs do not need to run this part of the playbook
when: elb_shortname is defined and lights_on|default (“false”) == “true”
local_action: ec2_elb
args:
region: ‘us-west-2’
state: ‘present’
wait: ‘yes’
wait_timeout: ‘300’
Output:
TASK: [roles/lights_on | registering instance to its respective groups ELB] ***
failed: [tstmaorawss01 → 127.0.0.1] => {“failed”: true, “parsed”: false}
invalid output was: Traceback (most recent call last):
File “/Users/ndobbs/.ansible/tmp/ansible-tmp-1412091621.06-77576803493759/ec2_elb”, line 1874, in
main()
File “/Users/ndobbs/.ansible/tmp/ansible-tmp-1412091621.06-77576803493759/ec2_elb”, line 326, in main
elb_man.register(wait, enable_availability_zone, timeout)
File “/Users/ndobbs/.ansible/tmp/ansible-tmp-1412091621.06-77576803493759/ec2_elb”, line 159, in register
self._await_elb_instance_state(lb, ‘InService’, initial_state, timeout)
File “/Users/ndobbs/.ansible/tmp/ansible-tmp-1412091621.06-77576803493759/ec2_elb”, line 196, in _await_elb_instance_state
instance_state = self._get_instance_health(lb)
File “/Users/ndobbs/.ansible/tmp/ansible-tmp-1412091621.06-77576803493759/ec2_elb”, line 244, in _get_instance_health
status = lb.get_instance_health([self.instance_id])[0]
File “/Library/Python/2.7/site-packages/boto/ec2/elb/loadbalancer.py”, line 324, in get_instance_health
return self.connection.describe_instance_health(self.name, instances)
File “/Library/Python/2.7/site-packages/boto/ec2/elb/init.py”, line 547, in describe_instance_health
[(‘member’, InstanceState)])
File “/Library/Python/2.7/site-packages/boto/connection.py”, line 1166, in get_list
raise self.ResponseError(response.status, response.reason, body)
boto.exception.BotoServerError: BotoServerError: 400 Bad Request
Sender
Throttling
Rate exceeded
1a08966d-48b8-11e4-8ddc-e3515a48666b
Any insights as to what I can change to make this successful would be greatly appreciated. Thank you for your time.