DevOps Classroom Series – 09/Mar/2020

Configuration Managment Solution Workflow

  • Purpose: Automate Deployments, or to be very specific
    • ensuring the code written by dev team is reflected in one or more of the enviroments
  • Knowledge:
    • Various Environments available
    • When to deploy in each environment
    • Pre-requisites to deploy application. Some of examples are
      • JDK 1.9 and tomcat 9 are required
      • Python 3.7 is used
      • Ensure /etc/<application>/config.yaml has database servers url, username and password.
    • Steps of deploying
    • Make a list of OS-Level (linux/windows commands) to be exeucted to deploy the application
    • Execute all the commands gathered manually to ensure they are working.

Example:

  • Purpose: Create a Dev Environment for Spring-Petclinic
  • Knowledge:
    • Env: Dev => 1 linux vm
    • Prereqs:
      • JDK8
    • Steps for deploying
      • There is a package available at here
      • run the spring boot application directly
      • Commands
      sudo apt-get update && sudo apt-get install openjdk-8-jdk -y
      wget https://war-jar-files.s3-us-west-2.amazonaws.com/spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar
      java -jar spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar
      

Ansible Way of Working

  • In Ansible smallest activity (atomic) is called as module
  • For linux commands which you have written find the right modules in ansible. Ansible has lot of modules Refer Here
  • We will be creating one-one mapping between linux commands and modules to be used
Linux        Ansible Module
apt-get   =>  apt
wget      =>  get_url
java      =>  command
  • Combine modules to form playbook
  • Now ansible can be executed in two modes
    • Adhoc Command:
      • To run ansible create a command
      ansible -m ping all
      
    • Playbook:
      • Write a YAML file to automate the deployment
  • Sample YAML
---
- hosts: all
  become: yes
  tasks:
    - name: install java and update packages
      apt:
        name: openjdk-8-jdk
        update: yes
        state: present
    - name: download package
      get_url:
        url: https://war-jar-files.s3-us-west-2.amazonaws.com/spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar
    - name: run spring pet clinic
      command: java -jar spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar
        

Ansible Terms

  • Playbook: YAML Reprsentation of Automation to be done
  • Tasks:
    • Each task will be module to be executed with some parameters
  • Module:
    • Atomic unit of automation in Ansible.

Exercise

  • Find steps to deploy
    • node js application
    • PHP application.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Floating Social Media Icons by Acurax Wordpress Designers

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube