It's really something that is specific to what we do and I had/have no intention of making it generic or let alone designing the type of thing that helps people who don't have experience doing sys admin - because I want to stay focused. For those that are interested these are the main techniques I use:
First I go to slicehost and create a machine, they send me a email when it's done (about 5 mins or so).
I have one install script and a syncing script, The install scripts one calls the sync script. After the machine is live I just use the sync one to update it. $hostname is the name or IP address of the new machine.
First I copy SSH authorization over, so I can login without a password (assumes you have created SSH keys already - which is one time event):
My script took me a few hours to write and I did so that I can scale up (and down) in a hurry by adding a machine rather than taking the existing machines (there are 2) down whilst slicehost resize it - which is not something I wanted do while there is a lot of traffic coming in. We don't really need multiple machines, but buying one big slice is expensive to have running the whole time.
First I go to slicehost and create a machine, they send me a email when it's done (about 5 mins or so).
I have one install script and a syncing script, The install scripts one calls the sync script. After the machine is live I just use the sync one to update it. $hostname is the name or IP address of the new machine.
First I copy SSH authorization over, so I can login without a password (assumes you have created SSH keys already - which is one time event):
ssh root@$hostname "mkdir /root/.ssh; echo \"`cat /root/.ssh/id_dsa.pub`\" > /root/.ssh/authorized_keys2"
Then run various commands on the new machine. I put these in a file "commands.fragment". which contains things like
and so on, then run it: The I run the syncing script (which I'll rerun over the life of the machine) Then I sync my code across: and programs I've complied: and so on.Now we have everything in place we can start the services for whatever the box does, for example to start a web server:
And that's it.My script took me a few hours to write and I did so that I can scale up (and down) in a hurry by adding a machine rather than taking the existing machines (there are 2) down whilst slicehost resize it - which is not something I wanted do while there is a lot of traffic coming in. We don't really need multiple machines, but buying one big slice is expensive to have running the whole time.
Hope that helps.