Are there serious problems with an EC2 auto-scaling AMI that automatically downloads newest server from git? 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 &quot;cowboy coding&quot;, 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 &quot;cowboy&quot; 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?
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 :)