Innovate anywhere, anytime withruncode.io Your cloud-based dev studio.
Server Management

Ansible for Server Process Automation

2022-07-25

Ansible is one of the few automation tools which uses an agentless architecture, where you don't need to install daemons in client nodes for interacting with a controlling system. It combines multi-node software deployment, ad-hoc task execution, and configuration management.

In this Post, we will set up and configure ansible to run simple configurations.

Installing Ansible:

Installing Ansible is very simple with these three commands:

sudo apt-add-repository ppa:ansible/ansible

sudo apt-get update

sudo apt-get install ansible

Customizing Ansible to run in the Single Endpoint:

Ansible although mostly intended and used for Multi-Node Configuration management and automation, it can run on your own system. 

Edit the ansible hosts at /etc/ansible/hosts 

Comment every line and add this at bottom of configuration or simply back up the ansible hosts and create new file 

localhost ansible_connection=local

the localhost variable can be callable in the ansible Configurations

PlayBooks:

Playbooks are ansible configurations. these configurations are written in YAML Format. PlayBook simply put, is not just a configurations but also to orchestrate steps in a manually ordered process.

Basic PlayBook to check ansible version:

- hosts: local
  remote_user: root
  tasks:
    - name: Check Ansible version
      command: ansible --version
      register: ansibleVersion

    - name: Print version
      debug:
        msg: "Ansible Version: {{ ansibleVersion.stdout }}"

In Above configuration host refers to the variable we mentioned in the ansible hosts file (/etc/ansible/hosts). Here tasks refer to the order in which it has to execute the playbook. so first we will check ansible version and store it in a variable called ansible-version and print it back to the shell. 

Ansible tasks can be of any type

name will be the name of the task and then follows the task it has to do

command here refers to the shell command it has to execute. command keyword can be interchanged with shell keyword if you are sure its exit code is non-zero.

register is a keyword used to store the output of the above task. so we are storing ansible --version output in a variable ansible-version

debug is to print the message onto the shell

Running PlayBooks:

ansible-playbook .yml

Every Ansible task should have a name although not mandatory ( as it takes from the task we give directly), it is useful for debugging in case of failure.

*** note that ansible uses /bin/sh but not /bin/bash while executing shell commands.