Ansible and Terraform are market-leading automation tools. These tools are not competing with each other. But great things can be achieved when you combine them together. Terraform is the best multi-cloud provisioning tool for building, changing, and versioning infrastructure efficiently. Ansible on another hand where plays a significant role in configuration management. If the organization can adopt cloud-native tools and software, we might not have a big challenge. But running operations in a hybrid model would be quite challenging and you need more tools set to manage it.
An organization’s ability to quickly build and dispose of cloud infrastructure solutions will determine its future business fate. The following toolsets are used to build the open-source orchestration platform which can help to automation your hybrid environment without any cost.
- Terraform CLI – Multi-cloud provisioning tool
- Ansible Engine – Configuration management tool
- Jenkins/AWX – Frontend GUI and Provide role-based access control
High-level design:
The following diagram shows the high-level design of the environment.
HashiCorp Terraform
Terraform is an open-source infrastructure as a code software tool that provides a consistent CLI workflow to manage hundreds of cloud services. Terraform codifies cloud APIs into declarative configuration files. Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions. Configuration files describe to Terraform the components needed to run a single application or your entire data center. Terraform generates an execution plan describing what it will do to reach the desired state, and then executes it to build the described infrastructure.
Ansible Engine
Ansible engine is one of the most powerful configuration management tools. It’s agent-less and very lightweight to use in the environment. It’s python based orchestration engine that really helps to automate most of the modern operating systems tasks, application deployment, and cloud automation. It runs only on Unix-like systems and can configure both Unix-like systems as well as Microsoft Windows. It includes its own declarative language (YAML) to describe system configuration.
Jenkins
Jenkin’s primary role is to provide the front-end GUI and role-based access. In the enterprise world, this role can be handled by Ansible Tower Enterprise which offers a web console and REST API for operationalizing Ansible across your team, organization, and enterprise. It’s designed to be the hub for all of your automation tasks. It gives you role-based access control, including control over the use of securely stored credentials for SSH and other services. Jenkins ansible plugin helps multi-playbook workflows allow you to model complex processes.
Note:
Using this platform, you might not get the benefits of the Terraform state management and versioning infrastructure.
Low Level Design
This platform can be packaged in a single VM or container. The following low level design shows that how this platform works.
This platform can be easily integrated with the Git backend to store the code and develop it efficiently. You can find many articles in UnixArena regarding ansible engine and Jenkins integration. I will keep adding more articles related to this platform UnixArena.
Leave a Reply