Ansible streamlines automated server provisioning
February 27, 2017

Ansible streamlines automated server provisioning

Eric Mann | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User

Overall Satisfaction with Ansible

We use Ansible to automate provisioning of both Amazon AMIs and other EC2 resources. It orchestrates the installation of all of the software we need to power our platform in production and leaves us with a reliable, predictable machine state on every run.

We've also used Ansible to vary the state of dependencies installed on a machine after it's been deployed to production.
  • Predictable machine state.
  • Cross-platform operation. We run Ansible from both Mac and Linux reliably.
  • There is no "official" Windows support for a host machine. Some of our team is on Windows, so this is a major drawback.
  • Some of the community-maintained packages break dependencies, requiring us to toggle a "verbose" flag in Ansible to dive into the details of what failed.
  • A recent update to Ansible itself broke on the LTS version of Ubuntu we were using. As older versions of Ansible had been purged from the package manager, we had to switch to a different installation routine entirely (using Python and pip) to restore to an active, reliable state.
  • The time savings of not having to manually provision servers has been huge!
  • Keeping multiple servers in complete parity with one another has been incredibly helpful in reducing the number of single-machine configuration bugs present during development.
SaltStack's syntax and configuration felt a little too much like "black magic" for reliability. Several third-party packages were referenced by name only and either hid or obfuscated how they installed their dependencies (or were targeting only one distribution of Linux and failing to disclose incompatibilities with others). Ansible is far more flexible and the community package support is far superior.
Well suited: Automatic server provisioning for multiple deployment environments (development, staging, quality assurance, production, etc). It's also useful for kick-starting a new engineer's development environment so they can be productive on day 1.

Less appropriate: Rebuilding projects for integration testing. Tests are things that (should) run frequently on every build. As Ansible downloads a lot of resources over the wire (and often without a local cache), this can drastically increase the time required for an incremental build and test.