This Blog covers all the aspects of Ansible, a tool used in DevOps for the Management, Deployment, and Orchestration of IT Infrastructure including the following:
- What is Ansible?
- Why Use Ansible?
- Ansible Use Cases
- Ansible Architecture Diagram
- Ansible Playbook
- What are Inventories in Ansible?
- Ansible Modules
- Ansible Tower
- Ansible Roles
- Ansible Variables
- How to Run the Ansible Commands?
This blog talks about technologies that are part of the Azure DevOps environment. If it’s something in which you have an interest or you want to learn it then you can visit our previous blog to know more about the [AZ-400] Microsoft Azure DevOps certification.
What Is Ansible?
- Ansible is an open-source IT Configuration Management, Deployment & Orchestration tool.
- It aims to provide large productivity gains to a wide variety of automation challenges.
- This tool is very simple to use yet powerful enough to automate complex multi-tier IT application environments.
- Simple, powerful, and agentless IT automation that anyone can use.
- It uses SSH to connect to servers and run the configured Tasks.
- Ansible lets you control and configure nodes from a single machine.
- The project was funded in 2013 and bought by Red Hat in 2015.
Why Use Ansible?
- No Agent: As long as the box can be ssh’d into and it has python, it can be configured with Ansible.
- Idempotent: Ansible’s whole architecture is structured around the concept of idempotency. The core idea here is that you only do things if they are needed and that things are repeatable without side effects.
- Declarative Not Procedural: Other configuration tools tend to be procedural do this and then do that and so on. Ansible works by you writing a description of the state of the machine that you want and then it takes steps to fulfill that description.
- Tiny Learning Curve: Ansible is quite easy to learn. It doesn’t require any extra knowledge.
Ansible Use Cases
- Configuration Management
- App Deployment
- Continuous Delivery
- Security & Compliance
Ansible Architecture Diagram
- Plain-text YAML files that describe the desired state of something
- Human and Machine-readable
- Can be used to build the entire application environment
What Are Inventories In Ansible?
- Static lines of servers
- Dynamic list of servers: AWS, Azure, GCP, etc.
- Other custom things
- Over 1000 modules provided by Ansible to automate
- Modules are like plugins that do the actual work in Ansible, they are what gets executed in each playbook task.
- Each module is mostly standalone and can be written in a standard scripting language (such as Python, Perl, Ruby, Bash, etc.)
Ansible Tower is a GUI and REST interface for Ansible that supercharges it by adding RBAC, centralized logging, auto-scaling/provisioning call-backs, graphical inventory editing, and more.
This command-line tool sends commands to the Tower API. It is capable of retrieving, creating, modifying, and deleting most resources within the Tower.
- A few potential uses include:
- Launching playbook runs (for instance, from Jenkins, TeamCity, Bamboo, etc.)
- Checking on job statuses
- Rapidly creating objects like organizations, users, teams, and more.
- Roles are a way to group tasks together into one container. We could have a role for setting up MySQL, another one for configuring ip tables.
- Roles make it easy to configure hosts. Any role can be performed on any host or group of hosts such as:
- – hosts: all
- – roles:
- – role_1
- – role_2
There are many different ways to source variables:
- Inventories (group vars, host vars)
- Command-line Discovered Variables
- Ansible Tower
How To Run The Ansible Commands?
Ad-Hoc: Ansible <inventory> -m
AD-HOC Commands Examples
Transferring file to many servers/machines
$ Ansible Abc -m copy -a “src = /etc/yum.conf dest = /tmp/yum.conf“
Creating a new directory
$ Ansible ABC -m file -a “dest = /path/user1/new mode = 777 owner = user1 group = user1 state = directory“
Deleting whole directory and files
$ Ansible ABC -m file -a “dest = /path/user1/new state = absent”
- [AZ-400] Azure DevOps Certification Path
- [AZ-400] Roles And Responsibilities As An Azure DevOps Engineer
- [AZ-400] Microsoft Azure DevOps Certification Exam: Everything You Need To Know
- [AZ-400] Microsoft Azure DevOps Training: Step By Step Activity Guides/Hands-On Lab Exercise
- [AZ-400] Azure DevOps Services for Beginners
- [AZ-400] Designing and Implementing Microsoft DevOps Solutions [Official Page]
- Azure DevOps Service Hooks | Subscription Of Service Hooks | Release Approvals
- SonarCloud Azure DevOps | Integrating SonarCloud In Azure
- Azure DevOps Environments | How To Setup DevOps Environment | Approval Checks | Azure DevOps Pipeline
Next Task For You
Begin your journey towards becoming a Microsoft [AZ-400] Certified Azure DevOps Engineer and earning a lot more in 2020 by joining our FREE Masterclass.