Giter VIP home page Giter VIP logo

azure-vm-to-svc-bus's Introduction

Orchestrating Events with Azure Service Bus and Azure VMs using Managed Identity

Mystique Unicorn's developers are seeking assistance in implementing event processing for orchestrating events across multiple applications and services using Azure's native capabilities. Can you provide guidance on how to accomplish this?

๐ŸŽฏ Solution

We can leverage Azure Service Bus and the Python SDK for orchestrating events. Azure Service Bus provides a reliable messaging platform for event orchestration. In this demo, a VM with a managed identity will produce events and send them to a queue within a specific service bus namespace. The managed identity is exclusively scoped to this service bus namespace.

Miztiik Automation - Orchestrating Events with Azure Service Bus and Azure VMs using Managed Identity

By leveraging the power of Bicep, all necessary resources can be easily provisioned and managed with minimal effort. Our solution uses Python for efficient event processing, allowing for quick and easy deployment of sophisticated event processing pipelines.

  1. ๐Ÿงฐ Prerequisites

    This demo, instructions, scripts and bicep template is designed to be run in westeurope. With few or no modifications you can try it out in other regions as well(Not covered here).

  2. โš™๏ธ Setting up the environment

    • Get the application code

      https://github.com/miztiik/azure-vm-to-svc-bus
      cd azure-vm-to-svc-bus
  3. ๐Ÿš€ Prepare the environment

    Ensure you have Azure Cli and bicep working

    # You should have azure cli preinstalled
    bicep --version
    az account show
  4. ๐Ÿš€ Deploying the application

    • Stack: Main Bicep The params required for the modules are in params.json. Modify them as needed. The helper deployment script deploy.sh will deploy the main.bicep file. This will create the following resoureces

      • Resource Group(RG)
      • VNet, Subnet & Virtual Machine
      • Virtual Machine(Ubuntu)
        • Bootstrapped with custom libs using userData script.
      • Service Bus Namespace
        • Queue
      • User Managed Identity - Identity attached to the VM with the following permissions,
        • Monitoring Metrics Publisher
        • Read and write data to Service Bus Queue

      Note - I hacked the template from another repo of mine, so you will see some unused resources(log analytics workspace/queues etc.,). You can safely ignore them, But do remember to clean up your Resource Group to avoid unnecessary costs.

      sh deploy.sh

      After successfully deploying the stack, Check the Resource Groups/Deployments section for the resources.

  5. ๐Ÿ”ฌ Testing the solution

    • Connect to the VM

      The Ubuntu vm should be bootstrapped using userData to install python3, git and also Azure Idenity initialized.

      • Connect to the using using Just-In-Time access.
        • The bootstrap code should have clone this repo to /var/azure-vm-to-svc-bus, If not clone the repo.
      • The az_producer_for_svc_bus.py script expects the following environment variable. In production, you probabaly want to store these in App configuration
        • SVC_BUS_FQDN
        • SVC_BUS_Q_NAME
    • Initiate Event Generation & Ingestion

      # git clone https://github.com/miztiik/azure-vm-to-svc-bus.git
      # cd /var/azure-vm-to-svc-bus/app/
      # pip install -r requirements.txt
      
      cd /var/azure-vm-to-svc-bus/app/function_code
      export SVC_BUS_FQDN="warehouse-svc-bus-ns-vm-to-svc-bus-005.servicebus.windows.net"
      export SVC_BUS_Q_NAME="warehouse-q-005"
      
      python3 az_producer_for_svc_bus.py

      If everything goes all right, you should see messages like below. You can also check the logs at /var/log/miztiik-store-events-*.json

      INFO:root: {
      "miztiik_event_processed": true,
      "msg": "Generated 10 messages",
      "resp": {
         "status": true,
         "tot_msgs": 10,
         "bad_msgs": 2,
         "sale_evnts": 5,
         "inventory_evnts": 5,
         "tot_sales": 504.89
      },
      "count": 10,
      "last_processed_on": "2023-05-19T14:09:06.946041"
      }
      

      Upon successful execution, You should receive 200 response code from the endpoint. If you navigate to the portal, You should see the metrics in the dashboard..

      Miztiik Automation - Orchestrating Events with Azure Service Bus and Azure VMs using Managed Identity

      Miztiik Automation - Orchestrating Events with Azure Service Bus and Azure VMs using Managed Identity

  6. ๐Ÿ“’ Conclusion

    Here we have demonstrated write data to service using Azure VM with user assigned managed identity.

  7. ๐Ÿงน CleanUp

If you want to destroy all the resources created by the stack, Execute the below command to delete the stack, or you can delete the stack from console as well

# Delete from resource group
az group delete --name Miztiik_Enterprises_xxx --yes
# Follow any on-screen prompt

This is not an exhaustive list, please carry out other necessary steps as maybe applicable to your needs.

๐Ÿ“Œ Who is using this

This repository aims to show how to Bicep to new developers, Solution Architects & Ops Engineers in Azure.

๐Ÿ’ก Help/Suggestions or ๐Ÿ› Bugs

Thank you for your interest in contributing to our project. Whether it is a bug report, new feature, correction, or additional documentation or solutions, we greatly value feedback and contributions from our community. Start here

๐Ÿ‘‹ Buy me a coffee

ko-fi Buy me a coffee โ˜•.

๐Ÿ“š References

  1. Azure Docs: Just In Time Access

๐Ÿท๏ธ Metadata

miztiik-success-green

Level: 100

azure-vm-to-svc-bus's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.