Manual setup + cloning vs. Puppet/Chef/Ansible/Salt

November 21, 2014 2.9k views

I find it much easier to setup a server once manually with all the configuration and software needed, save it as an image or snapshot, and then as more servers are needed, clone the image/snapshot and deploy my app's code.

I understand the basics of configuration management tools but none in particular. Am I doing myself a disservice by not using Puppet/Chef/Ansible/Salt?

I'm one guy and don't have a lot of time to learn a big tool which I'm clearly trying to avoid.


2 Answers

Hi John!
If you are interested in a simple tool that will ease the administrative overhead of using something like the CM tools you mentioned, you might want to checkout (R)?ex. It will allow you to do many of the tasks other CM tools do, but without client installs, crazy configuration, etc. It does not require a software to be installed on the client machines as it uses SSH. Let me know if you have any questions!
-Cooper Thompson

Hi John,

My policy is to keep it as simple as possible when approaching any tool. I've tried many orchestration tools but never felt at home with any of them.

Personally, I use and love Ansible. It's simple and powerful enough for me to feel right using it.

There is nothing wrong with your method, ie. make a snapshot, clone. Rinse and repeat. I used to do the same thing.

Where any of the orchestration tools shine are slightly more complex scenarios or really time intensive repetitive tasks.

For example, I have a client that have an ecommerce application running on DO with the following setup:

  • 1x Load balancer node - nginx
  • 2x applications nodes - nginx + php-fpm
  • 1x Db server running Percona Mysql
  • 1x staging server

Normal monthly maintenance for me is to do the following:

  1. Disable New Relic/Pingdom monitoring.
  2. Update the staging server to see if anything major broke.
  3. Put app into maintenance mode which requires setting Nginx load balancer to point to static site.
  4. Take 2x app + 1x db server offline and make snapshots. (Always backup!)
  5. Once backed up, update the systems.
  6. Test the applications.
  7. Upgrade load balancer
  8. Put the live site back online.
  9. Enable New Relic/Pingdom monitoring.
  10. Crack open a beer for a job well done.

Doing this manually, can be time consuming so an orchestration tool like Ansible lends itself well to automating this.

I can run a single command, to do all of the above in a scalable fashion. Now imagine if the setup involved 20 servers.

Have another answer? Share your knowledge.