Så här skapar du en virtuell Linux-dator med Azure Resource Manager-mallar

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️

Lär dig hur du skapar en virtuell Linux-dator (VM) med hjälp av en Azure Resource Manager-mall och Azure CLI från Azure Cloud Shell. Information om hur du skapar en virtuell Windows-dator finns i Skapa en virtuell Windows-dator från en Resource Manager-mall.

Ett alternativ är att distribuera mallen från Azure-portalen. Öppna mallen i portalen genom att välja knappen Distribuera till Azure .

Button to deploy the Resource Manager template to Azure.

Översikt över mallar

Azure Resource Manager-mallar är JSON-filer som definierar infrastrukturen och konfigurationen av din Azure-lösning. Genom att använda en mall kan du distribuera lösningen flera gånger under dess livscykel och vara säker på att dina resurser distribueras konsekvent. Mer information om mallens format och hur du skapar den finns i Snabbstart: Skapa och distribuera Azure Resource Manager-mallar med hjälp av Azure-portalen. JSON-syntaxen för resurstyper finns i Define resources in Azure Resource Manager templates (Definiera resurser i Azure Resource Manager-mallar).

Snabbstartsmall

Kommentar

Den angivna mallen skapar en virtuell Azure Generation 2-dator som standard.

Kommentar

Endast SSH-autentisering är aktiverat som standard när du använder snabbstartsmallen. När du uppmanas till det anger du värdet för din egen offentliga SSH-nyckel, till exempel innehållet i ~/.ssh/id_rsa.pub.

Om du inte har ett SSH-nyckelpar skapar och använder du ett SSH-nyckelpar för virtuella Linux-datorer i Azure.

Klicka på Kopiera för att lägga till snabbstartsmallen i Urklipp:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "projectName": {
      "type": "string",
      "metadata": {
        "description": "Specifies a name for generating resource names."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the location for all resources."
      }
    },
    "adminUsername": {
      "type": "string",
      "metadata": {
        "description": "Specifies a username for the Virtual Machine."
      }
    },
    "adminPublicKey": {
      "type": "string",
      "metadata": {
        "description": "Specifies the SSH rsa public key file as a string. Use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs."
      }
    },
    "vmSize": {
      "type": "string",
      "defaultValue": "Standard_D2s_v3",
      "metadata": {
        "description": "description"
      }
    }
  },
  "variables": {
    "vNetName": "[concat(parameters('projectName'), '-vnet')]",
    "vNetAddressPrefixes": "10.0.0.0/16",
    "vNetSubnetName": "default",
    "vNetSubnetAddressPrefix": "10.0.0.0/24",
    "vmName": "[concat(parameters('projectName'), '-vm')]",
    "publicIPAddressName": "[concat(parameters('projectName'), '-ip')]",
    "networkInterfaceName": "[concat(parameters('projectName'), '-nic')]",
    "networkSecurityGroupName": "[concat(parameters('projectName'), '-nsg')]",
    "networkSecurityGroupName2": "[concat(variables('vNetSubnetName'), '-nsg')]"
  },
  "resources": [
    {
      "type": "Microsoft.Network/networkSecurityGroups",
      "apiVersion": "2020-05-01",
      "name": "[variables('networkSecurityGroupName')]",
      "location": "[parameters('location')]",
      "properties": {
        "securityRules": [
          {
            "name": "ssh_rule",
            "properties": {
              "description": "Locks inbound down to ssh default port 22.",
              "protocol": "Tcp",
              "sourcePortRange": "*",
              "destinationPortRange": "22",
              "sourceAddressPrefix": "*",
              "destinationAddressPrefix": "*",
              "access": "Allow",
              "priority": 123,
              "direction": "Inbound"
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "2020-05-01",
      "name": "[variables('publicIPAddressName')]",
      "location": "[parameters('location')]",
      "properties": {
        "publicIPAllocationMethod": "Dynamic"
      },
      "sku": {
        "name": "Basic"
      }
    },
    {
      "comments": "Simple Network Security Group for subnet [variables('vNetSubnetName')]",
      "type": "Microsoft.Network/networkSecurityGroups",
      "apiVersion": "2020-05-01",
      "name": "[variables('networkSecurityGroupName2')]",
      "location": "[parameters('location')]",
      "properties": {
        "securityRules": [
          {
            "name": "default-allow-22",
            "properties": {
              "priority": 1000,
              "access": "Allow",
              "direction": "Inbound",
              "destinationPortRange": "22",
              "protocol": "Tcp",
              "sourceAddressPrefix": "*",
              "sourcePortRange": "*",
              "destinationAddressPrefix": "*"
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-05-01",
      "name": "[variables('vNetName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName2'))]"
      ],
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[variables('vNetAddressPrefixes')]"
          ]
        },
        "subnets": [
          {
            "name": "[variables('vNetSubnetName')]",
            "properties": {
              "addressPrefix": "[variables('vNetSubnetAddressPrefix')]",
              "networkSecurityGroup": {
                "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName2'))]"
              }
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2020-05-01",
      "name": "[variables('networkInterfaceName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks', variables('vNetName'))]",
        "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]"
      ],
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig1",
            "properties": {
              "privateIPAllocationMethod": "Dynamic",
              "publicIPAddress": {
                "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]"
              },
              "subnet": {
                "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vNetName'), variables('vNetSubnetName'))]"
              }
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2021-11-01",
      "name": "[variables('vmName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "[parameters('vmSize')]"
        },
        "osProfile": {
          "computerName": "[variables('vmName')]",
          "adminUsername": "[parameters('adminUsername')]",
          "linuxConfiguration": {
            "disablePasswordAuthentication": true,
            "ssh": {
              "publicKeys": [
                {
                  "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
                  "keyData": "[parameters('adminPublicKey')]"
                }
              ]
            }
          }
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "Canonical",
            "offer": "0001-com-ubuntu-server-jammy",
            "sku": "22_04-lts-gen2",
            "version": "latest"
          },
          "osDisk": {
            "createOption": "fromImage"
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
            }
          ]
        }
      }
    }
  ]
}

Du kan också ladda ned eller skapa en mall och ange den lokala sökvägen med parametern --template-file .

Skapa en snabbstartsmall för virtuell dator med Azure CLI

När du har hämtat eller skapat en snabbstartsmall skapar du en virtuell dator med den med hjälp av Azure CLI.

Följande kommando begär flera indata från användaren. Dessa kan vara:

  • Namnet på resursgruppen (resourceGroupName)
  • Plats för Det Azure-datacenter som är värd för den virtuella datorn (plats)
  • Ett namn på resurser som är relaterade till den virtuella datorn (projectName)
  • Användarnamn för administratörsanvändaren (användarnamn)
  • En offentlig SSH-nyckel för åtkomst till den virtuella datorns terminal (nyckel)

För att skapa en virtuell Azure-dator krävs en resursgrupp. Snabbstartsmallar omfattar skapande av resursgrupper som en del av processen.

Om du vill köra CLI-skriptet klickar du på Öppna Cloudshell. När du har åtkomst till Azure Cloudshell klickar du på Kopiera för att kopiera kommandot, högerklickar på gränssnittet och väljer klistra in.

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
echo "Enter the location (i.e. centralus):" &&
read location &&
echo "Enter the project name (used for generating resource names):" &&
read projectName &&
echo "Enter the administrator username:" &&
read username &&
echo "Enter the SSH public key:" &&
read key &&
az group create --name $resourceGroupName --location "$location" &&
az deployment group create --resource-group $resourceGroupName --template-uri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-sshkey/azuredeploy.json --parameters projectName=$projectName adminUsername=$username adminPublicKey="$key" &&
az vm show --resource-group $resourceGroupName --name "$projectName-vm" --show-details --query publicIps --output tsv

Den sista raden i kommandot visar den offentliga IP-adressen för den nyligen skapade virtuella datorn. Du behöver den offentliga IP-adressen för att ansluta till den virtuella datorn.

Ansluta till den virtuella datorn

Du kan sedan SSH till den virtuella datorn som vanligt. Ange din egen offentliga IP-adress från föregående kommando:

ssh <adminUsername>@<ipAddress>

Andra mallar

I det här exemplet har du skapat en grundläggande virtuell Linux-dator. Om du vill ha fler Resource Manager-mallar som innehåller programramverk eller skapar mer komplexa miljöer kan du bläddra i Azure-snabbstartsmallarna.

Mer information om hur du skapar mallar finns i JSON-syntaxen och egenskaperna för de resurstyper som du har distribuerat:

Nästa steg

  • Information om hur du utvecklar Resource Manager-mallar finns i Dokumentation om Azure Resource Manager.
  • Information om hur du ser scheman för virtuella Azure-datorer finns i Referens för Azure-mallar.
  • Mer information om mallexempel för virtuella datorer finns i Azure-snabbstartsmallar.