DevOps Classroom Series – 25/Aug/2020

Configuration Management (CM)

  • CM is set of engineering practices for managing the software delivery of applications to customers.
  • Before we deliver the applications to customers we need to perform QA, so we need to create some local QA Environments
    • System Testing
    • Component Testing
    • Performance Testing
    • UAT
  • There is redundancy in work, so we need some tool which helps in automating this redundancy.
  • CM is all about defining a state, which we refer as desired state.
  • Some of modern CM Tools include
    • CFEngine
    • Puppet
    • Ansible
    • Chef
    • Salt Stack
    • Powershell DSC

Our Organization

  • Lets understand our Organization, teams & Their responsibilities

    • Jenny: Project Manager responsible for QT-HMS (QT – Hospital Management Systems)
    • James & Team: Responsible for developing the applications
    • John & Team: Responsible for QA
    • Jack & Team: Responsible for the delivery of the application to customers & to John & Team. Preview
  • All of these teams join together as a workforce to deliver QT-HMS to the customers (Hospitals)

  • Now lets look at typical workflow for the code submitted by the Dev Team (James & Team) Preview

  • Jack & Team have to automate the environment creation.

  • How can environment creation be done

    1. Manual approach:
      • Make a list of commands to be executed
      • Ask an engineer to execute the same set of commands with slight variations on different environments
      • We are ruling this out as it is manual & time consuming
    2. Develop Shell/Powershell script for deployment:
      • Here we write scripts describing what & how it has to be done
      • Handling changes is difficult
    3. Develop a CM Desired State Configuration:
      • We develop a configuration describing what has to be done (Desired state)
      • Handling changes is simple
  • Comparing shell & CM in plain english

    1. file creation when file is not present
    Shell script
    
    create a file at C:\test.txt
    
    
    CM Script
    Ensure a file is present at C:\test.txt
    
    1. file creation when file is present
    Shell script
    if the file is not present
        create a file at C:\test.txt
    
    
    CM Script
    Ensure a file is present at C:\test.txt
    

Configuration Management Generalized Architecture

  • We use CM to deploy applications on servers

  • Node: Node is a server where application has to be deployed

  • Configuration Management Server: This is a server where CM software is installed & it has responsibility of deploying applications to the nodes

  • Architectural Models

    • Push Based CM: CM Server communicates with the nodes Preview
    • Pull Based CM: Nodes communicate with Servers Preview
  • Chef is a Pull Based CM Architecture.

  • Pull Based Architecture:

    1. Will nodes automatically know that they have to speak to server, No In pull based architectures, nodes will have agents installed in them which initiate communication with server. Preview
    2. Agents will be verified by servers & only if they are valid server responds with the jobs to be done.
  • In pull based Architecture,

    • Installing agents on nodes is called as bootstrapping.
  • Now, James & His team will develop configuration Management scripts and upload to server

  • After the team has bootstrapped the nodes, nodes will start communication with CM Server and as response to that, the CM Script developed by Jack & Team gets executed Preview

Leave a Reply

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

About learningthoughtsadmin