Ansible — An Automation tool
What is Ansible?
Ansible is a software tool that provides simple but powerful automation for cross-platform computer support. It is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration,
It is primarily intended for IT professionals, who use it for application deployment, updates on workstations and servers,
cloud provisioning, configuration management, intra-service orchestration, and nearly anything a systems administrator does on a weekly or daily basis.
Ansible doesn’t depend on agent software and has no additional security infrastructure, so it’s easy to deploy.
👉While modules provide the means of accomplishing a task, the way you use them is through an Ansible playbook.
A playbook is a configuration file written in YAML that provides instructions for what needs to be done in order to bring a managed node into the desired state.
👉Playbooks are meant to be simple, human-readable, and self-documenting.
They are also idempotent, meaning that a playbook can be run on a system at any time without having a negative effect upon it. If a playbook is run on a system that’s already properly configured and in its desired state, then that system should still be properly configured after a playbook runs.
👉Playbooks can also be very complex, with conditionals and variables. However, because most of the real work is done by Ansible modules, playbooks remain brief,
readable, and clear even though they can orchestrate entire networks of managed nodes.
👉Modules are mostly stand alone and can be written in a standard scripting language (such as Python, Perl, Ruby, Bash, etc.).
👉One of the guiding properties of modules is idempotency, which means that even if an operation is repeated multiple times
(e.g., upon recovery from an outage), it will always place the system into the same state.
👉The Inventory is a description of the nodes that can be accessed by Ansible. By default,
the Inventory is described by a configuration file, in INI or YAML format,whose default location is in /etc/ansible/hosts.
👉The configuration file lists either the IP address or hostname of each node that is accessible by Ansible. In addition, nodes can be assigned to groups.
Hootsuite is a social media management system used by businesses and organizations. It allows the execution of social media campaigns on a variety of networks from a secure dashboard. Hootsuite is popular among Fortune 1000 companies.
The main challenge facing Hootsuite was the lack of repeatability. This made automating Hootsuite’s infrastructure a challenge, and Hootsuite were also facing difficulties in application deployment.
To resolve this, Hootsuite introduced Ansible core. This allowed Hootsuite to build servers from scratch and enabled repeatability. In the future, Hootsuite plans to implement an Ansible migration of its app deployment and possibly in ad hoc production server management.
Since performing their Ansible migration, Hootsuite says ops and devs ‘feel safer’. Additionally, Ansible allows developers to repeatedly test server builds on a local level until the team can be sure they work.
Hootsuite intends to use Ansible in many other ways, and as Beier Cai, Director of Technology, Hootsuite Media Inc., explains, “In the beginning I didn’t realize Ansible is good for orchestration as well but found it out quickly and I really loved it as it beats competitors right there.”