Sdílet prostřednictvím


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

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

1. Nastavení prostředků Azure

K dokončení kroků v tomto článku potřebujete následující prostředky a identifikátory Azure:

  • Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

  • Získejte ID předplatného Azure.

  • Získejte ID tenanta Microsoft Entra.

  • Vytvořte instanční objekt. Poznamenejte si ID aplikace (klienta) instančního objektu a tajný klíč. Nezapomeňte také postupovat podle pokynů k přiřazení role Přispěvatel ve vašem předplatném k aplikaci. Role Přispěvatel je privilegovaná role správce, která uděluje oprávnění ke správě všech prostředků ve vašem předplatném.

Než přejdete k další části, ujistěte se, že jste si poznamenali SVÉ ID předplatného (GUID), ID tenanta (GUID) a ID klienta/aplikace (GUID) a tajný klíč vašeho instančního objektu.

2. Nastavení proměnných prostředí ověřování

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

Nastavte následující proměnné prostředí. Zástupné symboly nahraďte příslušný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>"

3. Vytvoření skupiny prostředků

  1. Vytvořte adresář, ve kterém chcete otestovat a spustit ukázkový kód Go a nastavit ho jako aktuální adresář.

  2. Spuštěním příkazu go mod init vytvořte modul v aktuálním adresáři.

    go mod init <module_path>
    

    Klíčové body:

    • Parametr <module_path> je obecně umístění v úložišti GitHubu , například github.com/<your_github_account_name>/<directory>.
    • Když vytváříte aplikaci příkazového řádku jako test a aplikaci nepublikujete, <module_path> nemusí odkazovat na skutečné umístění.
  3. Spuštěním přejděte ke stažení, sestavení a instalaci potřebných modulů Sady Azure SDK for Go.

    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
    

    Důležité

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

  4. Vytvořte soubor s názvem main.go a přidejte následující kód. Každý oddíl kódu je okomentován a vysvětluje jeho účel.

    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)
    }
    

    Klíčové body:

    • Hodnota subscriptionId se načte z AZURE_SUBSCRIPTION_ID proměnné prostředí.
    • Řetězce location jsou resourceGroupName nastavené na testovací hodnoty. V případě potřeby změňte tyto hodnoty na něco vhodného pro vaše umístění a předplatné.
  5. Spuštěním příkazu Go mod tidy vyčistíte závislosti v souboru na základě zdrojového go.mod kódu.

    go mod tidy
    
  6. Spusťte go run sestavení a spuštění aplikace.

    go run .
    

4. Ověření výsledků

  1. Přejděte na web 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ů je uvedená mezi skupinami prostředků vašeho předplatného Azure.

5. Aktualizace skupiny prostředků

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

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

    // 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)
    }
    

Po přidání kódu přejděte k další části. Kód spustíte v další části.

6. Výpis skupin prostředků předplatného Azure

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

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

    // 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
    }
    

Po přidání kódu přejděte k další části. Kód spustíte v další části.

7. Odstranění skupiny prostředků

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

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

    // 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
    }
    

Po přidání kódu přejděte k další části. Kód spustíte v další části.

8. Aktualizace hlavní funkce

V předchozích částech jste přidali kód pro main.go vytvoření, aktualizaci a odstranění skupiny prostředků. Přidali jste také kód pro výpis všech skupin prostředků v předplatném Azure. Chcete-li spouštět všechny tyto funkce postupně:

  1. Nahraďte main.gomain 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)
        }
    
        // 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. Spusťte kód a sledujte výstup.

    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
    

    Poznámka:

    Odstranění skupiny prostředků může trvat několik minut.

Řešení problému

Další kroky