Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu použijete sadu Azure SDK for Go k nasazení šablony Azure Resource Manageru.
Azure Resource Manager je služba nasazování a správy pro Azure. Umožňuje vytvářet, aktualizovat a odstraňovat prostředky ve vašem účtu Azure. Šablony Azure Resource Manageru deklarativně popisují vaši infrastrukturu jako kód v dokumentech JSON.
Na konci tohoto kurzu napíšete a nasadíte šablonu Azure Resource Manageru pomocí Go.
Požadavky
- Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Vytvoření nového modulu
V této části vytvoříte nový modul Go a nainstalujete požadované balíčky Sady Azure SDK. Pak vytvoříte hlavní soubor aplikace a přidáte kód, který nasadí šablonu Azure Resource Manageru.
Vytvořte nový adresář s názvem
deployARM-how-to. Pak přejděte do daného adresáře.mkdir deployARM-how-to cd deployARM-how-toSpuštěním
go mod initpříkazu vytvořtego.modsoubory ago.sumsoubory.go mod init deployARM-how-toSada Azure SDK for Go obsahuje několik balíčků pro práci s Azure. Pro účely tohoto kurzu potřebujete balíčky
azcore/to,azidentityaarmresources.Spuštěním
go getpříkazu stáhněte tyto balíčky: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/armresourcesVytvořte soubor s názvem
main.go.touch main.goOtevřete
main.gov editoru a přidejte následující kód, který se ověřuje v Azure, vytvoří skupinu prostředků a nasadí šablonu Azure Resource Manageru: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) }
Vytvoření šablony Azure Resource Manageru
V adresáři
deployARM-how-tovytvořte další soubor s názvemtemplate.json.template.jsonOtevřete soubor a přidejte následující kód šablony Azure Resource Manageru, který vytvoří účet úložiště Azure:{ "$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": {} }Nahraďte
<StorageAccountName>a<StorageAccountDisplayName>platnou hodnotou názvu úložiště.
Další informace o šablonách Azure Resource Manageru najdete v přehledu šablon Azure Resource Manageru.
Přihlásit se do Azure
Kód v tomto článku používá typ DefaultAzureCredential z modulu Azure Identity pro Go k ověření v Azure.
DefaultAzureCredential podporuje mnoho typů přihlašovacích údajů pro ověřování v Azure pomocí OAuth s ID Microsoft Entra. V tomto článku použijete přihlašovací údaje uživatele, pomocí kterého se přihlásíte k Azure CLI.
Pokud jste to ještě neudělali, přihlaste se k Azure CLI:
az login
Pokud je k vašemu účtu přidruženo více předplatných, pomocí příkazu az account list získejte seznam těchto předplatných. K nastavení aktivního předplatného použijte příkaz az account set . Nastavením aktivního předplatného se ujistěte, že všechny příkazy rozhraní příkazového řádku, které spustíte ve zbývající části tohoto článku, běží proti zamýšlenému předplatnému.
Poznámka:
Při místním spuštění DefaultAzureCredential také podporuje přihlašovací údaje Azure Developer CLI (AZD) nebo služební principál Azure, který nakonfigurujete v proměnných prostředí. Další informace o všech podporovaných typech přihlašovacích údajů najdete v tématu Ověřování Azure pomocí modulu Identita Azure pro Go.
Spuštění aplikace
Před nasazením šablony je potřeba definovat ID předplatného Azure jako proměnnou prostředí.
Id předplatného získáte spuštěním následujícího příkazu az account show .
az account show --query id --output tsvNastavte proměnnou
AZURE_SUBSCRIPTION_IDprostředí s ID předplatného. Nahraďte<AzureSubscriptionId>svou ID předplatného.export AZURE_SUBSCRIPTION_ID=<AzureSubscriptionId>Spuštěním
go runpříkazu nasaďte šablonu:go run main.go
Troubleshoot
Pokud se nasazení účtu úložiště nezdaří, ověřte, že jste použili platnou hodnotu názvu úložiště. Názvy účtů úložiště musí mít délku 3 až 24 znaků a můžou obsahovat jenom malá písmena a číslice.
Pokud program vrátí chybu související s ověřováním nebo autorizací, zkontrolujte následující položky:
Pokud chyba začíná časovým razítkem a následujícím textem: "Nepodařilo se získat odpověď: DefaultAzureCredential: Nepodařilo se získat token.", ujistěte se, že jste se přihlásili k Azure CLI podle předchozích pokynů.
Pokud se jedná o chybu autorizace nebo chybu zakázána (stavový kód 401 nebo 403), ujistěte se, že je váš uživatelský účet v roli Azure, která mu dává práva k vytváření skupin prostředků a přidávání prostředků v rámci vašeho předplatného. Mezi příklady patří předdefinované rolePřispěvatel nebo Vlastník Azure. Informace o přiřazování rolí Azure uživateli najdete v tématu Přiřazení rolí Azure pomocí Azure CLI.
Podrobnější pokyny k řešení potíží najdete v tématu Řešení potíží s ověřováním identit Azure.
Ověření prostředků v Azure
K ověření úspěšného vytvoření prostředků v Azure můžete použít několik příkazů Azure CLI. Příklady jsou následující příkazy.
Pokud chcete ověřit, že skupina prostředků existuje, spusťte příkaz az group exists .
az group exists --name deployARM-how-to
Prostředky ve skupině můžete vypsat pomocí příkazu az resource list .
az resource list --resource-group deployARM-how-to
Výsledky nasazení ("outputResources") a vlastnosti můžete prozkoumat pomocí příkazu az deployment group show.
az deployment group show -g deployARM-how-to -n deployARM-how-to
Vyčistěte zdroje
Za prostředky v Azure se můžou účtovat průběžné poplatky. Nezapomeňte vyčistit prostředky, které jste vytvořili v tomto článku.
Nasazení prázdné šablony v úplném režimu vymaže všechny prostředky ve skupině prostředků. Je to elegantní způsob, jak vyčistit prostředky bez odstranění samotné skupiny prostředků.
Vytvořte novou prázdnou šablonu s názvem
empty-template.json.Otevřete
empty-template.jsonv editoru a přidejte následující kód:{ "$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [], "outputs": {} }Otevřete soubor
main.go.Aktualizujte konstantní hodnotu
templateFilenaempty-template.json.const ( resourceGroupName = "deployARM-how-to" resourceGroupLocation = "eastus" deploymentName = "deployARM-how-to" templateFile = "empty-template.json" )Změňte čas nasazení z přírůstkového na dokončení změnou vlastností režimu nasazení na
DeploymentModeComplete. Další informace o režimech nasazení najdete v tématu režimy nasazení Azure Resource Manageru.deploy, err = deploymentsClient.BeginCreateOrUpdate( ctx, resourceGroupName, deploymentName, armresources.Deployment{ Properties: &armresources.DeploymentProperties{ Template: template, Mode: to.Ptr(armresources.DeploymentModeComplete), //Deployment Mode is here }, }, nil, )Spuštěním
go runpříkazu nasaďte prázdnou šablonu a odstraňte účet úložiště, který jste vytvořili dříve.go run main.go
Místo nasazení můžete odstranit skupinu prostředků a všechny její prostředky spuštěním následujícího příkazu Azure CLI:
az group delete --resource-group deployARM-how-to