1

I'm converting some servers from manual scaling (with a load balancer) to auto-scaling. I'm currently using an Ansible script to manage upgrades, and I wouldn't want an automatically created instance to not be using the newest version of the software. I created an AMI that will download the newest commit from a chosen branch on first boot.

I've since realized my approach is somewhat like "cowboy coding", since AWS provides a mechanism to replace auto-scaling instances when there should be an update. (If using that, my existing update script would become obsolete, and I guess the update would entail creating a new AMI containing the new server version.)

Are there any serious problems with using the "cowboy" approach? I realize auto-created servers might end up with newer code than the other servers (if someone pushes but does not deploy their code changes). I wonder whether auto-scaling will cause Ansible scripts to fail if servers are terminated while being processed by Ansible. What have I missed?

2

What you're going to do is only calling for inconsistencies between your nodes.

I wouldn't do any deployment during the instance boot-up, instead install AWS CodeDeploy as part of your boot-up (or bake it into the AMI) and once the instance boots up it contacts the CodeDeploy service and obtains the newest code version.

Likewise if you need to roll-out a newer code version push it to CodeDeploy and it will take care of updating all the servers in your Auto-Scaling Group in a consistent, predictable way.

With ASG you really really want to prevent inconsistencies between the nodes and this is one of the ways to do it.

Hope that helps :)

| improve this answer | |
  • Thank you. By the way, how do yo learn about techniques and services you don't even realize you should be asking about? Is there a modern book that treats AWS best practices, or do you just read the docs from start to end? – piojo Aug 19 at 3:30
  • 1
    @piojo Heh, that's a million dollar question. I don't know every detail of every service but it's useful to know what exists out there. To stay up to date you can for example subscribe to AWS blog, attend Cloud / DevOps / etc meetups, watch conference keynotes where they announce new services (e.g. AWS re:Invent keynotes on YouTube), etc. Also try to get AWS certified - you'll learn a lot while preparing for it. – MLu Aug 19 at 3:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.