I'd be fine with the change here, it's going to cause a little bit more activity, but doesn't seem to change the end result.
On Tue, Apr 22, 2014 at 11:25 AM, Bruce Pennypacker < [email protected]> wrote: > I have a bit of a bone to pick with the way the ec2_elb module currently > operates, and I'm wondering if other folks have had issue with this or if > they like the way it currently works. > > A bit of background first, especially for those who aren't EC2 & ELB > experts. Amazon makes their ELB (elastic load balancer) pretty trivial to > use. If you have a server instance registered to an ELB then it basically > can be in one of two states, either InService or OutOfService. A server > that's InService is able to respond to requests. A server that's > OutOfService could be out of service for many reasons. It could be > anything from the server being powered off to a service like Apache not > running to a health check failing to the server being in a transition > period while it's being added or removed from the load balancer. > > If you use the ec2_elb module to remove an instance from an ELB then the > very first thing it does is to check to see if the instance is InService. > If the instance is InService then it removes the instance from the ELB. > However, if the instance is OutOfService then the module immediately > returns with changed:false. The code in the module explicitly checks for > this: > > if initial_state and initial_state.state == 'InService': > lb.deregister_instances([self.instance_id]) > else: > return > > We recently ran into a problem because of this behavior. We have an > ansible playbook that we use to switch our production site to/from > maintenance pages if we ever have problems with the site. We recently had > a site problem so I ran the playbook to switch to our maintenance pages. > It does this by adding a few instances to the load balancer that run static > web pages, then removes all the webapp servers from the load balancer. The > only problem is because all our webapp servers were failing their health > checks Amazon was reporting them as OutOfService, so Ansible didn't > actually remove them from the ELB. We had to log into AWS and manually > remove them from the ELB before we could safely restart them and verify > that they were working properly before adding them back into the ELB. > > Given that the ec2_elb module documentation states that specifying > "state=absent" will deregister an instance from the load balancer, I think > it should be doing it no matter what state the instance is in, not just if > the instance is InService. I'm more than willing to submit a pull request > with the necessary changes, but I'm not entirely certain what the best > approach to take on this matter is. I know Michael prefers to maintain the > default behavior of modules as much as possible, but in this case I'd argue > that it's a bug that instances are removed only if they're in a healthy > state. I suppose we could keep the current behavior and add a new optional > parameter along the lines of "ignore_current_state=true", but I would think > most people would rather have the default be to always remove an instance > and instead perhaps have an optional parameter that would cause an instance > to be removed only if it's healthy. > > -Bruce > > -- > 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/485ebd3f-3e5d-42e0-8b2b-884f5070a0e8%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/485ebd3f-3e5d-42e0-8b2b-884f5070a0e8%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- 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/CA%2BnsWgxd2rvR0hMFHsr0%3DGBOzc_D2d3RvLZYVBOT2FmMnLequg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
