Blog Details

Ansible For Everyone (Ansible Playbooks) – Part 3: 100 days of Cloud: Day 34

+1
0
+1
0
+1
0
+1
0
+1
0

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

Image tweet

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.


 Ansible For Everyone – Part 1 Anuvindh Sankaravilasam for AWS Community Builders

Ansible For Everyone(Practical) – Part 2 Anuvindh Sankaravilasam for AWS Community Builders

🛠️ 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
  • 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

Let’s test the connections

Image test
  • To test all connections
ansible -m ping all
  • To test all connections in a group
ansible -m ping production
  • To test connection of a server named app1 in a group
ansible -m ping app1

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.

Let’s 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
  • YAML scripting starts 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. Reference 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

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

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
  • Now let’s run the playbook
ansible-playbook nginxplaybook.yaml

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.

Ansible documentation links
Ansible Modules link

 Ansible For Everyone – Part 1Anuvindh Sankaravilasam for AWS Community Builders
 Ansible For Everyone(Practical) – Part 2 Anuvindh Sankaravilasam for AWS Community Builders


✅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