Objective: I am trying to build a custom service that will create VMs in Azure, based on inputs taken from a web interface. I want the backend code that interacts with Azure to be PowerShell.

Ask: Hoping to find help with deciding the simplest architecture of tools to achieve this.

What I have so far with my Limited Knowledge: I am new to Azure and Jenkins. I arrived at Jenkins coz it can run PowerShell and has API that can be called to trigger a job. Although integrating with it over the web seems problematic since its on-prem network. I hear it is possible using the VPN. For the Web, I hope to use Azure Web App with Python/Node.js that I can manage to make API calls to Jenkins.

Is there a better way? I just need help getting the right directions; I will walk the way.

6 upvotes·399.1K views
Replies (3)
Software Engineer at Autodesk·

I'd recommend against using PowerShell as a backend, unless your logic is very simple (maybe less than 100 lines total). I've worked with a huge framework written in PowerShell, and we hit a lot of bugs. (Some of the issues traced back to bugs in the PowerShell runtime itself! Most of the team who owned the PowerShell framework admitted that if they could reimplement it they would pick a different language.) If you're already using Python, then I'd recommend using Python for other backend code -- or a more structured .NET language, like C#.

4 upvotes·2.3K views

You must have gone through multiple thoughts on how to handle the requirement, but the biggest problem that I am able to see here is a dependency on a certain platform for executing Powershell scripts. Next is being a developer will never suggest having Powershell or bash as a backend of your system until it is related to some IoT Stuff. In place of it, I would rather suggest you use Infrastructure as a Code that comes with terraform or Ansible or as your application is based on Azure so u can use Azure Resource Manager too.

Adding to it for making config or attaching a trigger to these infrastructure controllers, you can use lightweight stateful APIs with the help of flask or express or go-mux, to keep track on the progress of deployments.

4 upvotes·949 views
View all (3)
Avatar of Rohin Sidharth