Ansible, Chef, Puppet, or Salt Sup Forums?

Ansible, Chef, Puppet, or Salt Sup Forums?

Ansible if you want something minimal, but want it rolled out asap. Pretty good on resumes too.

Puppet if you need complex shit and want to look for a job.

Salt and Chef are memes.

No matter how many times I read the Puppet or Chef websites I still don't get exactly what they're used for. I mean I have a general idea, but if anyone would be kind enough to explain what they do in normal words that would be appreciated. It's just strange that none of them answer the question "Why do I need this, why would I use this?" directly, they instantly go into random details.

from what I understand they're programs that allow you to configure vast fleets of computers, update/maintain/push configs to them, or designate subsets of the groups of the computers to install certain programs to a certain group, etc. Of course you can use them to install a program on all the computers too.

something like Active Directory on Steroids (and free as in freedom)

Provisioning and Configuration Management are the big reasons I use them.

Would you rather update all your servers from a single interface or SSH into each one individually?

Want to query which version of nginx is installed on all of your web servers?

Want to manually install software and configuration files on 50 new virtual machines or would you rather do it manually?

Ansible et. al does all this tedious shit for you.

>Want to manually install software and configuration files on 50 new virtual machines or would you rather do it manually?

I meant to stay automatically.

I personally use ansible, it is fucking great, easy to install and write scripts.

how can I learn how to use puppet/chef/etc from home when I don't have access to a shitload of computers to use, or the mater

>, or the mater
don't know where that came from what the fuck

Setup some virtual machines.

Use virtualbox to set up 4 lightweight virtual machines

-designate one of them as your master server
-use the other 3 to run your configurations on (web server, db server, etc.)

I was considering VMs. It's a good thing I just built a computer for the sole purpose of running VMs

Well this is already much better than their websites because it's not filled with marketing feel-good buzzwords.
Seeing it put into practical terms makes it clear for me, thanks.
I guess there is some overlap with Docker, but not too much.

I've got a bunch of raspis + my laptop, and I'm trying to set up one of these things so that all my config is in a reasonable place somewhere instead of some random /etc file I might have modified months ago.

Just spent a day trying to install puppet on a pi and failing due to some java bullshit I'm not willing to debug. Was thinking I'd try salt next, but it seems like Sup Forums is pretty hyped about ansible

Good god, devops tools are the worst at marketing bullshit. It seems like they think that if you can tell exactly what it does, they failed.

it doesn't help that the terminology is esoteric as fuck. A "recipe"? Really? Why not something like "blueprint" or "framework" that actually alludes to what the fuck it is.

Recipe isn't the worst term.

A recipe consists of ingredients to make something so it kind of makes sense. Also their product is called Chef, so I see where they're coming from.

I use Chef at work, but I don't like that sometimes attributes are interpreted as arrays or locations in memory. This happened a few times and I was pretty annoyed that I had to rename the attribute across a whole bunch of files.
default['authorization']['sudo']['groups']
default['authorization']['sudo']['users']

I still think clarity beats puns though

I implemented Chef at my previous job. I currently work for a very large sass company and manage puppet for around 1500 nodes. Puppet is a little more flexible when it comes to deploying code due to everything being filesystem based, whereas Chef (with a chef server) uses a database. However, Chef is superior in this regard because you can have multiple versions of the same cookbooks in the same environment. With Puppet it's one module version per environment.

Here are some of my issues with Puppet:
-The only resource that can query system state is exec. This is because Puppet catalogs are compiled on the master. With Chef you can query system state and use it as a conditional with ANY resource. Not only that but you can stick regular ruby code anywhere in your recipes. Chef catalogs are compiled on the node.

-because puppet compiles on the master, your master severs have to be hella beefy. With 1500 servers I need two compile masters with 16gb of ram and 8 cores.

-you can't write ruby in puppet manifests. This is highly annoying at times but now that puppet4 has a proper for each loop it's not so bad

-puppet community modules have no namespace reservation. This means everyone can name their forge modules the same. wtf. With chef community cookbook namespace is first come first serve, so you won't get any conflicts.

Anyway I like chef better than puppet. I have not used salt or ansible.

So, I assume all these tools are strictly for lincux correct?

Cool, good to know. Whenever I use these things I dream of having a thousand node swarm to control, must feel good to set it up and watch it run

I'm new to this shit and still at the stage where I don't get why anything you do with Ansible etc can't be done purely through Vagrant. There's probably a good reason, it just hasn't clicked yet.