Azure Citadel
  • Blogs

  • ARM
  • Azure Arc
    • Overview
    • Azure Arc-enabled Servers
      • Prereqs
      • Scenario
      • Hack Overview
      • Azure Landing Zone
      • Arc Pilot resource group
      • Azure Monitoring Agent
      • Additional policy assignments
      • Access your on prem VMs
      • Create onboarding scripts
      • Onboarding using scripts
      • Inventory
      • Monitoring
      • SSH
      • Windows Admin Center
      • Governance
      • Custom Script Extension
      • Key Vault Extension
      • Managed Identity
    • Azure Arc-enabled Kubernetes
      • Prereqs
      • Background
      • Deploy Cluster
      • Connect to Arc
      • Enable GitOps
      • Deploy Application
      • Enable Azure AD
      • Enforce Policy
      • Enable Monitoring
      • Enable Azure Defender
      • Enable Data Services
      • Enable Application Delivery
    • Useful Links
  • Azure CLI
    • Install
    • Get started
    • JMESPATH queries
    • Integrate with Bash
  • Azure Landing Zones
    • Prereqs
    • Day 1
      • Azure Baristas
      • Day 1 Challenge
    • Day 2
      • Example
      • Day 2 Challenge
    • Day 3
      • Day 3 Challenge
    • Useful Links
  • Azure Policy
    • Azure Policy Basics
      • Policy Basics in the Azure Portal
      • Creating Policy via the CLI
      • Deploy If Not Exists
      • Management Groups and Initiatives
    • Creating Custom Policies
      • Customer scenario
      • Policy Aliases
      • Determine the logic
      • Create the custom policy
      • Define, assign and test
  • Azure Stack HCI
    • Overview
    • Useful Links
    • Updates from Microsoft Ignite 2022
  • Marketplace
    • Introduction
      • Terminology
      • Offer Types
    • Partner Center
    • Offer Type
    • Publish a VM Offer HOL
      • Getting Started
      • Create VM Image
      • Test VM Image
      • VM Offer with SIG
      • VM Offer with SAS
      • Publish Offer
    • Other VM Resources
    • Publish a Solution Template HOL
      • Getting Started
      • Create ARM Template
      • Validate ARM Template
      • Create UI Definition
      • Package Assets
      • Publish Offer
    • Publish a Managed App HOL
      • Getting Started
      • Create ARM Template
      • Validate ARM Template
      • Create UI Definition
      • Package Assets
      • Publish Offer
    • Managed Apps with AKS HOL
    • Other Managed App Resources
    • SaaS Offer HOLs
    • SaaS Offer Video Series
      • Video 1 - SaaS Offer Overview
      • Video 2 - Purchasing a SaaS Offer
      • Video 3 - Purchasing a Private SaaS Plan
      • Video 4 - Publishing a SaaS Offer
      • Video 5 - Publishing a Private SaaS Plan
      • Video 6 - SaaS Offer Technical Overview
      • Video 7 - Azure AD Application Registrations
      • Video 8 - Using the SaaS Offer REST Fulfillment API
      • Video 9 - The SaaS Client Library for .NET
      • Video 10 - Building a Simple SaaS Landing Page in .NET
      • Video 11 - Building a Simple SaaS Publisher Portal in .NET
      • Video 12 - SaaS Webhook Overview
      • Video 13 - Implementing a Simple SaaS Webhook in .NET
      • Video 14 - Securing a Simple SaaS Webhook in .NET
      • Video 15 - SaaS Metered Billing Overview
      • Video 16 - The SaaS Metered Billing API with REST
  • Microsoft Fabric
    • Theory
    • Prereqs
    • Fabric Capacity
    • Set up a Remote State
    • Create a repo from a GitHub template
    • Configure an app reg for development
    • Initial Terraform workflow
    • Expanding your config
    • Configure a workload identity
    • GitHub Actions for Microsoft Fabric
    • GitLab pipeline for Microsoft Fabric
  • Packer & Ansible
    • Packer
    • Ansible
    • Dynamic Inventories
    • Playbooks & Roles
    • Custom Roles
    • Shared Image Gallery
  • Partner
    • Lighthouse and Partner Admin Link
      • Microsoft Cloud Partner Program
      • Combining Lighthouse and PAL
      • Minimal Lighthouse definition
      • Using service principals
      • Privileged Identity Management
    • Useful Links
  • REST API
    • REST API theory
    • Using az rest
  • Setup
  • Terraform
    • Fundamentals
      • Initialise
      • Format
      • Validate
      • Plan
      • Apply
      • Adding resources
      • Locals and outputs
      • Managing state
      • Importing resources
      • Destroy
    • Working Environments for Terraform
      • Cloud Shell
      • macOS
      • Windows with PowerShell
      • Windows with Ubuntu in WSL2
    • Using AzAPI
      • Using the REST API
      • azapi_resource
      • Removing azapi_resource
      • azapi_update_resource
      • Data sources and outputs
      • Removing azapi_update_resource
  • Virtual Machines
    • Azure Bastion with native tools & AAD
    • Managed Identities

  • About
  • Archive
  1. Home
  2. Azure Arc
  3. Azure Arc-enabled Servers
  4. On Prem VMs

Table of Contents

  • Introduction
  • Overview
  • Terraform prereqs
  • Terraform deployment
  • Guidance
  • Resources
  • Next up

On Prem VMs

You will need some on premises servers to onboard and connect to Azure as part of the pilot. Create then on the platform of your choice, or spin them up in Azure using our Terraform repo.

Introduction

⚠️ Are you are on an Azure Arc for Servers partner hack with Cloud Solution Architects from the UK GPS team at Microsoft?

If the answer is yes then you can skip this page. Join the hack when it starts, and then you can go straight to the foundation page once the introduction session has finished.

If not then you’re going to need some on prem VMs. Read on…

Overview

Your Azure Arc pilot requires a small number of Windows and linux servers.

These will be your “on prem” machines.

You will be onboarding these VMs as Azure Arc-enabled VMs. The hack scenario assumes a pilot of:

  • 3 x Windows Server VMs
  • 3 x Linux VMs

You have a choice here. Either:

  1. Create your own (preferred)

    If you have access to your own test/dev hardware then create a few VMs of each type.

    Azure Arc can onboard VMs from VMware vSphere, Hyper-V, Xen, Nutanix, AWS, GCP, bare metal servers etc. Refer to the supported list for Azure Arc and ensure your VMs have outgoing internet access.

    If you are providing your own “on prem” VMs then you can skip the rest of this page and go to the foundation page.

  2. Use our Terraform repo

    We have created a repo that allows you to generate a few “on prem” VMs. This is how we prepare environments for partners to use in the hacks.

Terraform prereqs

If using the Terraform repo then you will need an Azure subscription with sufficient credits and CPU quota.

If possible, deploy “on prem” into a separate subscription to the one used for onboarding. Seeing the “on prem” VMs in the same subscription as the matching Azure Arc-enabled Servers can prove confusing.

  1. Contributor access

  2. CPU quota

    # SKU Description Quota
    3 Standard_D2s_v3 Windows Server 2019 6 Standard DSv3 Family vCPUs
    3 Standard_A1_v2 Ubuntu 18.04 3 Standard Av2 Family vCPUs

    Check quota:

    az vm list-usage --location uksouth --output table
    

    Restrictions apply to some subscription offer types. Check SKU availability:

    az vm list-skus --location uksouth --size Standard_D --all --output table
    

    Note that the repo allows you to create the Windows and Linux servers in different paired regions and to change the VM SKUs from the defaults.

  3. Providers

    az provider register --namespace Microsoft.Compute
    az provider register --namespace Microsoft.Storage
    az provider register --namespace Microsoft.Network
    

Terraform deployment

The Terraform repo is https://github.com/terraform-azurerm-examples/arc-onprem-servers.

  1. Open a Bash shell

    You may use Cloud Shell with the Bash experience.

    Use code . in Cloud Shell to edit files with the Monaco editor.

  2. SSH Key Pair

    Create an SSH key pair if you don’t already have one.

  3. Clone and deploy

    Follow the instructions in the README to deploy the VMs.

    Experience with Terraform is not required or assumed.

    If there are any issues with the repo then please open an issue.

Guidance

⚠️ Please do not interact directly with the Azure resources in the onprem_servers resource group!

These VMs represent VMs that exist outside of Azure, so think of them as on prem servers, e.g. VMs running in an ESXi cluster in a datacentre.

You shouldn’t configure anything in the portal or CLI that directly accesses the VMs in the onprem_servers resource group az Azure resources, e.g. resetting passwords, installing extensions or applying policies.

Hint: You can also shut down these VMs in the portal when they are not needed so that they are deallocated and do not incur compute costs.

Resources

  • https://github.com/terraform-azurerm-examples/arc-onprem-servers

Next up

You now have on prem servers. Next you will prepare a resource group to onboard them into.

Move onto foundation.