LebGeeks

A community for technology geeks in Lebanon.

You are not logged in.

#1 April 18 2016

rolf
Member

Configuration management: Vagrant, Chef, Puppet, Salt, etc?

To those who have some experience, knowledge on configuration management systems, can you advise me?
I would use it mostly for setting up web development environment (mainly apache, mysql, node.js) but may want to use it for more advanced tasks when there is a need (hosting, etc.)
I'm looking for something lightweight and elegant, as always.
From the wikipedia article, Puppet looks OK, but so do the others, probably, if I read about them.

Offline

#2 April 19 2016

Joe
Member

Re: Configuration management: Vagrant, Chef, Puppet, Salt, etc?

I use a lot of these tools daily. The short answer is you want to start using Ansible. The longer

Which features do you need?

Since you're just starting you will want to focus on simple cases, i.e. setting up a single node LAMP server for instance. However as you get comfortable with the basic idea, you may want to define your needs more specifically:

  • Do you want the tools to do the machine provisioning for you? Do you need a virtual machine locally? A Cloud instance? A physical server? And more importantly do you need your configuration management tool to be in charge of this?

  • Do you need an orchestrator? All of these tools present ways to manage orchestration, i.e. managing the order in which your configuration is applied. This is always useful for multi node deployments

Obviously you'll find different tools for different jobs. Vagrant is used for local VM provisioning, Puppet uses MCollective for orchestration and cloud providers provide APIs you can plug into every one of these tools.

Pick your file format

Assuming you have no particular needs, you want to focus on the format/DSL used to manage your configuration. Here are the ones I've worked with:

  • Puppet: Puppet uses a specific DSL to describe your configuration.

  • Chef: Very similar to Puppet, its DSL is very familiar to Ruby developers

  • Ansible: My current favorite, uses Yaml files for description. I find their format to be the easiest to reason with

I'm not familiar with Salt, but from what I've seen it looks like a pretty complete system.

Quick note about masterless deployment

Last time I played with Puppet and Chef, they required a single node to act as master, which is a major pain in the butt. Salt and Ansible quickly grew in popularity because they do not require a master at all. This shouldn't affect you too much if you deploy everything on a single node.

Offline

#3 April 19 2016

rolf
Member

Re: Configuration management: Vagrant, Chef, Puppet, Salt, etc?

Thanks Joe for answering.

Yes having a master node sounds like overkill, so that reduces the choices.

I have LAMP projects and these require a MySQL database (with preloaded data), a couple of PHP configuration options.
I use LAMP mostly by necessity, so I would would like to keep myself open to other platforms.

A declarative language sounds nice. I'd be happy to learn Ruby, but I'm not a huge fan of Yaml (but honestly, whatever).

I dual boot (Windows and Linux). I'm hosting the source code on a shared partition, and the MySQL server on a VirtualBox VM. It's a bit clunky but have not found better for sharing the DB.

My "dream" would be to commit a bunch of files to the repo, and they would contain the information needed to set up and configure the environment (including DB scaffolding) on all platforms, automatically, but I don't really want to create a new VM for each project! That sounds like a good use case for Java, maybe.

Last edited by rolf (April 19 2016)

Offline

#4 April 19 2016

tzuka
Member

Re: Configuration management: Vagrant, Chef, Puppet, Salt, etc?

i've been searching for a CM solution too and so far the best approach is to have Foreman with Ansible plugin.
I didn't start to play with the setup yet but the more i read the more i'm convinced this is the way to go.

Offline

#5 April 20 2016

Joe
Member

Re: Configuration management: Vagrant, Chef, Puppet, Salt, etc?

We use foreman extensively. The dashboard is a bit weird, but once you get used to it it rocks. It integrates very well with Puppet. I haven't touched the Ansible plugin yet (but I want to).

Offline

#6 April 20 2016

tzuka
Member

Re: Configuration management: Vagrant, Chef, Puppet, Salt, etc?

Did you try provisioning VMs on VMware? I've seen demos but again didn't have the time to test. Hopefully will allocate a time next month to start testing.

Offline

#7 April 22 2016

Joe
Member

Re: Configuration management: Vagrant, Chef, Puppet, Salt, etc?

Hey @tzuka, I'm not familiar with the VMware tools, but I hear a lot of good things about them. I'm much more familiar with open source tools, so if you have questions, don't hesitate to ask.

Offline

Board footer