Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie gebruikt u de Azure SDK voor Go om een Azure Resource Manager-sjabloon te implementeren.
Azure Resource Manager is de implementatie- en beheerservice voor Azure. Hiermee kunt u resources in uw Azure-account maken, bijwerken en verwijderen. Azure Resource Manager-sjablonen beschrijven uw infrastructuur declaratief als code in JSON-documenten.
Aan het einde van deze zelfstudie schrijft en implementeert u een Azure Resource Manager-sjabloon met behulp van Go.
Vereiste voorwaarden
- Azure-abonnement: als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Een nieuwe module maken
In deze sectie maakt u een nieuwe Go-module en installeert u de vereiste Azure SDK-pakketten. Vervolgens maakt u het hoofdtoepassingsbestand en voegt u code toe waarmee een Azure Resource Manager-sjabloon wordt geïmplementeerd.
Maak een nieuwe map met de naam
deployARM-how-to. Verander naar die map.mkdir deployARM-how-to cd deployARM-how-toVoer de
go mod initopdracht uit om dego.modengo.sumbestanden te maken.go mod init deployARM-how-toDe Azure SDK voor Go bevat verschillende pakketten voor het werken met Azure. Voor deze zelfstudie hebt u de
azcore/to,azidentityenarmresourcespakketten nodig.Voer de
go getopdracht uit om deze pakketten te downloaden:go get github.com/Azure/azure-sdk-for-go/sdk/azcore/to go get github.com/Azure/azure-sdk-for-go/sdk/azidentity go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresourcesMaak een bestand met de naam
main.go.touch main.goOpen
main.goin uw editor en voeg de volgende code toe die zich bij Azure authenticeert, een resource group maakt en een Azure Resource Manager-sjabloon implementeert.package main import ( "context" "encoding/json" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" ) const ( resourceGroupName = "deployARM-how-to" resourceGroupLocation = "eastus" deploymentName = "deployARM-how-to" templateFile = "template.json" ) var ( ctx = context.Background() ) // Read a JSON file from the given path. func readJSON(path string) (map[string]interface{}, error) { data, err := os.ReadFile(path) if err != nil { log.Fatalf("failed to read file: %v", err) } contents := make(map[string]interface{}) _ = json.Unmarshal(data, &contents) return contents, nil } func main() { subscriptionId := os.Getenv("AZURE_SUBSCRIPTION_ID") // Authenticate to Azure cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { log.Fatalf("failed to obtain a credential: %v", err) } // Create a resource group. client, err := armresources.NewResourceGroupsClient(subscriptionId, cred, nil) if err != nil { log.Fatalf("failed to create client: %v", err) } resp, err := client.CreateOrUpdate(context.Background(), resourceGroupName, armresources.ResourceGroup{ Location: to.Ptr(resourceGroupLocation), }, nil) if err != nil { log.Fatalf("failed to obtain a response: %v", err) } log.Printf("resource group ID: %s\n", *resp.ResourceGroup.ID) // Read the template file. template, err := readJSON(templateFile) if err != nil { return } // Deploy the Azure Resource Manager template. deploymentsClient, err := armresources.NewDeploymentsClient(subscriptionId, cred, nil) if err != nil { log.Fatalf("failed to create client: %v", err) } deploy, err := deploymentsClient.BeginCreateOrUpdate( ctx, resourceGroupName, deploymentName, armresources.Deployment{ Properties: &armresources.DeploymentProperties{ Template: template, Mode: to.Ptr(armresources.DeploymentModeIncremental), }, }, nil, ) if err != nil { log.Fatalf("failed to deploy template: %v", err) } fmt.Println(deploy) }
De Azure Resource Manager-sjabloon maken
Maak in de
deployARM-how-todirectory een ander bestand met de naamtemplate.json.Open het
template.jsonbestand en voeg de volgende Azure Resource Manager-sjablooncode toe waarmee een Azure-opslagaccount wordt gemaakt:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { }, "functions": [], "variables": {}, "resources": [{ "name": "<StorageAccountName>", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2021-04-01", "tags": { "displayName": "<StorageAccountDisplayName>" }, "location": "EastUS", "kind": "StorageV2", "sku": { "name": "Premium_LRS", "tier": "Premium" } }], "outputs": {} }Vervang
<StorageAccountName>en<StorageAccountDisplayName>door een geldige waarde voor de opslagnaam.
Aanmelden bij Azure
De code in dit artikel maakt gebruik van het defaultAzureCredential-type uit de Azure Identity-module voor Go om te verifiëren bij Azure.
DefaultAzureCredential ondersteunt veel referentietypen voor verificatie met Azure met behulp van OAuth met Microsoft Entra-id. In dit artikel gebruikt u de gebruikersreferenties waarmee u zich aanmeldt bij de Azure CLI.
Als u dat nog niet hebt gedaan, meldt u zich aan bij de Azure CLI:
az login
Als er meerdere abonnementen aan uw account zijn gekoppeld, gebruikt u de opdracht az account list om een lijst met deze abonnementen op te halen. Gebruik de opdracht az account set om het actieve abonnement in te stellen. Door het actieve abonnement in te stellen, zorgt u ervoor dat de CLI-opdrachten die u in de rest van dit artikel uitvoert, worden uitgevoerd op basis van uw beoogde abonnement.
Opmerking
Wanneer u lokaal werkt, DefaultAzureCredential ondersteunt u ook aanmeldingsreferenties van Azure Developer CLI (AZD) of een Azure-service-principal die u in omgevingsvariabelen configureert. Zie Azure-verificatie met de Azure Identity-module voor Go voor meer informatie over alle ondersteunde referentietypen.
De toepassing uitvoeren
Voordat u de sjabloon kunt implementeren, moet u uw Azure-abonnements-id definiëren als een omgevingsvariabele.
Voer de volgende az account show-opdracht uit om de abonnements-id op te halen.
az account show --query id --output tsvStel de
AZURE_SUBSCRIPTION_IDomgevingsvariabele in met uw abonnements-id. Vervang<AzureSubscriptionId>door uw abonnements-id.export AZURE_SUBSCRIPTION_ID=<AzureSubscriptionId>Voer de
go runopdracht uit om de sjabloon te implementeren:go run main.go
Troubleshoot
Als de implementatie van het opslagaccount mislukt, controleert u of u een geldige waarde voor de opslagnaam hebt gebruikt. Namen van opslagaccounts moeten tussen de 3 en 24 tekens lang zijn en mogen alleen kleine letters en cijfers bevatten.
Als het programma een fout retourneert met betrekking tot verificatie of autorisatie, controleert u de volgende items:
Als de fout begint met een tijdstempel en de volgende tekst: 'Kan geen antwoord krijgen: DefaultAzureCredential: kan geen token verkrijgen', controleert u of u zich eerder hebt aangemeld bij de Azure CLI.
Als de fout een autorisatie- of verboden fout is (statuscode 401 of 403), moet u ervoor zorgen dat uw gebruikersaccount een Azure-rol heeft die deze rechten geeft om resourcegroepen te maken en resources toe te voegen aan uw abonnement. Voorbeelden zijn de ingebouwde rollen Inzender of Eigenaarvan Azure. Zie Azure-rollen toewijzen met behulp van Azure CLI voor meer informatie over het toewijzen van Azure-rollen aan uw gebruiker.
Zie Problemen met Azure Identity-verificatie oplossen voor gedetailleerdere richtlijnen voor probleemoplossing.
De resources in Azure controleren
U kunt verschillende Azure CLI-opdrachten gebruiken om te controleren of de resources zijn gemaakt in Azure. De volgende opdrachten zijn enkele voorbeelden.
Voer de opdracht az group exists uit om te controleren of de resourcegroep bestaat.
az group exists --name deployARM-how-to
U kunt de resources in de groep weergeven met behulp van de opdracht az resource list .
az resource list --resource-group deployARM-how-to
U kunt de implementatieresultaten (outputResources) en eigenschappen bekijken met behulp van de opdracht az deployment group show .
az deployment group show -g deployARM-how-to -n deployARM-how-to
De hulpbronnen opschonen
Resources in Azure kunnen doorlopende kosten in rekening brengen. Zorg ervoor dat u de in dit artikel aangemaakte hulpmiddelen opschoont.
Als u een lege sjabloon in de volledige modus implementeert, worden alle resources in een resourcegroep verwijderd. Het is een handige manier om resources op te schonen zonder de resourcegroep zelf te verwijderen.
Maak een nieuwe lege sjabloon met de naam
empty-template.json.Open
empty-template.jsonde editor en voeg de volgende code toe:{ "$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [], "outputs": {} }Open het
main.go-bestand.Werk de
templateFileconstante waarde bij naarempty-template.json.const ( resourceGroupName = "deployARM-how-to" resourceGroupLocation = "eastus" deploymentName = "deployARM-how-to" templateFile = "empty-template.json" )Wijzig de implementatietijd van incrementeel naar voltooid door de eigenschappen van de implementatiemodus te wijzigen in
DeploymentModeComplete. Zie Azure Resource Manager-implementatiemodivoor meer informatie over implementatiemodi.deploy, err = deploymentsClient.BeginCreateOrUpdate( ctx, resourceGroupName, deploymentName, armresources.Deployment{ Properties: &armresources.DeploymentProperties{ Template: template, Mode: to.Ptr(armresources.DeploymentModeComplete), //Deployment Mode is here }, }, nil, )Voer de
go runopdracht uit om de lege sjabloon te implementeren en verwijder het opslagaccount dat u eerder hebt gemaakt.go run main.go
In plaats van een implementatie te gebruiken, kunt u de resourcegroep en alle bijbehorende resources verwijderen door de volgende Azure CLI-opdracht uit te voeren:
az group delete --resource-group deployARM-how-to