I'm just getting started using Vagrant to help automate setting up local VMs to set up a Kubernetes cluster (development and experimentation only). (Yes, I do know about minikube)
I'm looking for a tool to help install software packages, setup users, etc..., on these VMs. I'm also fairly new to Ansible, Chef, and Puppet. What's a good one to start with to learn? I might decide to try all 3 at some point for my own curiosity.
The most important factors for me are simplicity, ease of use, shortest learning curve.
I have been working with Puppet and Ansible. The reason why I prefer ansible is the distribution of it. Ansible is more lightweight and therefore more popular. This leads to situations, where you can get fully packaged applications for ansible (e.g. confluent) supported by the vendor, but only incomplete packages for Puppet.
The only advantage I would see with Puppet if someone wants to use Foreman. This is still better supported with Puppet.
If you are just starting out, might as well learn Kubernetes There's a lot of tools that come with Kube that make it easier to use and most importantly: you become cloud-agnostic. We use Ansible because it's a lot simpler than Chef or Puppet and if you use Docker Compose for your deployments you can re-use them with Kubernetes later when you migrate
Sign up to add or upvote prosMake informed product decisions
Sign up to add or upvote consMake informed product decisions
What is Ansible?
What is Fabric?
Need advice about which tool to choose?Ask the StackShare community!
Sign up to get full access to all the companiesMake informed product decisions
Sign up to get full access to all the tool integrationsMake informed product decisions
Red Hat, Inc.
For automating deployment or system admin tasks, Shell/Perl are more than enough. Specially Perl one liners, that I use heavily, even to make changes in xml files. But quite often the need is to just check the state of system and run scripts without fear. Thats where I actually needed some scripting language with "state mechanism" associated with it. Salt provided me above similar kind of experience. I tested salt first on a small scenario. Installation of 60 RPMS on a machine. I was pleased that I could achieve that in around 25 lines of code using salt. And eventually I was also able to keep data and code separate. This was another plus point. henceforth I was able to use salt to deploy a large potion Datacenter (apps deployment). I am still working towards orchestration and finding it quite promising. The use of pure python whenever needed to deal with more complex scenario is awesome.
Ansible is the deployment tool for people who don't like deployment tools. It's close to scripting, doesn't pollute your servers with agents or centralized servers, and just makes immediate sense. The entire stack at Cloudcraft.co is orchestrated by Ansible. What does that mean? Beyond the obvious of installing packages and configuring services, Ansible coordinates all the machines into a working deployment: It adds API servers to the loadbancer pool, opens ports on the DB server for the backend servers to connect, gracefully upgrades services in a rolling fashion for zero-downtime deployments etc. And it's so easy to use, it's easier to use than doing things by hand, meaning it's a deployment tool you'll actually use every time!
When it comes to provisioning tens to hundreds of servers, you need a tool that can handle the load, as well as being extremely customisable. Fortunately, Salt has held that gauntlet for us consistently through any kind of issue you can throw at it.
We use Fabric for automating deployment and maintenance tasks: bootstrapping and updating application servers (using the "rolling update" pattern), pulling logs from the servers, running manage.py maintenance commands.
We use Ansible to synchronize the few configuration-options we've taken on our CoreOS-Machines. This makes deployment even easier and the fact that it's Agentless made the decision even easier.
Ansible is used in both the development and production deployment process. A playbook couple with a Vagrantfile, easy deploys a local virtual machine that will mirror the setup in production.
I use Ansible to manage the configuration between all of the different pieces of equipment, and because it's agentless I can even manage things like networking devices all from one repo.
We've built something using SaltStack and Debian Linux to help us deploy and administer at scale the servers we provide for our part- and fully-managed hosting customers.
- Configuration management:
- deploy/install all web/app environments
- simple with Galaxy and playbooks.
- No need any pre-installed agent on remote servers.
Automate everything! I have fabfiles for testing, bootstrapping, deployment, and building. Easy to customize and its pure python.