ANSIBLE: the simplest open-source automation engine
Ansible is an open-source automation engine and it automates cloud provisioning, configuration management, and application deployment. Once installed on a control node, it’s an agentless architecture, connects to a managed node through the default Open SSH connection type. Michael DeHaan, the author of the provisioning server application cobbler and co-author of the Func framework for remote administration, developed the platform.
Automation engine is Esko’s workflow server. It automates prepress tasks, which speed up the process but also reduces the error rate and the need for operator intervention. Esko’s is a graphic arts company producing prepress software and hardware for the packaging and labels, sign and display, commercial printing and publishing industries. Ansible can be deployed to virtualization environments and public and private cloud environments like VMware, Amazon web services etc.
Cloud provisioning is the allocation of cloud provider’s resources, to a customer. When a cloud provider accepts a request from a server, it will create automatically the appropriate number of virtual machine’s and allocates the resources to support them. It provides virtual machines for the customers, behalf of their request and allocates it to them.
Configuration management is a system’s engineering process for maintaining consistency of a product’s performance, functional and physical attributes with its requirements, design and operational information throughout its life. Deployment should be interpreted as a process that has to be customized according to specific requirements or characteristics. This activity can occur at producer side or customer side or in both.
As with most configuration management software, Ansible distinguishes two types of servers:
- Controlling machines
Controlling Machines: This is where orchestration begins. Nodes are managed by a controlling machine over SSH. The controlling machine describes the location of nodes through its inventory.
Nodes: Ansible deploys modules to nodes over SSH. Modules are temporarily stored in the nodes and communicate with the controlling machine through a JSON protocol over the standard output. When Ansible is not managing nodes, it does not consume resources because no programs are executing for Ansible in the background.
Ansible uses an agentless architecture when compared with other configuration management software like Chef, Puppet, and CFEngine. With agent-based architecture, nodes must have a locally installed daemon which communicates with a controlling machine. Having an agentless architecture, nodes are not required to install and run background daemons to connect with a controlling machine. This type of architecture reduces the overhead on the network by preventing the nodes from polling the controlling machine.
Design goals of Ansible include:
Minimal in nature
Low learning curve
Ansible is used by IT teams, by ansible tower. It is an API, web service, and web-based console. Inventory is a description of the nodes, can be accessed by Ansible. By default, the Inventory is described by a configuration file, in INI format, whose default location is in /etc/ansible/host. The configuration file lists either the IP address hostname of each node that is accessible by Ansible. In addition, nodes can be assigned to groups. Ansible can deploy big data, storage, and analytics environments in Hadoop, Riak, and Aerospike. For all the three, it helps to manage each node’s resource consumption, consuming CPU time and memory in the process. It provides monitoring capabilities that measure such properties as available CPU resources, which can help in the supervision of these nodes.
Vishnu Priya Bose C. is B.Tech graduate in Computer Science from College of Engineering, Cherthala. She has a passion towards IT and is active in updating the latest developments in IT. She loves to share the information and her views on latest technology in media. Currently, she is doing RHCE certification programme.