Amazon EC2 Instance and Puppet
9 Mar 2012
I finally took the splurge on an AWS micro EC2 (Elastic Cloud Compute) instance. Well, it wasn’t really a splurge since I created a new Amazon account to qualify for their one-year free usage tier.
The meat of the AWS Free Usage Tier (per month):
- 750 hours of EC2 Linux Micro Instance Usage (613MB memory) – the whole month
- 30GB of Elastic Block Storage – preallocated “mountable” disk space
- 5GB of S3
- 15GB bandwidth out
After the period is over (which I may then create another new account), a Micro instance is $.020 per hour, and the EBS volumes are $.10 per GB per month. Not bad at all especially with the recent price drops. Linode was another option, but they had me playing Goldilocks; they offered a few fixed options that were either not enough or too much. Amazon on the flip side is pay-as-you-go (and of course a free year). Perhaps if I used my instance enough, they’ll forget about charging me like they did with my Amazon Prime account that has been good and free since forever.
I found this to be a good chance to practice my Puppet-eering. A month ago, I started a Git repository for what meant to be my Puppet manifests, but I never got around to it. Though with some help from limed and Playdoh’s Puppet template, I found a nice structure for my Puppet files and manifests.
puppet-ngokevin/ |-- files | |-- etc | | |-- apache2 | | | |-- sites-enabled | | | |-- ngokevin.conf | | |-- vim | | |-- vimrc | |-- home | |-- bashrc | |-- beetsconfig |-- manifests | |-- classes | | |-- apache2.pp | | |-- apt.pp | | |-- bash.pp | | |-- beets.pp | | |-- git.pp | | |-- init.pp | | |-- ngokevin.pp | | |-- python.pp | | |-- subsonic.pp | | |-- tzdata.pp | | |-- vim.pp | | |-- wok.pp | |-- puppet-ngokevin.pp |-- pip
I had puppet-ngokevin.pp act as the main manifest, defining parameters and specifying the order in which classes are applied. And it’s smooth sailing from there: bring in configs, install packages, and set up this site. A successful Puppet apply is like rolling a d20. After that, I just pointed my domain name towards the public DNS of my instance, and to the Internet it goes. Next, I need to get a ~30gB EBS volume to store my music for some Subsonic goodness.
I can finally put to rest my home server that’s running under a desk in Portland. You’ve done well, friend.