I have manually followed DigitalOcean's guides in the past with success[1][2]. Do you go beyond what the linked guides recommend or use a configuration management solution (e.g. Ansible)? I'm curious what, if anything, people are doing.<p>[1] https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04
[2] https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-ubuntu-14-04-servers
Bash scripts -- write scripts, check them into git, make sure they are idempotent and repeatable. Whenever you start something new, reuse them and fix whatever broke since the last time.<p>For testing the scripts, I've used virtualbox -- install the latest ubuntu server LTS into a VMinstall your ssh keys, dotfiles, etc but leave it otherwise bare-bones. Then, clone it (this takes just a few seconds) and do your testing inside the clone. When you need a clean environment, delete the clone and create a new one... Makes for fast iteration on testing that install scripts always work. Don't configure anything by hand -- learn enough sed/awk/grep/etc to modify what configs you need without invoking an editor.<p>If you need to scale this up to something real and in production on multiple systems -- then start learning Ansible / Salt / etc. Doing in those systems what you now have documented in bash scripts will be some work, but doable.
I wrote Chef script (<a href="https://github.com/cupnoodle/rails-server-starter-pack" rel="nofollow">https://github.com/cupnoodle/rails-server-starter-pack</a>) for setting up Rails stack in VPS. Chef is similar to Ansible, I think it is quite handy.
Depends on what you mean by "personal projects". I have never used the likes of ansible for personal projects. Are you thinking of installing rails, django or a lamp stack? Or setting up a VPN? Really depends on the use cases.
Is there a reason you're doing this stuff manually instead of using something like Elastic Beanstalk or Lambda on AWS (or the equivalents on Azure or Google)?