Delen via


Resourcegroepen beheren met de Azure SDK voor Go

In dit artikel leert u hoe u een resourcegroep maakt en beheert met de Azure SDK voor Go-beheerbibliotheek.

1. Azure-resources instellen

Als u de stappen in dit artikel wilt uitvoeren, hebt u de volgende Azure-resources en -id's nodig:

  • Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.

  • Haal de Azure-abonnements-id op.

  • Haal de Tenant-id van Microsoft Entra op.

  • Een service-principal maken. Noteer de toepassings-id en het geheim van de service-principal. Zorg ervoor dat u ook de instructies volgt om de rol Inzender voor uw abonnement toe te wijzen aan de toepassing. De rol Inzender is een bevoorrechte beheerdersrol die machtigingen verleent voor het beheren van alle resources in uw abonnement.

Voordat u verdergaat met de volgende sectie, moet u ervoor zorgen dat u uw abonnements-id (Guid), tenant-id (Guid) en de client-/toepassings-id (Guid) en het geheim voor uw service-principal hebt genoteerd.

2. Omgevingsvariabelen voor verificatie instellen

Stel met behulp van uw Azure-verificatiegegevens de juiste omgevingsvariabelen in, zodat uw code kan worden geverifieerd bij Azure.

Stel de volgende omgevingsvariabelen in. Vervang de tijdelijke aanduidingen door de juiste waarden uit de vorige sectie.

export AZURE_SUBSCRIPTION_ID="<azure_subscription_id>"
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"

3. Een resourcegroep maken

  1. Maak een map waarin u de go-voorbeeldcode wilt testen en uitvoeren en deze de huidige map wilt maken.

  2. Voer go mod init uit om een module te maken in de huidige map.

    go mod init <module_path>
    

    Belangrijkste punten:

    • De <module_path> parameter is over het algemeen een locatie in een GitHub-opslagplaats, zoals github.com/<your_github_account_name>/<directory>.
    • Wanneer u een opdrachtregel-app maakt als test en de app niet publiceert, hoeft deze <module_path> niet naar een werkelijke locatie te verwijzen.
  3. Voer de volgende opdracht uit om de benodigde Azure SDK voor Go-modules te downloaden, te bouwen en te installeren.

    go get github.com/Azure/azure-sdk-for-go/sdk/azcore
    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/armresources
    

    Belangrijk

    De pakketten voor de huidige versie van de Azure-resourcebeheerbibliotheken bevinden zich in sdk/**/arm**. De pakketten voor de vorige versie van de beheerbibliotheken bevinden zich onder /services. Als u de oudere versie gebruikt, raadpleegt u de Migratiehandleiding voor Azure SDK voor Go.

  4. Maak een bestand met de naam main.go en voeg de volgende code toe. Elke sectie met code wordt commentaar gegeven om het doel ervan uit te leggen.

    package main
    
    // Import key modules.
    import (
    	"context"
    	"log"
    	"os"
    
    	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
    	"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"
    )
    
    // Define key global variables.
    var (
    	subscriptionId    = os.Getenv("AZURE_SUBSCRIPTION_ID")
    	location          = "eastus"
    	resourceGroupName = "myResourceGroup" // !! IMPORTANT: Change this to a unique name in your subscription.
    	ctx               = context.Background()
    )
    
    // Define the function to create a resource group.
    func createResourceGroup(subscriptionId string, credential azcore.TokenCredential) (armresources.ResourceGroupsClientCreateOrUpdateResponse, error) {
    	rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil)
    
    	param := armresources.ResourceGroup{
    		Location: to.Ptr(location),
    	}
    
    	return rgClient.CreateOrUpdate(ctx, resourceGroupName, param, nil)
    }
    
    // Define the standard 'main' function for an app that is called from the command line.
    func main() {
    
    	// Create a credentials object.
    	cred, err := azidentity.NewDefaultAzureCredential(nil)
    	if err != nil {
    		log.Fatalf("Authentication failure: %+v", err)
    	}
    
    	// Call your function to create an Azure resource group.
    	resourceGroup, err := createResourceGroup(subscriptionId, cred)
    	if err != nil {
    		log.Fatalf("Creation of resource group failed: %+v", err)
    	}
    
    	// Print the name of the new resource group.
    	log.Printf("Resource group %s created", *resourceGroup.ResourceGroup.ID)
    }
    

    Belangrijkste punten:

    • De subscriptionId waarde wordt opgehaald uit de AZURE_SUBSCRIPTION_ID omgevingsvariabele.
    • De location tekenreeksen en resourceGroupName tekenreeksen worden ingesteld om waarden te testen. Wijzig deze waarden indien nodig in iets dat geschikt is voor uw locatie en abonnement.
  5. Voer go-moddy uit om de afhankelijkheden in het go.mod bestand op te schonen op basis van uw broncode.

    go mod tidy
    
  6. Voer go run deze uit om de app te bouwen en uit te voeren.

    go run .
    

4. Controleer de resultaten

  1. Blader naar Azure Portal.

  2. Meld u aan en selecteer uw Azure-abonnement.

  3. Selecteer Resourcegroepen in het linkermenu.

  4. De nieuwe resourcegroep wordt vermeld in de resourcegroepen van uw Azure-abonnement.

5. Een resourcegroep bijwerken

  1. Ga terug naar het main.go bestand.

  2. Voeg de volgende code net boven de main functie in.

    // Update the resource group by adding a tag to it.
    func updateResourceGroup(subscriptionId string, credential azcore.TokenCredential) (armresources.ResourceGroupsClientUpdateResponse, error) {
        rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil)
    
        update := armresources.ResourceGroupPatchable{
            Tags: map[string]*string{
                "new": to.Ptr("tag"),
            },
        }
        return rgClient.Update(ctx, resourceGroupName, update, nil)
    }
    

Nadat u de code hebt toegevoegd, gaat u verder met de volgende sectie. U voert de code uit in een latere sectie.

6. De resourcegroepen van een Azure-abonnement vermelden

  1. Ga terug naar het main.go bestand.

  2. Voeg de volgende code net boven de main functie in.

    // List all the resource groups of an Azure subscription.
    func listResourceGroups(subscriptionId string, credential azcore.TokenCredential) ([]*armresources.ResourceGroup, error) {
        rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil)
    
        pager := rgClient.NewListPager(nil)
    
        var resourceGroups []*armresources.ResourceGroup
        for pager.More() {
            resp, err := pager.NextPage(ctx)
            if err != nil {
                return nil, err
            }
            if resp.ResourceGroupListResult.Value != nil {
                resourceGroups = append(resourceGroups, resp.ResourceGroupListResult.Value...)
            }
        }
        return resourceGroups, nil
    }
    

Nadat u de code hebt toegevoegd, gaat u verder met de volgende sectie. U voert de code uit in een latere sectie.

7. Een resourcegroep verwijderen

  1. Ga terug naar het main.go bestand.

  2. Voeg de volgende code net boven de main functie in.

    // Delete a resource group.
    func deleteResourceGroup(subscriptionId string, credential azcore.TokenCredential) error {
        rgClient := armresources.NewResourceGroupsClient(subscriptionId, credential, nil)
    
        poller, err := rgClient.BeginDelete(ctx, resourceGroupName, nil)
        if err != nil {
            return err
        }
        if _, err := poller.PollUntilDone(ctx, nil); err != nil {
            return err
        }
        return nil
    }
    

Nadat u de code hebt toegevoegd, gaat u verder met de volgende sectie. U voert de code uit in een latere sectie.

8. De hoofdfunctie bijwerken

In vorige secties hebt u code toegevoegd om een resourcegroep te maken, bij te main.go werken en te verwijderen. U hebt ook code toegevoegd om alle resourcegroepen in een Azure-abonnement weer te geven. Ga als volgt te werk om al deze functies opeenvolgend uit te voeren:

  1. Vervang main.gode main functie door de volgende code:

    func main() {
    
        // Create a credentials object.
        cred, err := azidentity.NewDefaultAzureCredential(nil)
        if err != nil {
            log.Fatalf("Authentication failure: %+v", err)
        }
    
        // Call your function to create an Azure resource group.
        resourceGroup, err := createResourceGroup(subscriptionId, cred)
        if err != nil {
            log.Fatalf("Creation of resource group failed: %+v", err)
        }
        // Print the name of the new resource group.
        log.Printf("Resource group %s created", *resourceGroup.ResourceGroup.ID)
    
        // Call your function to add a tag to your new resource group.
        updatedRG, err := updateResourceGroup(subscriptionId, cred)
        if err != nil {
            log.Fatalf("Update of resource group failed: %+v", err)
        }
        log.Printf("Resource Group %s updated", *updatedRG.ResourceGroup.ID)
    
        // Call your function to list all the resource groups.
        rgList, err := listResourceGroups(subscriptionId, cred)
        if err != nil {
            log.Fatalf("Listing of resource groups failed: %+v", err)
        }
        log.Printf("Your Azure subscription has a total of %d resource groups", len(rgList))
    
        // Call your function to delete the resource group you created.
        if err := deleteResourceGroup(subscriptionId, cred); err != nil {
            log.Fatalf("Deletion of resource group failed: %+v", err)
        }
        log.Printf("Resource group deleted")
    }
    
  2. Voer de code uit en bekijk de uitvoer.

    go run .
    
    2024/07/31 15:29:06 Resource group /subscriptions/<subscription ID>/resourceGroups/myResourceGroup created
    2024/07/31 15:29:07 Resource Group /subscriptions/<subscription ID>/resourceGroups/myResourceGroup updated
    2024/07/31 15:29:07 Your Azure subscription has a total of 8 resource groups
    2024/07/31 15:30:25 Resource group deleted
    

    Notitie

    Het verwijderen van de resourcegroep kan enkele minuten duren.

Probleemoplossing

Volgende stappen