Topics that will be covered
Introduction to Ansible.
Overview of Ansible Architecture and Basic modules.
Overview and demo of Ansible Tower.
Ansible in Real Life.
Pros and Cons of Ansible vs Other Configuration management tools.
Workshop
Goal - Following are the tasks to be performed as part of Ansible workshop:
Executing playbook task1.yml locally, which performs the operation
Creating directory using Shell, File modules Demonstrate register and debug modules Install tree using Yum module
Executing playbook task2.yml locally, which demonstrates use-case for
Using vars module Using with_items module Using When module Using get_url Using Find
Executing playbook task3.yml (on remote machine-Optional), which performs the operation of Installing Apache Using Handlers Modules
Tasks
Check ansible version.
ansible --version
Check if you’re able to ping localhost
ansible localhost –m ping
Task 1
Create a file named task1.yml and copy past content in blue into the same file.
---
- hosts: localhost
become: yes
tasks:
- name: create a directory using shell
shell: mkdir /var/log/test_dir1
- name: Create a directory using file
file: path=/var/log/test_dir2 state=directory mode=0755
- name: list file or directory content
shell: ls -l
register: result
- debug: var=result
- name: Install tree
apt: name=tree state=latest
Command to execute
ansible-playbook task1.yml
Verification: You can find both directories named “test_dir1” and “test_dir2”
ls –l /var/log
Task 2
Create a file named task2.yml and copy past content in blue into the same file.
---
- name: Task-02
hosts: localhost
gather_facts: yes
become: yes
vars:
package: ['htop','unzip','traceroute']
tasks:
- name: install httpd
apt: name={{ item }} state=present
with_items: package
when: ansible_os_family=="Debian"
- name: Download Cirros Image from HTTP link
get_url: url="http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img" dest="/tmp/" mode=0644
- name: Create a file
file: path=/tmp/test.conf state=touch mode="u=rw,g=r,o=r"
- name: Find file created as part of above task
find: paths="/tmp/" patterns="test.*"
register: result
- debug: var=result
- name: Create a cron job to monitor disk space
cron: name="Monitor_Disk" minute=0 hour="1" user=cloud job="sudo df -H >> /tmp/output.txt"
tags: disk, monitor, df
Command to execute
ansible-playbook task2.yml
Verification: Execute using Tags. You will find Cirros Image downloaded and file created
ls /tmp
Execute using Tags
ansible-playbook task2.yml –t disk
ansible-playbook task2.yml –t monitor
ansible-playbook task2.yml –t df
Task 3
Create a file named task3.yml and copy past content in blue into the same file.
---
- name: Task-03
hosts: localhost
become: yes
tasks:
- name: ensure apache is at the latest version
apt: pkg=apache2 state=installed update_cache=true
notify:
- Start Apache2
- pause: seconds=5
- name: Copy html file
copy: src=/tmp/index.html dest=/var/www/html/index.html owner=ubuntu group=ubuntu mode=0644
handlers:
- name: Start Apache2
service: name=apache2 state=restarted
Command to execute
ansible-playbook task3.yml
Share this post
Twitter
Google+
Facebook
Reddit
LinkedIn
StumbleUpon
Pinterest
Email