Ansible is an open-source automation tool used for configuration management, application deployment, orchestration, and IT infrastructure automation. Developed by Michael DeHaan and now maintained by Red Hat, Ansible uses simple, human-readable YAML files called playbooks to define automation tasks. Unlike some tools, it operates in an agentless manner, relying on SSH or APIs to communicate with managed nodes, which simplifies setup and reduces overhead; this approach may also align with an organization’s security approach vs. an agented paradigm. Ansible supports scaling from small environments to large enterprise infrastructures, integrating easily with cloud providers, containers, and CI/CD pipelines. Its simplicity, flexibility, and reliability make it a popular choice for DevOps teams.
Tools that provide configuration management and are most directly comparable to Ansible include:
Some use cases for Ansible include the provisioning of infrastructure, often in the cloud. Certain provisioning tools may provide a viable of even better alternative for such usage of Ansible, such as:
It is fairly common for Terraform to be used to define infrastructure as code such as server provisioning, whilst Ansible is then used to provide the configuration management for the servers provisioned.
Ansible and Jenkins are both popular tools in DevOps, but they serve different purposes. Ansible is mainly a configuration management and orchestration tool. It is used to automate tasks such as provisioning servers, configuring software, deploying applications, and managing infrastructure. Ansible is agentless and applies instructions defined in YAML playbooks. It is best for ensuring servers, applications, and environments stay in the correct state and can scale easily across many systems.
Jenkins, on the other hand, is a continuous integration and continuous delivery (CI/CD) tool. It automates the build, test, and deployment stages of software development. Jenkins uses a Jenkinsfile, written in Groovy, to define pipelines that control how code is compiled, tested, and released. It relies on a master/agent architecture, where agents execute jobs triggered by the Jenkins server. Jenkins integrates well with version control systems, testing frameworks, Docker, and Kubernetes, making it a central tool for development workflows.
In practice, the two tools can complement each other. Jenkins handles building and testing code, while Ansible takes care of provisioning infrastructure and deploying the final application to servers or cloud environments. The two tools are often used together, Jenkins can trigger Ansible playbooks after a build/test stage to deploy an app. For example:
The two tools are not interchangeable, for further details and community discussion, see:
Automation Controller is the command and control center for Red Hat Ansible Automation Platform. It includes a webUI, API, role-based access control (RBAC), a workflow visualizer, and continuous integration and continuous delivery (CI/CD) integrations.
Ansible Tower previously included the webUI and API (control plane) and execution plane (command-line Ansible) on every single node. With Automation Controller, Red Hat have separated the control plane from the execution plane so that you can have multiple nodes—for example: virtual machines or servers—that are specifically dedicated to either control (webUI) or execution (running a playbook). This helps make it work more seamlessly on Kubernetes environments such as Red Hat Openshift.
Ansible Automation Controller offers multilevel access delegation and role-based access control to an organization. The organization is nothing but a logical collection of Users, Teams, Projects, and Inventories. It is the highest level in the Ansible Automation Controller object hierarchy. To support multiple clients from one umbrella, you could create an organization for each client and manage multiple teams under that. The following figure gives you a pictorial representation of the organization hierarchy in the Ansible Automation Controller.
Organization hierarchy in Ansible Automation Controller
Monitoring your Ansible Controller (the control node where playbooks are executed) is important because it’s the brain of your automation setup. If the controller is slow, overloaded, or misconfigured, it impacts all your playbooks and managed nodes.
eG Enterprise offers full-stack, custom-built monitoring integrations for Ansible Controller and Ansible Tower technologies