Ansible is a software
platform for configuring and managing computers. It combines multi-node
software deployment, ad hoc tasks execution and configuration management.
Øwritten in Ansible playbooks.
ØAgentless
ØNo client daemon required on target machines.
ØIdempotent
ØCode defines states instead of actions.
ØMulti-node orchestration
ØConfigure many nodes simultaneously.
Can install via apt,
yum, pkg, Homebrew in
addition to from source
Create a inventory file with list of client machines you wish to access via this server under /etc/ansible/hosts. Below is sample inventory file.
Salient Features:
ØDocumented and reusable machine configurationØwritten in Ansible playbooks.
ØAgentless
ØNo client daemon required on target machines.
ØIdempotent
ØCode defines states instead of actions.
ØMulti-node orchestration
ØConfigure many nodes simultaneously.
Why Ansible
It is a free open source application
Agent-less – No need for agent installation and management
Phython/yaml based
Highly flexible and configuration management of systems.
Large number of ready to use modules for system management
Custom modules can be added if needed
Configuration roll-back in case of error
Simple and human readable
Self documenting.
Ansible: getting started
Installing:
$ (sudo)
pip install ansible [--upgrade]
Configuration of ansible
Ansible has a configuration & default inventory file used to define which servers it will be managingCreate a inventory file with list of client machines you wish to access via this server under /etc/ansible/hosts. Below is sample inventory file.
[Servers]
192.168.85.135
192.168.85.136
[Local]
127.0.0.1
[Prod Server]
114.9.75.65
114.9.75.63
114.9.75.61
Run the ping command below to see if indeed you are reaching both client nodes
$ ansible -m ping all
÷all - Use all defined servers from the inventory file.
÷-m ping - Use the "ping" module, which simply runs the ping command and returns the results.
Ansible: structure
Ansible uses playbooks written in the YAML language for orchestration
Inventory file = definition of your architecture
÷Static / dynamic supported
Playbooks
÷can run multiple Tasks and provide some
more advanced functionality that we would miss out on using ad-hoc commands
Roles
÷Roles are good for organizing multiple,
related Tasks and encapsulating data needed to accomplish those Tasks.
Roles have a
directory structure like this:
Files
Handlers
Meta
Templates
Tasks
Variables
Ansible: further reading / meta
Ansible Tower
¡Front end to Ansible
¡Manage team privs etc.
¡RESTful API
¡Audit, scheduled jobs
etc.
¡Fairly
expensive
Ansible Galaxy
¡out-the-box Ansible roles
¡don't have to
reinvent the wheel each time
¡still relatively new
so not too mature
¡installed via simple
CLI.
For more information, please refer below links: