Thursday, September 28, 2023

CICD Process Flow Diagram | Implement CICD using Azure DevOps and Other DevOps tools

 CICD Process Flow Diagram - How to Implement CICD using Azure DevOps?


Azure DevOps is a set of development tools and services offered by Microsoft to facilitate the entire software development lifecycle (SDLC). Azure DevOps is designed to support collaboration among development and operations teams, automate various aspects of the software development process, and enable continuous integration and continuous delivery (CI/CD) pipelines.

What is Continuous Integration?

Continuous integration is a DevOps software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run.

The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates.

Azure DevOps is widely used for implementing CICD. Azure DevOps can integrate with other tools using Add-ons.

How does Continuous Integration Work?

Developers frequently commit to a shared repository using a version control system such as Git. Prior to each commit, developers may choose to run local unit tests on their code as an extra verification layer before integrating. A continuous integration service automatically builds and runs unit tests on the new code changes to immediately surface any errors.

Benefits of Continuous Integration
  • Improve Developers productivity 
  • Find bugs early in the software development stage
  • Deliver products into market place sooner
  • Improve the feedback loop
What is Continuous Delivery?

Continuous delivery is a software development practice where code changes are automatically prepared for a release to production. Continuous delivery is the next extension of continuous integration. The delivery phase is responsible for packaging an artifact together to be delivered to end-users. This phase runs automated building tools to generate this artifact.

Benefits of Continuous Delivery
  • Automate the Software Release Process
  • Improve Developer Productivity
  • Find bugs early in the software development stage
  • Deliver updates faster

Tuesday, September 5, 2023

How to Automate Infra setup in Azure Cloud using Terraform and Azure DevOps Pipeline | Automate App Service or Web App creation in Azure cloud using Terraform and Azure DevOps Pipeline and store Terraform state remotely

Automating infrastructure setup in Azure Cloud using Terraform and Azure DevOps is a powerful approach to managing your infrastructure as code (IaC). This allows you to define and manage your Azure resources programmatically, version control your infrastructure configurations, and automate the deployment process. 

We will be creating a Java based WebApp(app service) in Azure cloud using Terraform and automate the process using Azure Devops Pipelines.


Watch Steps in YouTube channel:

Prerequistes:
Implementation Steps:
  • Create a resource group first in Azure cloud
  • Create storage account, container for Terraform to store state information in Azure cloud remotely.
  • Create pipeline and add Terraform tasks
  • Execute pipeline to deploy resources(App service plan and WebApp) in Azure cloud
  • Verify resources are created in Azure cloud
  • Confirm if the terraform.tfstate file is updated
Create Resource Group in Azure cloud

Login to Azure portal, Create a new RG, or you can skip this step if you already have existing group.

Create Storage Account in Azure cloud
Create a new resource, type storage account


Click on create
select RG, enter unique account name, select standard as performance, select locally redundant storage

Click on create

Create a container inside the storage account
Select the storage account you just created, click on containers under Data storage


enter a name for the container

Create a pipeline in Azure DevOps
Login to Azure Devops, select Pipelines, select use the classic editor to create a pipeline


Configure Pipeline with tasks

Add Terraform installer task to install Terraform on build agent


Add Terraform task 

Configure the task

enter storage account, container, key information as below:


Add terraform tasks to plan, apply
Add Terraform task for plan
change the command to plan from drop down and also select azure subscription from drop down

Add Terraform task for apply
change the command to apply from drop down and also select azure subscription from drop down


Now verify to make sure if we have correct values in each/every task. Now click on Save + Queue.



Click on Save and Run


This confirms that pipeline have successfully created resources in Azure cloud. You can login to Azure portal to see the resources - app service plan and web app.


You can also verify terraform state info which has resources entry for all the resources created
Click on Containers, mytfstatecontainer
Click on terraform.tfstate
Click on Edit to view the content of terraform state file



Clean up resources created in Azure using the pipeline - destroy command

change the command to destroy instead of apply from the drop down


You can either add a new task for destroy or modify to destroy from apply in the existing task.

Now save the pipeline and run the pipeline. check the output of destroy task


Check terraform.tfstate file after destroy.

    Thursday, August 24, 2023

    Install Ansible on Red Hat Linux | How to setup Ansible on Red Hat Linux VM | Ansible install on Azure Linux Virtual Machine | Ansible Azure Integration

    How to setup Ansible on Red Hat Linux VM and Integrate with Azure Cloud?

    Ansible is #1 configuration management tool. It can also be used for infrastructure provisioning as well. or You can use Ansible in combination of Terraform which can take care of infra automation and Ansible can do configuration management. We will be setting up Ansible on Red Hat VM in Azure cloud And create some resources in Azure Cloud by using Ansible playbooks.


     
    Ansible Architecture:
     

    The best way to install Ansible in Linux is to use PIP, a package manager for Python.

    Pre-requisites:
    How to setup Ansible on Red Hat Linux VM

    Watch Steps in YouTube channel:

    Change host name to AnsibleMgmtNode
    sudo hostnamectl set-hostname 
    AnsibleMgmtNode

    Update Repository
    sudo yum update -y

    Install Python-pip3
    sudo yum install python3-pip -y

    Upgrade pip3 sudo pip3 install --upgrade pip


    # Install Ansible pip3 install "ansible==2.9.17"



    check Ansible version
    ansible --version


    # Install Ansible azure_rm module for interacting with Azure.
    pip3 install ansible[azure]

    Authenticate with Azure


    To configure Azure credentials, you need the following information:

    • Your Azure subscription ID and tenant ID
    • The service principal application ID and secret

    Create an Azure Service Principal

    Login to Azure first
    az login
    Enter Microsoft credentials

    Run the following commands to create an Azure Service Principal:

    az ad sp create-for-rbac --name <service-principal-name> \ 
    --role Contributor \ 
    --scopes /subscriptions/<subscription_id>
    Save the above output in a file as you will not be able retrieve later.
    Configure the Ansible credentials using one of the following techniques:

    Option 1: Create Ansible credentials file

    In this section, you create a local credentials file to provide credentials to Ansible. For security reasons, credential files should only be used in development environments.

    mkdir ~/.azure 

    vi ~/.azure/credentials


    Insert the following lines into the file. Replace the placeholders with the service principal values.
    [default] subscription_id=<subscription_id> client_id=<service_principal_app_id> secret=<service_principal_password> tenant=<service_principal_tenant_id>

    Option 2: Define Ansible environment variables

    On the host virtual machine, export the service principal values to configure your Ansible credentials.

    export AZURE_SUBSCRIPTION_ID=<subscription_id> export AZURE_CLIENT_ID=<service_principal_app_id> export AZURE_SECRET=<service_principal_password> export AZURE_TENANT=<service_principal_tenant_id>

    Test Ansible installation

    You now have a virtual machine with Ansible installed and configured!

    This section shows how to create a test resource group within your new Ansible configuration. If you don't need to do that, you can skip this section.

    Option 1: Use an ad-hoc ansible command

    Run the following ad-hoc Ansible command to create a resource group:

    ansible localhost -m azure_rm_resourcegroup -a "name=my-rg123 location=eastus"

    Option 2: Write and run an Ansible playbook

    Create a simple playbook to create resource group in Azure.

    sudo vi create-rg.yml

    ---

    - hosts: localhost

      connection: local

      tasks:

        - name: Creating resource group

          azure_rm_resourcegroup:

            name: "myResourceGroup"

            location: "eastus"

    Execute the playbook using ansible-playbook command.

    ansible-playbook create-rg.yml

    Now Login to Azure cloud to see if the resource group have been created.



    Clean up Resources

    Save the following code as delete-rg.yml

    sudo vi delete-rg.yml

    --- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg

    ansible-playbook delete-rg.yml --extra-vars "name=myResourceGroup"

    check in Azure cloud to see if the resource group have been deleted.

    Wednesday, August 23, 2023

    Automate Azure cloud infrastructure setup using Ansible and Azure DevOps pipeline | How to integrate Ansible with Azure DevOps | Integrating Ansible with Azure DevOps Pipelines |

    Ansible is an open-source configuration management tool that automates cloud provisioning, configuration management, and application deployments. Using Ansible you can provision virtual machines, containers, network, and complete cloud infrastructures. 

    Automate Azure cloud infrastructure setup using Ansible and Azure pipeline



    Integrate Ansible with Azure Cloud
    Integrating Ansible with Microsoft Azure allows you to automate and manage your Azure infrastructure using Ansible playbooks and modules. Ansible provides a collection of Azure-specific modules that enable you to provision and configure resources in Azure.


    To configure Azure credentials, you need the following information:

    • Your Azure subscription ID and tenant ID
    • The service principal application ID and secret

    Pre-requisites:

    • Azure account subscription, click here if you don't have one.
    • Service principal to create any resources in Azure cloud using Azure cloud shell or Azure CLI

    Create Azure Service Principal

    Run the following commands to create an Azure Service Principal:

    az ad sp create-for-rbac --name <service-principal-name> \ 
    --role Contributor \ 
    --scopes /subscriptions/<subscription_id>
    Save the above output in a file as you will not be able retrieve later.
    Create an Ansible playbook

    Create a simple playbook to create resource group in Azure. Make sure you modify the name of the resource group and location below.

    ---

    - hosts: localhost

      connection: local

      tasks:

        - name: Creating resource group

          azure_rm_resourcegroup:

            name: "my-rg12"

            location: "eastus"


    Create Azure YAML build pipeline:

    Login to Azure Devops --> https://dev.azure.com

    Select project dashboard.

    Go to Pipelines -> New pipeline --> Click on Azure Repos Git or any SCM where you have playbooks stored. Select repo, click on Starter pipeline.

    Add below four pipeline variables with value received from service principal creation.

    AZURE_SUBSCRIPTION_ID
    AZURE_CLIENT_ID
    AZURE_SECRET
    AZURE_TENANT
    Add below tasks:
    • Install Ansible on build agent
    • Install Ansible rm module on build agent
    • Execute Ansible playbook for creating resource group in Azure cloud.
    trigger:
    - main
    pr: none # Disable PR triggers, can be adjusted as needed
    pool:
    vmImage: 'ubuntu-latest'
    steps:
    - script: |
    # Install Ansible
    pip3 install "ansible==2.9.17"
    displayName: 'Install Ansible'
    - script: |
    # Install Ansible rm module
    pip3 install ansible[azure]
    displayName: 'Install Ansible rm module'
    - script: |
    # Run Ansible playbook to create resource group
    ansible-playbook create-rg.yml
    displayName: 'Run Ansible Playbook'
    env:
    AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
    AZURE_CLIENT_ID: $(AZURE_CLIENT_ID)
    AZURE_SECRET: $(AZURE_SECRET)
    AZURE_TENANT: $(AZURE_TENANT)

    Save the pipeline and run it.


    Now Login to Azure cloud to see if the resource group have been created.


    Watch Steps in YouTube channel:

      Tuesday, August 22, 2023

      Install Azure CLI in Red Hat Linux | How to setup Azure CLI in Linux | How to Install Azure CLI in Red Hat Enterprise Linux

      The Azure command-line interface (Azure CLI) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation. Azure CLI is Microsoft's cross-platform command-line experience for managing Azure resources.

      Azure CLI can be installed by following below steps:

      Import the Microsoft repository key

      sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

      For RHEL 8 or CentOS Stream 8, add packages-microsoft-com-prod repository:

      sudo dnf install -y https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

      Install with the dnf install command
      sudo dnf install azure-cli -y

      Check the version of Azure CLI

      az version

      Run the Azure CLI with the az command. To sign in, use the az login command.

      az login

      How to create Red Hat Linux Virtual Machine (VM) in Azure? | Create Red Hat Linux VM in Azure | How to connect to Azure VM from your local machine

      How to Create Red Hat Linux Virtual Machines(VM) in Azure Cloud? 

      Creating Virtual Machine is easy and straight forward in Azure Cloud. Let us see how to do that in Azure portal. 

      Watch Steps in YouTube channel:

      Pre-requisites:

      • Azure account subscription, click here if you don't have one.
      • SSH client such as Git bash, putty or iTerm(mac os)
      Steps to create Red Hat Linux Virtual Machine in Azure
       
      1. Login to Azure portal, go to https://portal.azure.com/
      2. Click on Virtual Machines.

      3. Click on Add/Create virtual machine. 

       

      Enter resource group name, select region.



      4. Select security type as Standard
      5. Now enter the details as below or give values per your subscription and requirements. Select Red Hat Enterprise Linux 8.x VM from the drop down.


      6. choose authentication type as SSH public key, enter azureuser as user name, enter key pair name.
      This step will eventually create SSH keys and allow you to download in your machine.



      7. Under Networking



      Go with Allow selected ports - SSH port 22
      And also select Delete public IP and NIC when VM is deleted option


      8. Under Monitoring, disable Boot diagnostics

      9. Click on Review, it may take a few mins to finish the validations. If all good, it should pass the validations. Click on Create.

      10.  Now download the SSH keys and save it locally.
       

      11. Once created, Click on virtual machines.

      12. You should see the new VM is running like below:


      How to connect to Azure VM from your local machine?



      1. Now select that instance, click on connect


      2.Then choose SSH 


      3. Enter ssh key name in private key path 
      4. Copy the value as it shows below in your local terminal(iTerm for Apple laptop) or Git bash for Windows laptop.

      5. Make sure your SSH keys is not accessible by others, by executing the below command:

      chmod 400 myUbuntuVM_key.pem
      6. Now ssh into VM from your local machine using the key

      ssh -i myUbuntuVM_key.pem azureuser@your_ip_address


      Now it should show you that you are connected to Azure.

      CICD Process Flow Diagram | Implement CICD using Azure DevOps and Other DevOps tools

        CICD Process Flow Diagram - How to Implement CICD using Azure DevOps? Azure DevOps is a set of development tools and services offered by M...