DEV Community

Cover image for Ansible For Everyone (Ansible Playbooks) - Part 3
Anuvindh Sankaravilasam for AWS Community Builders

Posted on • Updated on

Ansible For Everyone (Ansible Playbooks) - Part 3

DAY 34- Ansible For Everyone (Ansible Playbooks) - Part 3 - Day Thirty four

Image tweetImage cover

100 days of Cloud on GitHub - Read On iCTPro.co.nz - Read on Dev.to


🧮 Prerequisite

Please refer to Ansible Part 1 and Part 2 for a detailed understanding.
Image Prerequisite

🛠️ Adding Ansible inventory

Lets add our cluster of servers to Ansible infrastucture
In this demo i will be only using AnsibleSlaves-YourProdServer as my prod server.

Goto your Ansible-Control-Center and update ansible hosts file

sudo nano /etc/ansible/hosts
Enter fullscreen mode Exit fullscreen mode
  • In this file you will find templetes to add hosts
  • lets add our production group of servers
    • Add [YourgGroupName]
    • next line , give a name to server which you are going to add. Lets name app1 then ansible_ssh_host= your ip address of your slave.
[production]
app1 ansible_ssh_host= ipaddress of your slave
Enter fullscreen mode Exit fullscreen mode

Let's test the connections

Image test

  • To test all connections
ansible -m ping all
Enter fullscreen mode Exit fullscreen mode
  • To test all connections in a group
ansible -m ping production
Enter fullscreen mode Exit fullscreen mode
  • To test connection of a server named app1 in a group
ansible -m ping app1
Enter fullscreen mode Exit fullscreen mode

Below image shows the result of the ping

Image pong

✨ Modules

  • Modules are the commands which help to perform task,in other words modules are kind of library that help to perform tasks.
  • List of all modules - link

What are Tasks?
A set of instructions performed with modules.


▶️ Ansible Playbooks

Image ansible

Playbooks are written in YAML also Playbooks are lists of tasks that automatically execute against hosts.

Lets create an nginx playbook
ansible modules - https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html

  • lets create a YAML file
sudo nano nginxplaybook.yaml
Enter fullscreen mode Exit fullscreen mode
  • yaml scriping start with three dashes ---
  • then you can give a name with start a single dash -
  • now we will update the next parameter which is our hosts, in this case it will be production if you wanna do for all servers use all
  • so if we need to run as root on targets, we will be setting become parameter to true.
  • define task now under task
    • we will be using a apt module to install nginx. Refernce link
    • We have given aname to the task as install nginx.Then will be using apt module as we are using ubuntu.
    • name of the module and state, refer the link for detailed understanding.
---
- name: install nginx server
  hosts: production
  become: yes
  tasks:
  - name: install nginx
    apt:
      name: nginx
      state: latest
Enter fullscreen mode Exit fullscreen mode

Now lets run the playbook

  • Before running the playbook lets check it. ansible-playbook nginxplaybook.yaml --check
  • Now lets run the play book
ansible-playbook nginxplaybook.yaml
Enter fullscreen mode Exit fullscreen mode

Deploy code from git

  • Here we will deploy a website to the target server using Ansible.
---
- name: install nginx server
  hosts: production
  become: yes
  tasks:
  - name: install nginx
    apt:
      name: nginx
      state: latest
  - name: Clone a repo with separate git directory
    ansible.builtin.git:
      repo: https://github.com/anuvindhs/CLOUD-is-AWSome.git
      dest: /var/www/html/app1
Enter fullscreen mode Exit fullscreen mode
  • Lets run the play book
ansible-playbook nginxplaybook.yaml
Enter fullscreen mode Exit fullscreen mode

Image playbook

🎉🎉🎉🎉Congratulations on you first ansible infrastucture deployment with aws using playbook🎉🎉🎉🎉.

Image first


I highly recommend this Tips & Tricks with Examples from spacelift
, this is def comes handy when you are writing complex ansible scripts.

Working with Ansible Playbooks - Tips & Tricks with Examples

Playbooks are one of the basic components of Ansible. Learn how to use them and see detailed examples with best practices.

favicon spacelift.io

Ansible documentation links
Ansible Modules link



✅Connect with me on Twitter
🤝🏽Connect with me on Linkedin
🧑🏼‍🤝‍🧑🏻 Read more post on dev.to or iCTPro.co.nz
💻 Connect with me on GitHub


Discussion (0)