How to accelerate software delivery: Building a Scalable CI/CD Pipeline

Hello my dear Cloud Marathoners!

As the moderator, I had the pleasure of guiding an engaging conversation with our featured speaker, Dharmendra Ahuja—a multi-cloud Certified Solution Architect, DevSecOps, and Data Engineer with 18+ years of experience.
Dharmendra’s expertise spans cloud-native architectures, CI/CD, containerization, and Infrastructure-as-Code, making him the perfect guide for this journey.

Best Practices for Scalable CI/CD Pipelines

Dharmendra shared actionable insights on designing pipelines that scale with your team and application needs. From modular pipeline stages to leveraging cloud-native tools, the focus was on building resilient, maintainable workflows.

Automated Testing & Build Automation

We explored how Jenkins and CircleCI streamline automated testing and build processes. Dharmendra emphasized the importance of integrating tests early and often, ensuring every code change is validated before deployment.

Deployment Strategies: Blue/Green & Canary

The session highlighted advanced deployment strategies:

  • Blue/Green Deployments: Minimize downtime and risk by switching traffic between identical environments.
  • Canary Releases: Gradually roll out changes to a subset of users, enabling real-time feedback and rapid rollback if needed.

DevSecOps Integration

Security isn’t an afterthought—it’s baked into the pipeline. Dharmendra discussed proactive DevSecOps practices, from automated vulnerability scanning to policy enforcement, ensuring every release is secure by design.

Real-Time Monitoring with Prometheus & Datadog

Visibility is key!
In this session, we learned how integrating Prometheus and Datadog provides real-time monitoring, alerting, and analytics—empowering teams to detect issues early and optimize performance.

Reducing Time-to-Market by Up to 40%

By adopting these best practices, organizations can dramatically reduce time-to-market, delivering value to customers faster without sacrificing quality or security.

Engaging Q&A

Throughout the session, I asked our presenter questions that sparked lively discussion:

  • How do you choose the right CI/CD tools for multi-cloud environments?
  • What are the biggest challenges in integrating security into pipelines?
  • Can you share a real-world example of a successful blue/green deployment?

Dharmendra’s responses were packed with practical advice and real-world stories, making the session both informative and inspiring.

Ready to Elevate Your DevOps Game and watch the full episode?

🔗 Session recording > https://www.youtube.com/live/hmlgsNV6mLo?si=2l-xoQ41V7UQEFQ-
📌 LinkedIn announcement > Accelerating Software Delivery: Building a Scalable CI/CD Pipeline

Whether you’re just starting your DevOps journey or looking to optimize your existing pipelines, the Cloud Marathoner community is here to support you. Let’s keep running toward cloud excellence—together!

Speaking at Microsoft Azure Community User Group – Exploring Azure Bicep Innovation and Microsoft Graph extension

Welcome, Cloud Marathoners!

What an energizing experience to speak at the Microsoft Azure Community User Group! This week, our session was all about exploring Azure Bicep innovation and the powerful new Microsoft Graph extension—with a focus on hands-on learning, community growth, and practical cloud skills.

The Cloud Marathoner Community

We kicked off by sharing the vision behind the Cloud Marathoner community—a movement to help both beginners and seasoned pros upskill, inspire each other, and support underrepresented groups in IT. The goal? To motivate everyone to keep running their cloud learning journey and celebrate each milestone together.

Azure Bicep: The latest advancement in Infrastructure as Code

Azure Bicep is a domain-specific language designed to simplify resource management in Azure. Unlike traditional ARM templates, Bicep offers:

  • Easy-to-read syntax
  • Day-zero support
  • Deep integration with Azure
  • Code reusability through modules
  • Production-ready deployments

We explored how Bicep abstracts over ARM templates, making infrastructure as code more accessible and enjoyable for everyone.

Modularization: Reusability and Teamwork

One of the session’s core themes was modularization—breaking down your infrastructure code into reusable modules. This approach brings:

  • Type safety and IntelliSense
  • Standardization across teams
  • Easier maintenance and deployment
  • Integration with Azure Bicep Registry and Azure Verified Modules

We walked through demos showing how to build and deploy modular Bicep files, highlighting the benefits for both individuals and organizations.

Microsoft Graph Extension: Expanding Bicep’s Power

The latest innovation is the Microsoft Graph extension for Azure Bicep. This extension lets you:

  • Reference and deploy resources beyond native ARM scope (like Microsoft Graph resources)
  • Combine Azure and non-Azure resources in a single Bicep file
  • Simplify complex deployment scenarios with unified declarative modules

We demonstrated how to use the extension to create security groups and managed identities in Microsoft Entra ID, showing the practical steps and best practices for real-world deployments.


Hands-On Demos and Best Practices

Throughout the session, we switched between slides and live demos in Visual Studio Code, showing:

  • How to visualize Bicep deployments with the Bicep Visualizer
  • Quick deployment options via right-click in VS Code
  • Scripted deployments using Azure CLI and PowerShell
  • Troubleshooting common issues (like managed identity delays)
  • How to redeploy for idempotent results

We also discussed leveraging GitHub Copilot for code generation and the importance of baseline knowledge to get the most out of AI tools.

Community Resources and session recording

To keep your marathon going, check out these resources:

Join the Movement!

The Cloud Marathoner community is all about sharing, growing, and supporting each other. Whether you’re just starting out or looking to master the latest Azure innovations, there’s a place for you.

Connect with us, share your feedback, and let’s keep running toward cloud excellence — together!

Are you ready to transform IT Operations 🚀 with AI and earn an exam voucher ⁉🤔

Hello Cloud Marathoners!

Hope everyone is doing well, and survived the March madness 🙂

As you might be aware, our #CloudMarathoner duo (Elkhan & Martin) teamed up and rolled the sleeved to prepare two unique sessions on how to get started with IT + AI = AIOps.

Check out the LinkedIn post for the session details!

These sessions don’t require any prior knowledge of AI, what you need is just interest to get started with fundamentals and start learning.

In the second session below, we covered the process, terminology and future of transforming IT operations with AI for DevOps. This session will help you in building your own organizational roadmap in revolutionizing DevOps for your mission.

Please. check out the recorded session below and let us know your feedback on the LinkedIn post. Thank you !!!

Microsoft DevOps 🚀 Engineer Expert certification renewal

Hello, my dear friends!

I am very glad to renew the Microsoft DevOps 🚀 Engineer Expert certification for another year 👍

The #cloudjourney and learning never stops ⛅❗🏃‍♂️ 🏃‍♀️

What is included in the annual assessment?

This exam assesses the following DevOps skills:
✔ Configure processes and communications
✔ Design and implement source control
✔ Design and implement build and release pipelines
✔ Develop a security and compliance plan
✔ Implement an instrumentation strategy

Your Support is Appreciated!

Thank you 🙏 T-Rex Solutions, LLC for a strong and relentless learning culture and for supporting my Microsoft #MVP journey 👏

In Summary

What is your next #certification#renewal ⁉ 🤔
Please, share in the comments 💬 below or on my LinkedIn post page.

How to fix the GitHub pipeline issues when credentials are expired?

Hello Cloud Marathoners,

In this post, I will be addressing a common an error that could be seen in your GitHub actions, once in a while, called “Error: Az CLI Login failed. Please check the credentials and make sure az is installed on the runner”.

UPDATES coming soon…

Happy New Year and Congratulations to “Awesome Azure Bicep” community of contributors!

Good day, #CloudMarathoner community!

I am very glad to announce the latest stats and progress on our community repo “Awesome Azure Bicep”!

What is Awesome Azure Bicep

This is a GitHub repo that helps you to learn and discover resources that are helping you with the adoption of Azure 🚀 Bicep – a new #infrastructureascode approach to manage Azure resources.

📌 Check out a curated list of blogs, videos, tutorials, code, tools, scripts, and anything useful to help you learn Microsoft #AzureBicep language 👉https://lnkd.in/e58nEfbd

Awesome Azure Bicep repo

who are the contributors?

Huge Kudos to #community contributors who made the latest version possible:

Luke Murray
Kasun Rajapakse
John Lokerse
Sam Cogan
Christopher Maneu
Matt Willson

call for action

Thanks for the 145+ 🌟 and 40+ 🍴 from the #community we are growing and looking for your contribution 😍

Please, check this #community maintained and updated repo and feel free to open an issue or provide feedback.

📌 Check out the post details on LinkedIn platform 👍

Thank you for all your hard work!

Career Panel Q&A with Streaming Clouds

Hello friends,

Few days ago, I was really honored to receive an invitation to speak at a great “Career Panel” Q&A event from Robin Smorenburg and Kevin Evans. This event was the first organized event of Streaming Clouds.

Oh boy, it was such an interesting and honest discussion where myself and other guests honestly shared experiences and struggles, while addressing questions from the live audience.

Image
Cloud careers with Streaming Clouds

This panel focused on addressing the following hot question: – How to break into a cloud career or how to get your career journey to the next stage?

This event covered the certifications and how to gain hands-on experience, community and personal branding, and mentorship.

Dear friends, this event was recorded and available for re-watch at the following LinkedIn url.

What is the AWESOME Azure Bicep ? 💪

Hello Cloud Marathoners!

I have been getting many questions on how to start an Azure Bicep journey – in a special and AWESOME way 😀 – which brought an idea to create the AWESOME Azure Bicep GitHub repo for the community 🎉

Long story short, this has been on ideation for few days and is life now, as of Jan 18, 2022 ! 😍

Now, I have started gradually adding important official and community resources to help new #Azure learners and #cloudmarathoners!

AWESOME Azure Bicep repo

Please, share ⭐ and fork 🍴 this repo and make your contributions.

I really ask you 🙌🙏 to make your contributions and help maintain and grow this repo going forward.

Thank you for all your 👨‍👩‍👧‍👦 continued support!

Happy to join the #OpenHack Containers coaches club 🎉

Hello Cloud Marathoners!

Few weeks ago, I participated in the Microsoft OpenHack Containers event. This was an awesome event where I had a chance to coach a team of professionals to tackle containerization challenges.

What is Microsoft OpenHack

Microsoft OpenHack is a developer-focused engagement that connects development teams (Open) with experts to tackle a series of real-world challenges through hands-on experimentation (Hack) in person or online (Virtual).

What was in the challenge?

We started with good old docker tooling for containers and ended up migrating those several containers and dependencies to the Azure Kubernetes Services. However, the most interesting part was applying best practices and security configurations to the migrated workloads.

Due to participation disclosure agreement, I would not be able to detail each team challenge (about 7-8). However, this was real teamwork that required learning and experimenting for all the team members.

My team went through ups and downs while trying to complete the necessary number of challenges to earn the badge. I am very happy that my team was able to complete the required challenges, learn important hands-on skills, and get their well deserved badges.

I was very pleased to help my team along their containerization journey. At the end, I feel very honored and appreciated to receive an OpenHack Containers Coach badge.

OpenHack: Containers Coach

Interested to get started with containers in Azure ?

Check out the following #free resources to start your own containerization learning path in Azure:

Thank you  🙌 for reading this post and checking the learning resources above.

Please, feel free to share your experience with the #cloudmarathoner community.
I will be happy to share your experience and tips here as well. 🎉

I am planning to keep this post up to date with your valuable contributions going forward!

What are the good options to manage sensitive info in Azure Bicep?

Hello Cloud Marathoners,

Every seasoned IT professional knows that sensitive information should not be exposed as a clear text on any code. This is especially true for infrastructure-as-code (aka, IaC) scenarios where passwords and keys are part of the deployment.

One way to stay compliant in accomplishing this goal is the integration of an Azure Key Vault service into your deployment code. This Azure security service is primarily intended to store sensitive information like password, keys, certificates, connections, etc.

In this post, we will look into two different ways how we could integrate Azure Key Vault services in our Azure Bicep code.


Option – 1: Using getSecret() function

Our first option is to delegate this important work to a getSecret() function. This option could be used with an existing Azure Key Vault resource that is declared in your Azure Bicep code.

Let’s look into an example where an existing Azure Key Vault service is referenced to provide administrative password for SQL server deployment.

Deploying Azure SQL instance with Azure Key Vault

This sample Bicep code is using sqldb.bicep file as a module, where parameters; such as sqlServerName and adminLogin are passed through with a secret name of ExamplePassword.

The ExamplePassword secret name should be already set and ready in the referenced Key Vault service above. Here is the view of this secret on Azure portal.

Azure Key Vault with secretes in portal

Let’s have a quick view into the sqldb.bicep file, as it is referenced in the main Bicep file.

sqldb.bicep file

Now, let’s deploy these resources with a secret value from Key Vault resource that has a secret name ExamplePassword.

What happened? I am getting an error on my first deployment execution 🙁

Error on deploying Bicep code with SQL server provisioning

Upon carefully analyzing error, I see the following reason for this error:

At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.”,”details”:[{“code”:”RegionDoesNotAllowProvisioning”,”message”:”Location ‘East US 2’ is not accepting creation of new Windows Azure SQL Database servers at this time.

Azure deployment error

Based on the error message, we change the location to eastus and re-run the script. Now, we got the following positive result in console and portal:

Deployment results in Azure Portal RG

Next, we will attempt to login into a SQL Server instance.
A successful login will look like the following screen:

Successful login into the SQL instance

Important Note:

If you are getting an error during the login then try to check the following steps:

  • adminLogin name is entered correctly
  • your IP address is added to the SQL server firewall rules
  • grab a cup of coffee and check back in 5 minutes

Description of a typical login error into a SQL server instance is provided below. I checked the firewall rules and made a cup of coffee => before getting a successful log-in 🙂

Requires your location IP activation

Option -2: Referencing as a secretName in parameter

The second option is pretty straightforward, if you have already used it on ARM template deployments.

Note: Please check out the following post – Four parameterization options for your Azure Bicep deployments for detailed information on available options.

We just need to reference Azure Key Vault secret like in the following example:

Using a parameter file and referencing the Key Vault secretName will do the trick in extracting the value and provisioning your resource.

Let’s run the bicep file that deploys multiple RGs and an Azure VM that uses VMPassword secret.

Running deployment with Bicep parameter file

A successful deployment provisions following RG with the VM resources:

Next, we should smoke test our deployment by locating the resource group “rg-demo-vm-1116” and using deployment parameters to RDP into Windows server:

Finally, we are able to see that secret and admin user name pair worked as expected

Azure VM deployed using Key Vault secret

Summary

In this post, we looked into two available options that harden our infrastructure code by removing hard-coded sensitive information and replacing it with Azure Key Vault reference. Thus, avoiding any potential leaks of passwords, secrets, etc.

IMHO, first option is better than the later one, because it does not expose subscription id and other small details.

What will be your choice? Please, share on LinkedIn post comments section.

Thank you for your interest my #cloudmarathoner friends!
Please, check other Azure Bicep posts and let me know your feedback.

What is next?

All code samples and presented Bicep files are placed in “Learn-Bicep” GitHub repo 👉 https://lnkd.in/ds-h9VQx

Please, join me to learn more about Azure Bicep 💪 on an Omaha Azure User Group meetup scheduled to happen on November 17th.