Azure Infrastructure Engineer Workstation Setup

Azure Infrastructure Engineer Workstation Setup

Table of Contents

Check out our Video here on our YouTube channel Don’t forget to subscribe to see our latest videos and keep updated with us and Azure.

Setting up an Azure Infrastructure Engineer workstation goes beyond installing a few tools—it’s about creating a reliable, secure, and efficient environment that supports day-to-day operations. This is particularly important for teams managing cloud infrastructure in sectors where performance and uptime are critical.

Whether you’re managing Azure Virtual WAN, configuring ExpressRoute, or troubleshooting with Network Watcher, this guide walks through a setup designed for reliability and speed. Ideal for engineers in high-uptime sectors, it ensures your workstation is ready for real-world Azure workloads.

We’ll cover the essential tools—such as Visual Studio Code, Azure CLI, PowerShell, and Bicep—and explain what each one does in plain English. You’ll also find a set of command-line instructions to help automate the setup, along with a short video walkthrough. Whether you’re provisioning virtual machines or writing infrastructure-as-code, this setup is designed to support your workflow without unnecessary complexity, allowing you to get up and running quickly.

What environment are we using for the Azure Infrastructure Engineer Workstation?

For this guide, we’re using a clean installation of Windows Server 2025, hosted in Microsoft Azure. This provides a consistent, cloud-based environment that mirrors the kind of infrastructure many operational teams already rely on. Running the workstation in Azure allows for flexibility—engineers can access the same setup from anywhere, and teams can standardise configurations across multiple users.

Importantly, this setup is functionally equivalent to running the same tools on a local Windows 11 workstation. So whether you’re working in the cloud or on a physical device, the steps and outcomes will be the same. This makes it easy to replicate the environment across different machines or scale it for team-wide use.

Using Windows Server ensures compatibility with enterprise tools and services, while also offering the stability and security features expected in production environments. It’s a practical choice for infrastructure engineers who need to manage Azure resources directly, test deployments, or run scripts in a controlled setting.

What is Visual Studio Code?

Visual Studio Code (VS Code) is a lightweight, open-source code editor developed by Microsoft. It’s widely used by developers and infrastructure engineers alike because it supports a broad range of programming and scripting languages, including PowerShell, Bicep, and JSON.

VS Code is designed to be fast, customisable, and easy to use. It includes features like syntax highlighting, integrated terminal access, and version control integration—all of which help streamline your workflow when working with Azure infrastructure. It runs well on both Windows Server and Windows 11, making it a flexible choice for local or cloud-based workstations.


What are VS Code extensions and why do they matter?

VS Code extensions are add-ons that enhance the functionality of the editor. For Azure infrastructure work, extensions can provide syntax support, code snippets, validation tools, and direct integration with Azure services.

For example, the Azure Tools extension pack includes support for managing resources, deploying templates, and browsing Azure subscriptions directly from within VS Code. The Bicep extension helps you write and validate infrastructure-as-code files with real-time feedback. These extensions reduce context switching and help engineers work more efficiently by bringing key tools into one place.

What is Bicep and why is it useful for Azure infrastructure?

Bicep is a domain-specific language (DSL) developed by Microsoft for deploying Azure resources using a simpler, more readable syntax than traditional JSON-based templates. It’s designed to help teams manage infrastructure as code—meaning you can define, version, and automate your cloud infrastructure in the same way you manage application code.

For operational teams, Bicep reduces the complexity of managing Azure environments. It allows you to describe what infrastructure you need (such as virtual machines, storage accounts, or networks) in a clear, declarative format. This makes deployments more consistent and easier to troubleshoot, especially when working across multiple environments or teams.

Bicep files compile down to standard Azure Resource Manager (ARM) templates, so they’re fully supported by Azure and integrate well with existing deployment pipelines. If your team is already using tools like Azure CLI or PowerShell, Bicep fits right in.

To get started with Bicep, Microsoft offers a free, beginner-friendly learning path:
👉 Fundamentals of Bicep – Microsoft Learn

Preparing your Azure Infrastructure Engineer Workstation

The first three lines of the code below sets the PowerShell Gallery (PSGallery) as a trusted source for installing packages.

By default, PowerShell may prompt you to confirm installations from untrusted sources.
Marking it as “Trusted” removes that prompt, which is useful when automating setups.

The “Install-PackageProvider -Name NuGet -Force” line installs the NuGet package provider, which is required for downloading and installing PowerShell modules from the gallery.

-Force skips confirmation prompts, making the process non-interactive—ideal for scripts.

Before you can install tools like the Az PowerShell module (used to manage Azure resources), PowerShell needs to know how to fetch them. NuGet is the underlying system that handles this, and PSGallery is the official source. These two lines ensure your environment is ready to install anything else you need.

Azure PowerShell and VS Code Script

Run the following code or sections of code that you need.  The first part installs the required PowerShell modules and installation files for things like VS Code, Microsoft Bicep and more.

LA NET DevOps Automation

You can download this script here: LA NET Public Repo.

				
					# Make sure you are running an Admin PowerShell Session

# Suppress any UI or confirmation prompts
$ProgressPreference = 'SilentlyContinue'

# Install NuGet provider silently (system-wide)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet -Force -Scope CurrentUser

# Ensure PSGallery is trusted
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted

# Set execution policy to allow scripts to run within this session.
# Less Restrictive :  Set-ExecutionPolicy Unrestricted -Scope LocalMachine
Set-ExecutionPolicy Bypass -Scope Process -Force

#Install CLI
winget install --id Microsoft.AzureCLI -e --accept-package-agreements --accept-source-agreements

# Check for Az module
$azModule = Get-InstalledModule -Name Az -ErrorAction SilentlyContinue

if ($azModule) {
    # Uninstall existing versions silently
    Get-Installed Module -Name Az | ForEach-Object {
        Uninstall-Module -Name $_.Name -RequiredVersion $_.Version -Force -ErrorAction SilentlyContinue
    }
}

# Silent install of Az module
Install-Module -Name Az -Force -AllowClobber -Scope AllUsers -ErrorAction SilentlyContinue

#Install Bicep
winget install Microsoft.Bicep --accept-package-agreements --accept-source-agreements

# Check if Graph module exists
$graphModule = Get-InstalledModule -Name Microsoft.Graph -ErrorAction SilentlyContinue

if ($graphModule) {
    Get-InstalledModule -Name Microsoft.Graph | ForEach-Object {
        Uninstall-Module -Name $_.Name -RequiredVersion $_.Version -Force -ErrorAction SilentlyContinue
    }
    Write-Output "Microsoft.Graph module uninstalled."
} else {
    Write-Output "Microsoft.Graph not present — installing clean."
}

# Silent install of Microsoft Graph
Install-Module -Name Microsoft.Graph -Force -AllowClobber -Scope AllUsers -ErrorAction SilentlyContinue

# Install or upgrade VS Code
winget upgrade --id Microsoft.VisualStudioCode -e --accept-package-agreements --accept-source-agreements | winget install --id Microsoft.VisualStudioCode -e --accept-package-agreements --accept-source-agreements

# Install Git for Windows if using DevOps/GitHub Repos
winget install --id Git.Git -e --source winget
winget install GitExtensionsTeam.GitExtension

# Install VS Code extensions but first enable the code app to work so add path details and set it up to run in this session.

# Ensure the script is running as Administrator
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
    [Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Warning "⚠️ Please run this script as Administrator."
    exit
}

# Define the VS Code bin path (System-wide install)
$vsCodePath = "C:\Program Files\Microsoft VS Code\bin"

# Get the current system PATH
$regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
$currentPath = (Get-ItemProperty -Path $regPath -Name Path).Path

# Check if the path is already present
if ($currentPath -notlike "*$vsCodePath*") {
    $newPath = "$currentPath;$vsCodePath"
    Set-ItemProperty -Path $regPath -Name Path -Value $newPath
    Write-Output "✅ VS Code path added to system PATH. A restart or logoff may be required for all users to see the change."
} else {
    Write-Output "ℹ️ VS Code path is already in the system PATH."
}

# Reload system environment variables into the current session
$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" +
            [System.Environment]::GetEnvironmentVariable("Path", "User")

# Test if 'code' is now available
code --version

# Install VS Code Extensions - Open VS Code in a new Terminal
 
code --install-extension ms-vscode.vscode-node-azure-pack
code --install-extension ms-vscode.powershell
code --install-extension ms-azuretools.vscode-bicep

# DevOps VS DevOps Code Extensions
 
code --install-extension hashicorp.terraform                       # Terraform
code --install-extension redhat.vscode-yaml                        # YAML
code --install-extension ms-azuretools.vscode-docker               # Docker
code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools # Kubernetes
code --install-extension github.vscode-github-actions              # GitHub Actions
code --install-extension ms-azure-devops.azure-pipelines           # Azure Pipelines

# Setup GIT in VS Code - Terminal Session

git config --global credentials.helper wincred
git config --global user.name “firstname lastname”
git config --global user.email “youremail@lanet.co.uk”

				
			

Microsoft 365 Tools for Infrastructure Engineers

While Azure infrastructure work often focuses on cloud-native tooling, integrating Microsoft 365 (M365) services into your workstation setup enhances productivity, collaboration, and security. We’ve included the most commonly used M365 modules in the script below to streamline access and automation:

  • Microsoft Teams: For secure, real-time collaboration across engineering and operations teams.
  • Exchange Online: Manage mail flow, mailbox policies, and service health directly from PowerShell.
  • Microsoft Graph: Unified API access to M365 services — ideal for scripting user, group, and policy management.
  • PowerApps & Power Automate: Extend automation workflows and build low-code solutions that integrate with Azure resources.

These modules are installed via PowerShell to ensure your workstation is ready for both infrastructure management and enterprise collaboration. Whether you’re automating tenant-wide policies or troubleshooting hybrid identity issues, having these tools preloaded saves time and reduces friction.

LANET 365 Automation

				
					# M365 Components
# Install Power Platform Modules
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell -AllowClobber -Force
Install-Module -Name Microsoft.PowerApps.PowerShell -AllowClobber -Force
 
 # Install Exchange Online Module
 Install-Module -Name ExchangeOnlineManagement -AllowClobber -Force

#Install Teams Administration
Install-Module -Name MicrosoftTeams -AllowClobber -Force
				
			

We hope the scripts above are useful for you. You can even inject them into VMs when provisioning in Azure with custom script extensions for example and much more.   We use the above as a handy reference.  

If there are any tools or modules we should add, let us know !  If we can help you with any of your cloud DevOps automation tasks then do not hesitate to contact us.

Frequently Asked Questions (FAQ)

Q1: What tools are essential for an Azure Infrastructure Engineer workstation?
A well-equipped workstation should include Azure CLI, PowerShell, Visual Studio Code, Bicep, and key Microsoft 365 modules like Teams and Graph. These tools support infrastructure-as-code, diagnostics, and secure collaboration.

Q2: Can I run this workstation setup on Windows 11 instead of Windows Server?
Yes — the setup is fully compatible with Windows 11, offering the same functionality and tooling. Whether cloud-hosted or local, the experience remains consistent.

Q3: Why is Bicep preferred over traditional ARM templates?
Bicep simplifies infrastructure-as-code with a cleaner syntax, better readability, and native support in Azure. It compiles down to ARM templates, making it ideal for scalable deployments.

Q4: How do Microsoft 365 tools enhance infrastructure workflows?
Modules like Teams, Exchange Online, and Microsoft Graph enable secure automation, policy management, and real-time collaboration — especially useful in hybrid or distributed environments.

Q5: Is this setup suitable for remote or hybrid teams?
Absolutely. With tools like Azure Bastion, Teams Enterprise, and Remote Desktop Manager, engineers can securely manage infrastructure from anywhere.

Stay connected with LA NET

Stay connected with us on LinkedIn and YouTube for more tips and updates. Download our new eBook for an in-depth guide on optimising your Azure environment.

     LinkedInFollow us on LinkedIn

     YouTubeSubscribe to our YouTube Channel

     E-BookDownload our E-Book