tags:

views:

114

answers:

4

My question is: How do you guys deploy the same code from whatever [D]VCS you use on multiple machines? Do you have an automated deployment system and if so what's that? Is it built in-house? Are there out there any tools that can do this automatically? I am asking because I am pretty bored updating up to 20 machines every time I make some modifications.

P.S.: Probably this belongs on ServerFault, but I am asking here because I am thinking at writing my own custom-made deployment system.

+2  A: 

Roll your own rpm/deb/whatever for your package, set up your own repo, and have your machines pull on a regular basis. Its really not that hard to do and its already built-in to your system, is well tested, and loaded with features. You could use something like Func if you needed to push instead.

EvilRyry
A DEBIAN compatible repository is easy to setup and probably takes care of the 80% of your problem.
jldupont
What is Func? How to find it?
temoto
@temotohttps://fedorahosted.org/func/
EvilRyry
+1  A: 

Depending on your situation deploying straight from the versioning system might not always be the best idea. You can only so much by just updating files, and mixing deployment and development probably will make the development use of the versioning system less free.

I see two alternatives that might be interesting.

  • Deploy from your continuous integration server. (add a task that runs after every successful build, copies over files and executes some remote commands, I'm using this to deploy to a testserver and would find it to tricky to upgrade production in such a way)

  • Deploy using an existing package manager. You can set up your own apt (or equivalent) repository and package the updates using apt. Have your continuous build system build apt packages but let an admin decide if the should be pushed to the update server. I think this is the only safe solution for production machines.

Simon Groenewolt
A: 

I use a combination of deb packages with puppet to deploy code and configure a bunch of machines.

Omry
A: 

In most projects i have been involved with the final stage has always been an scripted rsync deployment to live. so the multiple targets are built into this process.

PurplePilot