Správa skupin prostředků pomocí Azure SDK pro Go

V tomto článku se dozvíte, jak vytvořit skupinu prostředků pomocí knihovny pro správu Azure SDK pro Go.

1. konfigurace prostředí

Důležité

Balíčky pro aktuální verzi knihoven správy prostředků Azure jsou umístěné v sdk/**/arm** . Balíčky pro předchozí verzi knihoven pro správu jsou umístěné v části /services . Pokud používáte starší verzi, přečtěte si toto Azure SDK pro go Průvodce migrací.

2. ověřování v Azure

Pomocí informací o ověřování Azure nastavte příslušné proměnné prostředí tak, aby se váš kód mohl ověřit do Azure.

  1. Upravte ~/.bashrc soubor přidáním následujících proměnných prostředí. Zástupné symboly nahraďte odpovídajícími hodnotami z předchozí části.

    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>"
    
  2. Chcete-li spustit ~/.bashrc skript, spusťte source ~/.bashrc (nebo jeho zkrácený ekvivalent . ~/.bashrc ).

    . ~/.bashrc
    
  3. Po nastavení proměnných prostředí můžete ověřit jejich hodnoty následujícím způsobem:

    printenv | grep ^AZURE*
    

3. Vytvoření skupiny prostředků

  1. Vytvořte adresář, ve kterém chcete otestovat a spustit vzorový kód přejít a nastavte ho jako aktuální adresář.

  2. Spusťte příkaz Přejít do rozstředního prostředí a vytvořte modul v aktuálním adresáři.

    go mod init <module_path>
    

    Klíčové body:

    • <module_path>parametr je obvykle umístění v GitHub úložiště – například github.com/<your_github_account_name>/<directory> .
    • Když vytváříte aplikaci příkazového řádku jako test a aplikace nebude publikovat, nemusí <module_path> existovat.
  3. Spusťte příkaz Přejít a Stáhněte si, sestavte a nainstalujte potřebné Azure SDK pro go moduly.

    go get github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute
    go get github.com/Azure/azure-sdk-for-go/sdk/armcore
    go get github.com/Azure/azure-sdk-for-go/sdk/azcore
    go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
    go get github.com/Azure/azure-sdk-for-go/sdk/resources/armresources
    go get github.com/Azure/azure-sdk-for-go/sdk/to
    
  4. Vytvořte soubor s názvem main.go a vložte následující kód. Každá část kódu je komentovat a vysvětluje její účel.

    package main
    
    // Import key modules.
    import (
    	"context"
    	"log"
    	"os"
    
    	"github.com/Azure/azure-sdk-for-go/sdk/armcore"
    	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
    	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    	"github.com/Azure/azure-sdk-for-go/sdk/resources/armresources"
    	"github.com/Azure/azure-sdk-for-go/sdk/to"
    )
    
    // Define key global variables.
    var (
    	subscriptionId    = os.Getenv("ARM_SUBSCRIPTION_ID")
    	location          = "eastus"
    	resourceGroupName = "myResourceGroup" // !! IMPORTANT: Change this to a unique name in your subscription.
        interval          = 5 * time.Second
    )
    
    // Define the function to create a resource group.
    func createResourceGroup(connection *armcore.Connection) (armresources.ResourceGroupResponse, error) {
    	rgClient := armresources.NewResourceGroupsClient(connection, subscriptionId)
    
    	param := armresources.ResourceGroup{
    		Location: to.StringPtr(location),
    	}
    
    	return rgClient.CreateOrUpdate(context.Background(), 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)
    	}
    
    	// Establish a connection with the Azure subscription.
    	conn := armcore.NewDefaultConnection(cred, &armcore.ConnectionOptions{
    		Logging: azcore.LogOptions{
    			IncludeBody: true,
    		},
    	})
    
    	// Call your function to create an Azure resource group.
    	resourceGroup, err := createResourceGroup(ctx, conn)
    	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)
    }
    

    Klíčové body:

    • subscriptionIdHodnota je načtena z ARM_SUBSCRIPTION_ID proměnné prostředí.
    • locationresourceGroupName Řetězcům a byly zadány hodnoty testu. V případě potřeby změňte tyto hodnoty na něco vhodného pro vaše prostředí.
  5. Spusťte příkaz Přejít do uklizený mod a vyčistěte závislosti v souboru na základě vašeho zdrojového kódu.

    go mod tidy
    
  6. Spusťte go run a sestavte a spusťte aplikaci.

    go run .
    

4. Ověřte výsledky

  1. Přejděte na Azure Portal.

  2. Přihlaste se a vyberte své předplatné Azure.

  3. V levé nabídce vyberte Skupiny prostředků.

  4. Nová skupina prostředků bude uvedená mezi skupinami prostředků vašeho předplatného Azure.

5. aktualizace skupiny prostředků

  1. Vraťte se k main.go souboru.

  2. Vložte následující kód hned nad main funkci.

    // Update the resource group by adding a tag to it.
    func updateResourceGroup(ctx context.Context, connection *armcore.Connection) (armresources.ResourceGroupResponse, error) {
        rgClient := armresources.NewResourceGroupsClient(connection, subscriptionId)
    
        update := armresources.ResourceGroupPatchable{
            Tags: map[string]*string{
                "new": to.StringPtr("tag"),
            },
        }
        return rgClient.Update(ctx, resourceGroupName, update, nil)
    }
    

6. seznam skupin prostředků předplatného Azure

  1. Vraťte se k main.go souboru.

  2. Vložte následující kód hned nad main funkci.

    // List all the resource groups of an Azure subscription.
    func listResourceGroups(ctx context.Context, connection *armcore.Connection) ([]*armresources.ResourceGroup, error) {
        rgClient := armresources.NewResourceGroupsClient(connection, subscriptionId)
    
        pager := rgClient.List(nil)
    
        var resourceGroups []*armresources.ResourceGroup
        for pager.NextPage(ctx) {
            resp := pager.PageResponse()
            if resp.ResourceGroupListResult != nil {
                resourceGroups = append(resourceGroups, resp.ResourceGroupListResult.Value...)
            }
        }
        return resourceGroups, pager.Err()
    }
    

7. odstranění skupiny prostředků

  1. Vraťte se k main.go souboru.

  2. Vložte následující kód hned nad main funkci.

    // Delete a resource group.
    func deleteResourceGroup(ctx context.Context, connection *armcore.Connection) error {
        rgClient := armresources.NewResourceGroupsClient(connection, subscriptionId)
    
        poller, err := rgClient.BeginDelete(ctx, resourceGroupName, nil)
        if err != nil {
            return err
        }
        if _, err := poller.PollUntilDone(ctx, interval); err != nil {
            return err
        }
        return nil
    }
    

8. aktualizace funkce main

V tomto článku jste viděli, jak vytvořit, aktualizovat a odstranit skupinu prostředků. Viděli jsme také, jak vypsat všechny skupiny prostředků předplatného Azure. Chcete-li spustit všechny tyto funkce postupně, nahraďte main funkci následujícím kódem:

func main() {

    // Create a credentials object.
    cred, err := azidentity.NewDefaultAzureCredential(nil)
    if err != nil {
        log.Fatalf("Authentication failure: %+v", err)
    }

    // Establish a connection with the Azure subscription.
    conn := armcore.NewDefaultConnection(cred, &armcore.ConnectionOptions{
        Logging: azcore.LogOptions{
            IncludeBody: true,
        },
    })

    // Call your function to create an Azure resource group.
    resourceGroup, err := createResourceGroup(ctx, conn)
    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(ctx, conn)
    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(ctx, conn)
    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(ctx, conn); err != nil {
        log.Fatalf("Deletion of resource group failed: %+v", err)
    }
    log.Printf("Resource group deleted")
}

Řešení potíží

Další kroky