As your company grows and hits daily traffic milestones, it becomes a fact of life that bringing up new servers to handle the load is imperative. Clearly provisioning a group of 20 servers with exactly the same configuration is, well, tedious to say the least.
As such, an industrious IT professional will take advantage of a litany of possible automation tools to reduce the time and manpower needed to do this.
Enter Puppet from Puppet Labs (… from stage left… okay, terrible pun…).
Puppet allows for the creation of servers on the fly using, as they say, a rapid and reusable configuration. This will work on both a cloud based setup as well as a physical or virtual machine setup. Once you have your puppet master installed, it will be the central control for all of your puppet client machines to not only follow a script to install and start your core server needs such as Apache and PHP but also will periodically check to make sure these required services are still running and behaving correctly.
If you haven’t tried Puppet yet and are curious, here is a great ‘Getting Started‘ section from the gurus at Puppet Labs.
In the provisioning of a new server, you bring it up, get Apache running, install your super cool web app that everyone is going to want to get using the puppet script then manually enter each new server into your DNS system after patiently waiting for the server to be fully ready? I think not! That isn’t a very DevOps friendly method!
So how can it work with Dynect?
All you need to do is download the Dynect module from this Github instance, fill in your credentials and your setup (as in, are you using Standard A records, a GSLB implementation, a Load Balancer, or a Failover setup) in the init.pp manifest. Then include this module in your script for provisioning a new server and when your server is up and running, the corresponding record for it will be created inside Dynect. There is an example_site.pp manifest that shows the simplest include of the Dynect module. You will want to make sure your module path in puppet.conf is set up to point to the location of your dyn_module folder. Here’s more info on puppet modules.
The Dynect module’s internals are a set of ruby functions corresponding to each of the setup types (Standard A Record, GSLB, etc.). This makes it clean and simple to add, update or change any functionality. Let me know (kgray-at-dyn-dot-com) if you take advantage of modifying these for your own needs as, in addition to being a technical resource, we love seeing ideas from our users on how they ingeniously use our APIs in different ways!
Now with all this automation you have a beautiful, hands-free server script that will take your server from clean machine to web server in action fulfilling your clients needs, no strings attached (really, you thought I was going to get through the whole blog post without another horrible pun?).
If this all sounds good to you, go ahead and grab the module from Github and start using it. If you don’t have a Dynect account yet, give us a shout at firstname.lastname@example.org and we will hook you up with a demo account to try this out with.