This post was originally published on the
XLAB Steampunk blog.
Ansible and Jenkins are popular, well-acclaimed automation tools used to implement DevOps principles. Can, or better yet, should they be compared? Let’s find out!
Ansible is used for various automation applications like cloud provisioning, configuration management, and intra-service orchestration, while Jenkins simplifies application development and deployment, used for building, testing, and deploying software projects.
Often used in the Jenkins pipeline flow, Ansible can be used for reusing roles and playbooks to provision target environments. Jenkins can be the orchestrator instead of the executor for shell scripts this way. Ansible shines at resource orchestration and software provisioning, whereas Jenkins shines at CI/CD deployment and plugins. Though the two tools are basically DevOps tools, they have many differences in terms of features and functionalities. They can, however, also complement each other.
Let’s take a closer look.
Background and history
Origins and evolution of Ansible
In case you are a science fiction fan, you will be happy to know the term “ansible” was coined by Ursula K. Le Guin in her 1966 novel Rocannon’s World, and refers to fictional instantaneous communication systems. The Ansible tool was developed by Michael DeHaan, and Ansible, Inc. was founded in 2013 by DeHaan, Timothy Gerla, and Saïd Ziouani. It was acquired by Red Hat in October 2015, and is now included as part of the Fedora distribution of Linux, and is also available for Red Hat Enterprise Linux, CentOS, openSUSE, SUSE Linux Enterprise, Debian, Ubuntu, Scientific Linux, and Oracle Linux via Extra Packages for Enterprise Linux, as well as for other operating systems.
Origins and evolution of Jenkins
The Jenkins project was created in 2004 by Kohsuke Kawaguchi to perform continuous integration, which allowed for code testing before commits to the repository. Once his colleagues got wind of what he was up to, everyone wanted to use it. Jenkins was born, available as open source. The name was chosen because it sounds very British, and the idea behind it is that Kawaguchi jokingly calls the tool “a butler,” which is also reflected in the logo. Today, Jenkins orchestrates the entire software delivery pipeline, called continuous delivery. In combination with DevOps culture, the delivery of software is drastically faster.
Key features and use cases of Ansible and Jenkins
Ansible and Jenkins have a lot in common, but their strengths and weaknesses, as well as primary use cases are significantly different. While both are open source IT automation tools, Ansible does not require additional software, and is considered easier to set up than other automation tools. On the other hand, Jenkins is primarily designed to support CI/CD and is a more heavyweight application.
A technical comparison:
|Features and use cases
|A configuration management and orchestration tool for automating infrastructure and application deployment, setup, and administration.
|A CI/CD tool primarily used for building and testing software projects.
|A declarative configuration language and playbook-based approach to define and execute tasks.
|Configuration and management of builds with a web-based interface and a job-based strategy.
|Plugins and integrations
|Ansible has a large number of integrations available, including support for cloud providers and infrastructure as a service (IaaS) platforms. It can be extended using custom modules and plugins to support different automation scenarios.
|A large number of plugins are available that allow it to integrate with a wide range of tools and services, including version control systems, testing frameworks, and deployment tools.
|Written in Python; syntax used in playbooks is YAML.
|A wide range of programming languages is supported: Java, Python, and C++. Syntax is Groovy-based DSL (Domain Specific Language) for configuring build jobs.
|Designed to be lightweight and can be used to manage large numbers of servers and devices.
|Designed to be scalable and can be run on a single machine or as a distributed system.
|Is primarily used to automate the deployment and management of infrastructure and applications in cloud environments, but can also be used to manage on-premises servers.
|Can be used to automate the build and deployment process for applications running in a variety of environments, including on-premises servers and cloud platforms.
Community and support
Ansible is an open-source automation tool that is free to use. The tool has an active user community that can help answer any questions, and you can use Ansible Galaxy, a repository for Ansible roles and collections, also available for free. The company organizes summits, meetups, and has an overall very vibrant dedicated community for both the open source tool, and the enterprise edition (Ansible Automation Platform) where premium support is included, as well as access to certified Ansible Collections in the Automation Hub, and other tools and features not available in the free open source tool.
Jenkins is also an open-source platform available for free, with robust community support that holds public meetings and conferences to get more input and work for the better.
Which tool to choose?
1. Pros and cons of using Ansible
Ansible will likely be a good fit for teams that need IT automation software capable of handling complex cloud environments, streamlining configuration and provisioning.
2. Pros and cons of using Jenkins
Jenkins is an excellent CI/CD tool that can extend its use with plugins significantly. CI/CD and complex tech stacks are Jenkins’ domain.
There has always been an ongoing debate whether Ansible or Jenkins is better for a business organization. The fact remains that both Ansible and Jenkins have made it simpler for developers to run efficient operations and help a company succeed.
When choosing between Ansible or Jenkins, your business makes the final call. Ansible is primarily used as a configuration management and orchestration tool used to automate infrastructure and application deployment, setup, and administration. Testing automation can also be applied, but that is not its primary intended use.
Jenkins is generally regarded as a better choice for CI/CD. Support is available for testing frameworks, plugins to create, test and deploy software, as well as code coverage tools, and static analysis tools. You can use it to send test results to developers, execute tests after code is submitted to a version control repository, or generate reports on test coverage. The myriad of available plugins can interact with frameworks and testing tools as well.
To sum up, if you want a tool for testing software projects via CI/CD, Jenkins is generally considered to be a better choice, while Ansible is better suited for automating the deployment, configuration, and management of infrastructure and applications. Both tools can be a part of a larger testing and deployment pipeline and can happily coexist and complement each other.