Megosztás a következőn keresztül:


Erőforráscsoportok kezelése a Go-hoz készült Azure SDK-val

Ebből a cikkből megtudhatja, hogyan hozhat létre és kezelhet erőforráscsoportokat az Azure SDK for Go felügyeleti kódtárával.

1. Azure-erőforrások beállítása

A cikk lépéseinek elvégzéséhez a következő Azure-erőforrásokra és -azonosítókra van szüksége:

Mielőtt továbblépne a következő szakaszra, jegyezte fel az előfizetés azonosítóját (Guid), a bérlőazonosítót (Guid), valamint a szolgáltatásnév ügyfél-/alkalmazásazonosítóját (Guid) és titkos kódját.

2. Hitelesítési környezeti változók beállítása

Az Azure-hitelesítési adatok használatával állítsa be a megfelelő környezeti változókat, hogy a kód hitelesíthető legyen az Azure-ban.

Állítsa be a következő környezeti változókat. Cserélje le a helyőrzőket az előző szakasz megfelelő értékeire.

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. Erőforráscsoport létrehozása

  1. Hozzon létre egy könyvtárat, amelyben tesztelheti és futtathatja a Go-mintakódot, és az aktuális könyvtárvá teheti.

  2. Futtassa a go mod init parancsot egy modul létrehozásához az aktuális könyvtárban.

    go mod init <module_path>
    

    Főbb pontok:

    • A <module_path> paraméter általában egy GitHub-adattár helye – például github.com/<your_github_account_name>/<directory>.
    • Amikor tesztként hoz létre parancssori alkalmazást, és nem teszi közzé az alkalmazást, <module_path> nem kell tényleges helyre hivatkoznia.
  3. Futtassa a go-hoz szükséges Azure SDK-modulok letöltését, összeállítását és telepítését.

    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
    

    Fontos

    Az Azure-erőforrás-kezelési kódtárak aktuális verziójának csomagjai a következő helyen sdk/**/arm**találhatók: . A felügyeleti kódtárak előző verziójának csomagjai a következő alatt /servicestalálhatók: . Ha a régebbi verziót használja, tekintse meg az Azure SDK for Go migration guide-ot.

  4. Hozzon létre egy elnevezett main.go fájlt, és adja hozzá a következő kódot. A kód minden szakasza megjegyzést fűz a kód céljának magyarázatához.

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

    Főbb pontok:

    • A subscriptionId rendszer lekéri az értéket a AZURE_SUBSCRIPTION_ID környezeti változóból.
    • A location sztringek értékeket resourceGroupName tesztelnek. Szükség esetén módosítsa ezeket az értékeket a tartózkodási helyének és előfizetésének megfelelő értékre.
  5. Futtassa a go mod tidy parancsot a fájl függőségeinek go.mod a forráskód alapján történő törléséhez.

    go mod tidy
    
  6. Futtassa go run az alkalmazás létrehozásához és futtatásához.

    go run .
    

4. Az eredmények ellenőrzése

  1. Keresse fel az Azure Portalt.

  2. Jelentkezzen be, és válassza ki az Azure-előfizetését.

  3. A bal oldali menüben válassza az Erőforráscsoportok elemet.

  4. Az új erőforráscsoport szerepel az Azure-előfizetés erőforráscsoportjai között.

5. Erőforráscsoport frissítése

  1. Térjen vissza a fájlhoz main.go .

  2. Szúrja be a következő kódot a main függvény fölé.

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

A kód hozzáadása után lépjen tovább a következő szakaszra. A kódot egy későbbi szakaszban futtathatja.

6. Azure-előfizetés erőforráscsoportjainak listázása

  1. Térjen vissza a fájlhoz main.go .

  2. Szúrja be a következő kódot a main függvény fölé.

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

A kód hozzáadása után lépjen tovább a következő szakaszra. A kódot egy későbbi szakaszban futtathatja.

7. Erőforráscsoport törlése

  1. Térjen vissza a fájlhoz main.go .

  2. Szúrja be a következő kódot a main függvény fölé.

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

A kód hozzáadása után lépjen tovább a következő szakaszra. A kódot egy későbbi szakaszban futtathatja.

8. A fő függvény frissítése

Az előző szakaszokban kódot main.go adott hozzá egy erőforráscsoport létrehozásához, frissítéséhez és törléséhez. Emellett kódot is hozzáadott az Azure-előfizetés összes erőforráscsoportjának listázásához. Az összes függvény egymás utáni futtatásához:

  1. Írja main.gobe a függvényt a main következő kódra:

    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. Futtassa a kódot, és figyelje meg a kimenetet.

    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
    

    Feljegyzés

    Az erőforráscsoport törlése eltarthat néhány percig.

Hibaelhárítás

  • Ellenőrizze a Stack Overflow szolgáltatásban közzétett korábbi kérdéseket, vagy tegyen fel új kérdéseket a címkék és Go a Azure címkék használatával.
  • A felmerülő hibák esetén küldjön egy GitHub-problémát

Következő lépések