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.
- 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.
- v Visual Studio klikněte na soubor>nový>Project.
- 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:
klikněte na nástroje>Nuget Správce balíčkůa pak klikněte na Správce balíčků konzola.
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
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.
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')]" } ] } } } ] }
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.
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.
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" } } }
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.
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.
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.
Uložte soubor azureauth. Properties.
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
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;
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.
Chcete-li spustit konzolovou aplikaci, klikněte na tlačítko Start.
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
- V případě, že došlo k potížím s nasazením, je dalším krokem postup při řešení běžných chyb při nasazení Azure pomocí azure Resource Manager.
- Zjistěte, jak nasadit virtuální počítač a jeho podpůrné prostředky pomocí tématu nasazení virtuálního počítače Azure pomocí jazyka C#.