Ansible vs Fabric: What are the differences?
Ansible: Radically simple configuration-management, application deployment, task-execution, and multi-node orchestration engine. Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates. Ansible’s goals are foremost those of simplicity and maximum ease of use; Fabric: Simple, Pythonic remote execution and deployment. Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution..
Ansible and Fabric can be categorized as "Server Configuration and Automation" tools.
"Agentless" is the top reason why over 251 developers like Ansible, while over 19 developers mention "Python" as the leading cause for choosing Fabric.
Ansible and Fabric are both open source tools. It seems that Ansible with 38.2K GitHub stars and 16K forks on GitHub has more adoption than Fabric with 11.4K GitHub stars and 1.73K GitHub forks.
DigitalOcean, 9GAG, and Rainist are some of the popular companies that use Ansible, whereas Fabric is used by Instagram, Coursera, and Robinhood. Ansible has a broader approval, being mentioned in 960 company stacks & 587 developers stacks; compared to Fabric, which is listed in 147 company stacks and 38 developer stacks.
What is Ansible?
What is Fabric?
Want advice about which of these to choose?Ask the StackShare community!
What are the cons of using Fabric?
What tools integrate with Fabric?
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!
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.
- 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.