Sdílet prostřednictvím


nasazení virtuálního počítače Azure pomocí C# a šablony Resource Manager

v tomto článku se dozvíte, jak nasadit šablonu Azure Resource Manager pomocí jazyka C#. šablona, kterou vytvoříte, nasadí jeden virtuální počítač s Windows serverem v nové virtuální síti s jednou podsítí.

podrobný popis prostředku virtuálního počítače najdete v tématu virtuální počítače v šabloně Azure Resource Manager. další informace o všech prostředcích v šabloně najdete v tématu návod k šablonám pro Azure Resource Manager.

Provedení těchto kroků trvá přibližně 10 minut.

Vytvoření projektu ve Visual Studiu

v tomto kroku se ujistěte, že je nainstalovaná Visual Studio a vy vytvoříte konzolovou aplikaci, která se používá k nasazení šablony.

  1. Pokud jste to ještě neudělali, nainstalujte Visual Studio. Na stránce úlohy vyberte vývoj pro desktopy .NET a pak klikněte na nainstalovat. v souhrnu vidíte, že se pro vás automaticky vybraly .NET Framework nástroje pro vývoj 4-4,6 . pokud jste již nainstalovali Visual Studio, můžete přidat úlohu rozhraní .net pomocí spouštěče Visual Studio.
  2. v Visual Studio klikněte na soubor>nový>Project.
  3. v šablonách>Visual C#vyberte konzolová aplikace (.NET Framework), jako název projektu zadejte myDotnetProject , vyberte umístění projektu a pak klikněte na OK.

Nainstalovat balíčky

NuGet balíčky jsou nejjednodušší způsob, jak nainstalovat knihovny, které potřebujete k dokončení těchto kroků. chcete-li získat knihovny, které potřebujete v Visual Studio, proveďte tyto kroky:

  1. klikněte na nástroje>Nuget Správce balíčkůa pak klikněte na Správce balíčků konzola.

  2. Do konzoly zadejte tyto příkazy:

    Install-Package Microsoft.Azure.Management.Fluent
    Install-Package WindowsAzure.Storage
    

Vytvoření souborů

V tomto kroku vytvoříte soubor šablony, který nasadí prostředky a soubor parametrů, který do šablony dodá hodnoty parametrů. také vytvoříte autorizační soubor, který se používá k provádění operací Azure Resource Manager.

Vytvoření souboru šablony

  1. v Průzkumník řešení klikněte pravým tlačítkem myši na myDotnetProject>přidat>novou položkua pak vyberte textový soubor v položkách jazyka Visual C#. Pojmenujte soubor CreateVMTemplate. JSONa klikněte na tlačítko Přidat.

  2. Tento kód JSON přidejte do souboru, který jste vytvořili:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "adminUsername": { "type": "string" },
        "adminPassword": { "type": "securestring" }
      },
      "variables": {
        "vnetID": "[resourceId('Microsoft.Network/virtualNetworks','myVNet')]", 
        "subnetRef": "[concat(variables('vnetID'),'/subnets/mySubnet')]", 
      },
      "resources": [
        {
          "apiVersion": "2016-03-30",
          "type": "Microsoft.Network/publicIPAddresses",
          "name": "myPublicIPAddress",
          "location": "[resourceGroup().location]",
          "properties": {
            "publicIPAllocationMethod": "Dynamic",
            "dnsSettings": {
              "domainNameLabel": "myresourcegroupdns1"
            }
          }
        },
        {
          "apiVersion": "2016-03-30",
          "type": "Microsoft.Network/virtualNetworks",
          "name": "myVNet",
          "location": "[resourceGroup().location]",
          "properties": {
            "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] },
            "subnets": [
              {
                "name": "mySubnet",
                "properties": { "addressPrefix": "10.0.0.0/24" }
              }
            ]
          }
        },
        {
          "apiVersion": "2016-03-30",
          "type": "Microsoft.Network/networkInterfaces",
          "name": "myNic",
          "location": "[resourceGroup().location]",
          "dependsOn": [
            "[resourceId('Microsoft.Network/publicIPAddresses/', 'myPublicIPAddress')]",
            "[resourceId('Microsoft.Network/virtualNetworks/', 'myVNet')]"
          ],
          "properties": {
            "ipConfigurations": [
              {
                "name": "ipconfig1",
                "properties": {
                  "privateIPAllocationMethod": "Dynamic",
                  "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses','myPublicIPAddress')]" },
                  "subnet": { "id": "[variables('subnetRef')]" }
                }
              }
            ]
          }
        },
        {
          "apiVersion": "2016-04-30-preview",
          "type": "Microsoft.Compute/virtualMachines",
          "name": "myVM",
          "location": "[resourceGroup().location]",
          "dependsOn": [
            "[resourceId('Microsoft.Network/networkInterfaces/', 'myNic')]"
          ],
          "properties": {
            "hardwareProfile": { "vmSize": "Standard_DS1" },
            "osProfile": {
              "computerName": "myVM",
              "adminUsername": "[parameters('adminUsername')]",
              "adminPassword": "[parameters('adminPassword')]"
            },
            "storageProfile": {
              "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "2012-R2-Datacenter",
                "version": "latest"
              },
              "osDisk": {
                "name": "myManagedOSDisk",
                "caching": "ReadWrite",
                "createOption": "FromImage"
              }
            },
            "networkProfile": {
              "networkInterfaces": [
                {
                  "id": "[resourceId('Microsoft.Network/networkInterfaces','myNic')]"
                }
              ]
            }
          }
        }
      ]
    }
    
  3. Uložte soubor CreateVMTemplate. JSON.

Vytvoření souboru parametrů

Chcete-li zadat hodnoty parametrů prostředků v šabloně, vytvořte soubor parametrů, který obsahuje hodnoty.

  1. v Průzkumník řešení klikněte pravým tlačítkem myši na myDotnetProject>přidat>novou položkua pak vyberte textový soubor v položkách jazyka Visual C#. Zadejte název souboru Parameters. JSONa pak klikněte na Přidat.

  2. Tento kód JSON přidejte do souboru, který jste vytvořili:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "adminUserName": { "value": "azureuser" },
        "adminPassword": { "value": "Azure12345678" }
      }
    }
    
  3. Uložte soubor Parameters. JSON.

Vytvoření autorizačního souboru

Než budete moct nasadit šablonu, ujistěte se, že máte přístup k instančnímu objektu služby Active Directory. Z instančního objektu získáte token pro ověřování požadavků do Azure Resource Manager. Měli byste také zaznamenat ID aplikace, ověřovací klíč a ID tenanta, které v autorizačním souboru potřebujete.

  1. v Průzkumník řešení klikněte pravým tlačítkem myši na myDotnetProject>přidat>novou položkua pak vyberte textový soubor v položkách jazyka Visual C#. Pojmenujte soubor azureauth. Propertiesa pak klikněte na Přidat.

  2. Přidejte tyto vlastnosti autorizace:

    subscription=<subscription-id>
    client=<application-id>
    key=<authentication-key>
    tenant=<tenant-id>
    managementURI=https://management.core.windows.net/
    baseURL=https://management.azure.com/
    authURL=https://login.windows.net/
    graphURL=https://graph.microsoft.com/
    

    Nahraďte < ID > předplatného identifikátorem vašeho předplatného, < ID > aplikace s identifikátorem aplikace služby Active Directory, < klíčem pro ověřování > a klíčovým klíčem aplikace a < ID > tenanta s identifikátorem tenanta.

  3. Uložte soubor azureauth. Properties.

  4. v Windows s názvem AZURE_AUTH_LOCATION nastavte proměnnou prostředí s úplnou cestou k vytvořenému autorizačnímu souboru, například můžete použít následující příkaz prostředí PowerShell:

    [Environment]::SetEnvironmentVariable("AZURE_AUTH_LOCATION", "C:\Visual Studio 2019\Projects\myDotnetProject\myDotnetProject\azureauth.properties", "User")
    

Vytvořit klienta pro správu

  1. Otevřete soubor program. cs pro projekt, který jste vytvořili. Pak přidejte tyto příkazy using do stávajících příkazů v horní části souboru:

    using Microsoft.Azure.Management.Compute.Fluent;
    using Microsoft.Azure.Management.Compute.Fluent.Models;
    using Microsoft.Azure.Management.Fluent;
    using Microsoft.Azure.Management.ResourceManager.Fluent;
    using Microsoft.Azure.Management.ResourceManager.Fluent.Core;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Blob;
    
  2. Chcete-li vytvořit klienta pro správu, přidejte tento kód do metody Main:

    var credentials = SdkContext.AzureCredentialsFactory
        .FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
    
    var azure = Azure
        .Configure()
        .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
        .Authenticate(credentials)
        .WithDefaultSubscription();
    

Vytvoření skupiny prostředků

Chcete-li zadat hodnoty pro aplikaci, přidejte kód do metody Main:

var groupName = "myResourceGroup";
var location = Region.USWest;

var resourceGroup = azure.ResourceGroups.Define(groupName)
    .WithRegion(location)
    .Create();

Vytvoření účtu úložiště

Šablonu a parametry se nasazují z účtu úložiště v Azure. V tomto kroku vytvoříte účet a nahrajete soubory.

Chcete-li vytvořit účet, přidejte tento kód do metody Main:

string storageAccountName = SdkContext.RandomResourceName("st", 10);

Console.WriteLine("Creating storage account...");
var storage = azure.StorageAccounts.Define(storageAccountName)
    .WithRegion(Region.USWest)
    .WithExistingResourceGroup(resourceGroup)
    .Create();

var storageKeys = storage.GetKeys();
string storageConnectionString = "DefaultEndpointsProtocol=https;"
    + "AccountName=" + storage.Name
    + ";AccountKey=" + storageKeys[0].Value
    + ";EndpointSuffix=core.windows.net";

var account = CloudStorageAccount.Parse(storageConnectionString);
var serviceClient = account.CreateCloudBlobClient();

Console.WriteLine("Creating container...");
var container = serviceClient.GetContainerReference("templates");
container.CreateIfNotExistsAsync().Wait();
var containerPermissions = new BlobContainerPermissions()
    { PublicAccess = BlobContainerPublicAccessType.Container };
container.SetPermissionsAsync(containerPermissions).Wait();

Console.WriteLine("Uploading template file...");
var templateblob = container.GetBlockBlobReference("CreateVMTemplate.json");
templateblob.UploadFromFileAsync("..\\..\\CreateVMTemplate.json").Result();

Console.WriteLine("Uploading parameters file...");
var paramblob = container.GetBlockBlobReference("Parameters.json");
paramblob.UploadFromFileAsync("..\\..\\Parameters.json").Result();

Nasazení šablony

Nasaďte šablonu a parametry z účtu úložiště, který jste vytvořili.

Chcete-li nasadit šablonu, přidejte tento kód do metody Main:

var templatePath = "https://" + storageAccountName + ".blob.core.windows.net/templates/CreateVMTemplate.json";
var paramPath = "https://" + storageAccountName + ".blob.core.windows.net/templates/Parameters.json";
var deployment = azure.Deployments.Define("myDeployment")
    .WithExistingResourceGroup(groupName)
    .WithTemplateLink(templatePath, "1.0.0.0")
    .WithParametersLink(paramPath, "1.0.0.0")
    .WithMode(Microsoft.Azure.Management.ResourceManager.Fluent.Models.DeploymentMode.Incremental)
    .Create();
Console.WriteLine("Press enter to delete the resource group...");
Console.ReadLine();

Odstranit prostředky

Vzhledem k tomu, že se vám účtují prostředky používané v Azure, je vždy vhodné odstranit prostředky, které už nepotřebujete. Nemusíte odstraňovat jednotlivé prostředky odděleně od skupiny prostředků. Odstraní skupinu prostředků a všechny její prostředky se automaticky odstraní.

Pokud chcete odstranit skupinu prostředků, přidejte tento kód do metody Main:

azure.ResourceGroups.DeleteByName(groupName);

Spuštění aplikace

Spuštění této konzolové aplikace z začátku do konce by mělo trvat přibližně pět minut.

  1. Chcete-li spustit konzolovou aplikaci, klikněte na tlačítko Start.

  2. Než stisknete ENTER a začnete odstraňovat prostředky, může trvat několik minut, než se ověří vytváření prostředků v Azure Portal. Kliknutím na stav nasazení zobrazíte informace o nasazení.

Další kroky