Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to sync compiled code to multiple EC2 instances

We have several EC2 instances behind a load balancer. Each server has several ASP.NET applications deployed to it. I'm looking for an easy, realtime, automated way to deploy new compiled code to all instances simultaneously.

I've seen solutions using source control repositories like SVN or Git, but this doesn't seem like an appropriate use of the technology for us since we're deploying compiled code to the EC2 instances - not source code.

I've also set up Dropbox to accomplish the sync. It somewhat works, but has its quirks. For instance, you need to build your directory structure around the "one root sync folder" limitation. Any other reason why we definitely should NOT use dropbox for this?

Writing a custom application using the S3 API is an option, but we'd prefer a third party solution over writing more code.

This seems like a common scenario, but I haven't found any good solutions yet.

like image 729
jaminto Avatar asked Mar 16 '11 04:03

jaminto


People also ask

Can we use same key pairs with multiple instances?

Bottom line: You can use the same keypair on multiple instances and you can also use multiple keypairs on the same user on an instance. Save this answer.

What are the 3 different methods that you connect to a EC2 instance?

AWS support many ways to let you connect to your servers(EC2), we will introduce three methods : SSH, Instance Connect, System Manager and deep dive in EC2 Instance Connect and System Manager – Session Manager.


2 Answers

Elastic Beanstalk seems to be the best route to go now. You simply push your web deploy project to an elastic beanstalk environment and it deploys code to all of your instances. (It manages auto scaling for you.) It also makes sure that new instances launched will have you latest code and it keeps previous versions which you can easily roll back to.

If your asp.net website needs to be auto scaled on AWS, Elastic Beanstalk is really the best end-to-end solution.

like image 91
jaminto Avatar answered Oct 19 '22 10:10

jaminto


Since these are ASP.Net applications and IIS, why not use Web deploy. It's MADE for this.

http://www.iis.net/download/webdeploy

Web Deploy allows you to efficiently synchronize sites, applications or servers across your IIS 7.0 server farm by detecting differences between the source and destination content and transferring only those changes which need synchronization. The tool simplifies the synchronization process by automatically determining the configuration, content and certificates to be synchronized for a specific site. In addition to the default behavior, you still have the option to specify additional providers for the synchronization, including databases, COM objects, GAC assemblies and registry settings.

like image 22
Chris Kooken Avatar answered Oct 19 '22 08:10

Chris Kooken