Ansible playbook lab exercise part-3

DevOps

MOTOSHARE 🚗🏍️
Turning Idle Vehicles into Shared Rides & Earnings

From Idle to Income. From Parked to Purpose.
Earn by Sharing, Ride by Renting.
Where Owners Earn, Riders Move.
Owners Earn. Riders Move. Motoshare Connects.

With Motoshare, every parked vehicle finds a purpose. Owners earn. Renters ride.
🚀 Everyone wins.

Start Your Journey with Motoshare
  1. Create a playbook where you should install a webserver into 2 OS type(Ubuntu and RHEL) with fact conditioning. and list out a directory which in “/etc” and display such as “This is a directory /file in /etc:-XXXx” To be used Conditiong, looping, regiter and fact variable.
---
- name: Install webserver on 2 os and display directory contents
  hosts: localhost
  
  tasks:
  - name: Install httpd on redhat os
    yum:
      name=httpd
      state=latest
    when: ansible_os_family == "RedHat"
  - name: Install apache2 on ubuntu
    apt:
      name=apache2
      state=latest
    when: ansible_os_family == "Ubuntu"
  - name: List contents in /etc
      shell: ls /etc
      register: contents
  - name: Print /etc contents
      debug:
        msg: "This is a directory /file in /etc : {{ item }}"
      loop: "{{ contents.stdout_lines }}"Code language: PHP (php)
2. There are 2 environment DEV and QA. Both has their own group_vars. Using it, in Dev and QA environment(RHEL/CENTOS) install apache and Dev should run with 80 port and QA should run with 8080 port. Whereas config file locaton for apache conf is /etc/httpd.conf/conf/httpd.conf and line for port is “Listen 80”. This should be done using template module and zinja2 lib.

---
- name: Install dev and qa environment
  hosts: web
  vars_files:
    - ext-vars.yaml
	
  tasks:
  - name: Install httpd
    yum:
      name=httpd
      state=latest
    when: ansible_os_family == "RedHat"
  - name: Install apache2
    apt:
      name=apache2
      state=latest
    when: ansible_os_family == "Ubuntu"  

  - name: Template a file to /etc/file.conf
    ansible.builtin.template:
      src: httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf
     notify:
      - Start service httpd, if not started

  - name: Start service httpd, if not started
    ansible.builtin.service:
      name=httpd
      state=started

  handlers:
  - name: Start service httpd, if not started
    ansible.builtin.service:
      name=httpd
      state=restarted

Code language: JavaScript (javascript)