What is Ansible?
What is Capistrano?
Want advice about which of these to choose?Ask the StackShare community!
What are the cons of using Capistrano?
What tools integrate with Capistrano?
Shipit, our deployment tool, is at the heart of Continuous Delivery at Shopify. Shipit is an orchestrator that runs and tracks progress of any deploy script that you provide for a project. It supports deploying to Rubygems, Pip, Heroku and Capistrano out of the box. For us, it's mostly kubernetes-deploy or Capistrano for legacy projects.
We use a slightly tweaked GitHub flow, with feature development going in branches and the master branch being the source of truth for the state of things in production. When your PR is ready, you add it to the Merge Queue in ShipIt. The idea behind the Merge Queue is to control the rate of code that is being merged to master branch. In the busy hours, we have many developers who want to merge the PRs, but at the same time we don't want to introduce too many changes to the system at the same time. Merge Queue limits deploys to 5-10 commits at a time, which makes it easier to identify issues and roll back in case we notice any unexpected behaviour after the deploy.
We use a browser extension to make Merge Queue play nicely with the Merge button on GitHub:
Both Shipit and kubernetes-deploy are open source, and we've heard quite a few success stories from companies who have adopted our flow.
#BuildTestDeploy #ContainerTools #ApplicationHosting #PlatformAsAService
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 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.
Out custom recipes makes it simple for developers bootstrap process (using vagrant) and that same recipe is also the one that is used to prep instances
For deploying to a VPS like DigitalOcean. This pairs nicely with https://github.com/cyrusstoller/gardenbed.
Deployment automation all of the websites and apps are deployed to linux via capistrano.