Ansible

= Installation =

Adding Repository: sudo apt-get update sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible

Installation: sudo apt-get update sudo apt-get install ansible

= Prepare the Remote Host = Generate SSH Key on the Ansible Server: ssh-keygen Copy the keys to the Remote Server: ssh-copy-id -i ~/.ssh/id_rsa.pub aman@10.100.8.103 Test the Connection using SSH Keys: ssh aman@10.100.8.103

= Configure Ansible = Edit Ansible Hosts File: sudo nano /etc/ansible/hosts

Create a Host: my_server ansible_ssh_host=10.100.8.103

Or Create a Group: [my_web_servers] host1 ansible_ssh_host=192.0.2.1 host2 ansible_ssh_host=192.0.2.2 host3 ansible_ssh_host=192.0.2.3

= Execute Commands = ansible -m ping all ansible -m shell -a 'free -m' host1

= Notebooks = Puppet => Module Chef => Cookbook
 * Ansible Command line can be used to make small changes.
 * Real Usage of Ansible is its scripting capabilities using - Playbooks.
 * Use Playbooks to perform many actions on multiple machines.
 * Playbooks are written in - YAML


 * Playbooks have 3 sections:
 * 1) Target Section - Defines all Hosts on which this playbook will be executed.
 * 2) Variable Section - Defines variables which cab be used from the playbooks.
 * 3) Tasks Section - Lists all modules intended to run in order.

MOTD Playbook
Create Playbook: sudo nano /etc/ansible/test1.yml

Paste the below data: --- - hosts: host1 user: root vars: motd_welcome: ‘Welcome to aman.info.tm\nThis is second Line.\n’ tasks: - name: sample motd copy: dest: /etc/motd content: “” Run the playbook: ansible-playbook test1.yml

Apache Server Playbook
Create a Playbook: sudo nano /etc/ansible/test2.yml

Paste the below data: --- - hosts: host1 user: root vars: html: ' Welcome to Aman.into.tm\nThis is second Line.\n ' tasks: - name: installing apache2 action: apt name=apache2 state=installed - name: copy index.html copy: dest: /var/www/html/index.html content: "" - name: restart apache2 service: name: apache2 state: restarted

Execute the playbook: ansible-playbook -v test2.yml --step

AVI Deploy VS
- hosts: localhost connection: local roles: - role: avinetworks.avisdk tasks: - name: Create a Pool avi_pool: controller: 10.10.26.40 username: admin password: Admin@123 name: test_aman description: test state: present health_monitor_refs: - '/api/healthmonitor?name=System-HTTP' servers: - ip: addr: 10.91.1.53 type: V4

- name: Create a VS     avi_virtualservice: controller: 10.10.26.40 username: admin password: Admin@123 name: testvs_aman description: testvs state: present api_version: 17.2.7 pool_ref: "/api/pool?name=test_aman" vip: - ip_address: addr: '10.91.0.6' type: 'V4' services: - port: 80


 * References