Nasazení šablony Azure Resource Manager v runbooku PowerShellu automation
Můžete napsat runbook PowerShellu pro automatizaci, který nasadí prostředek Azure pomocí Azure Resource Manager šablony. Šablony umožňují použít Azure Automation k automatizaci nasazení prostředků Azure. Své šablony můžete Resource Manager v centrálním zabezpečeném umístění, například v Azure Storage.
V tomto článku vytvoříme powershellový runbook, který používá šablonu Resource Manager uloženou v Azure Storage k nasazení nového Azure Storage účtu.
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Požadavky
Účet Azure Automation s alespoň jednou spravovanou identitou přiřazenou uživatelem. Další informace najdete v tématu Použití spravované identity přiřazené uživatelem pro účet Azure Automation .
Moduly Az:
Az.Accounts,Az.ManagedServiceIdentity, aAz.ResourcesAz.Storage. importován do účtu Automation. Další informace najdete v tématu Import modulů Az.Azure Storage, do kterého se má šablona Resource Manager uložit.
Azure PowerShell nainstalovaná na místním počítači. Informace o tom, jak Azure PowerShell, najdete v tématu Instalace modulu Azure PowerShell. Budete také potřebovat modul Az.ManagedServiceIdentity.
Az.ManagedServiceIdentityje modul ve verzi Preview, který se nenainstaluje jako součást modulu Az. Pokud ho chcete nainstalovat, spusťte příkaz .Install-Module -Name Az.ManagedServiceIdentity
Přiřazení oprávnění spravovaným identitám
Přiřaďte spravovaným identitám oprávnění k provádění úloh souvisejících s úložištěm v runbooku.
Přihlaste se k Azure interaktivně pomocí rutiny Připojení-AzAccount a postupujte podle pokynů.
# Sign in to your Azure subscription $sub = Get-AzSubscription -ErrorAction SilentlyContinue if(-not($sub)) { Connect-AzAccount } # If you have multiple subscriptions, set the one to use # Select-AzSubscription -SubscriptionId <SUBSCRIPTIONID>Zadejte odpovídající hodnotu pro následující proměnné a pak spusťte skript.
$resourceGroup = "resourceGroup" $automationAccount = "automationAccount" $storageAccount = "storageAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity" $storageTemplate = "path\storageTemplate.json" $runbookScript = "path\runbookScript.ps1"Přiřaďte
readerroli spravované identitě přiřazené systémem, která spustí rutinuGet-AzUserAssignedIdentity.$SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Přiřaďte
Storage Account Contributorroli spravované identitě přiřazené uživatelem pro akce s účtem úložiště.$UAMI_ID = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity).PrincipalId New-AzRoleAssignment ` -ObjectId $UAMI_ID ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Storage Account Contributor"
Vytvoření šablony Resource Manageru
V tomto příkladu použijete šablonu Resource Manager, která nasadí nový Azure Storage účet. Vytvořte místní soubor s názvem a storageTemplate.json vložte následující kód:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"apiVersion": "2018-02-01",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "Storage",
"properties": {
}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
Uložení šablony Resource Manager do Azure Files
Pomocí PowerShellu vytvořte sdílená složku Azure a nahrajte storageTemplate.json . Pokyny k vytvoření sdílené složky a nahrání souboru v Azure Portal najdete v tématu Začínáme s Azure Files na Windows.
Spuštěním následujících příkazů vytvořte sdílené složky a nahrajte Resource Manager do této sdílené složky.
# Get the access key for your storage account
$key = Get-AzStorageAccountKey -ResourceGroupName $resourceGroup -Name $storageAccount
# Create an Azure Storage context using the first access key
$context = New-AzStorageContext -StorageAccountName $storageAccount -StorageAccountKey $key[0].value
# Create a file share named 'resource-templates' in your Azure Storage account
$fileShare = New-AzStorageShare -Name 'resource-templates' -Context $context
# Add the storageTemplate.json file to the new file share
Set-AzStorageFileContent -ShareName $fileShare.Name -Context $context -Source $storageTemplate
Vytvoření skriptu runbooku PowerShellu
Vytvořte skript PowerShellu, který získá soubor z Azure Storage a nasadí šablonu pro vytvoření nového storageTemplate.json Azure Storage účtu. Vytvořte místní soubor s názvem a runbookScript.ps1 vložte následující kód:
param (
[Parameter(Mandatory=$true)]
[string]
$resourceGroup,
[Parameter(Mandatory=$true)]
[string]
$storageAccount,
[Parameter(Mandatory=$true)]
[string]
$storageAccountKey,
[Parameter(Mandatory=$true)]
[string]
$storageFileName,
[Parameter(Mandatory=$true)]
[string]
$userAssignedManagedIdentity
)
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with user-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context
$identity = Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup `
-Name $userAssignedManagedIdentity `
-DefaultProfile $AzureContext
$AzureContext = (Connect-AzAccount -Identity -AccountId $identity.ClientId).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription `
-DefaultProfile $AzureContext
#Set the parameter values for the Resource Manager template
$Parameters = @{
"storageAccountType"="Standard_LRS"
}
# Create a new context
$Context = New-AzStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageAccountKey
Get-AzStorageFileContent `
-ShareName 'resource-templates' `
-Context $Context `
-path 'storageTemplate.json' `
-Destination 'C:\Temp' -Force
$TemplateFile = Join-Path -Path 'C:\Temp' -ChildPath $storageFileName
# Deploy the storage account
New-AzResourceGroupDeployment `
-ResourceGroupName $resourceGroup `
-TemplateFile $TemplateFile `
-TemplateParameterObject $Parameters
Import a publikování runbooku do Azure Automation účtu
Pomocí PowerShellu naimportujte runbook do svého účtu Automation a pak runbook publikujte. Informace o importu a publikování runbooků v Azure Portal najdete v tématu Správa runbooků v Azure Automation.
Pokud chcete runbookScript.ps1 importovat do účtu Automation jako runbook PowerShellu, spusťte následující příkazy PowerShellu:
$importParams = @{
Path = $runbookScript
ResourceGroupName = $resourceGroup
AutomationAccountName = $automationAccount
Type = "PowerShell"
}
Import-AzAutomationRunbook @importParams
# Publish the runbook
$publishParams = @{
ResourceGroupName = $resourceGroup
AutomationAccountName = $automationAccount
Name = "runbookScript"
}
Publish-AzAutomationRunbook @publishParams
Spuštění runbooku
Teď runbook spustíme voláním rutiny Start-AzAutomationRunbook. Informace o tom, jak spustit runbook v nástroji Azure Portal naleznete v tématu Starting a Runbook in Azure Automation.
V konzole PowerShellu spusťte následující příkazy:
# Set up the parameters for the runbook
$runbookParams = @{
resourceGroup = $resourceGroup
storageAccount = $storageAccount
storageAccountKey = $key[0].Value # We got this key earlier
storageFileName = "storageTemplate.json"
userAssignedManagedIdentity = $userAssignedManagedIdentity
}
# Set up parameters for the Start-AzAutomationRunbook cmdlet
$startParams = @{
resourceGroup = $resourceGroup
AutomationAccountName = $automationAccount
Name = "runbookScript"
Parameters = $runbookParams
}
# Start the runbook
$job = Start-AzAutomationRunbook @startParams
Po spuštění runbooku můžete zkontrolovat jeho stav načtením hodnoty vlastnosti objektu úlohy $job.Status .
Runbook získá šablonu Resource Manager a použije ji k nasazení nového Azure Storage účtu. Vytvoření nového účtu úložiště můžete zobrazit spuštěním následujícího příkazu:
Get-AzStorageAccount
Další kroky
- Další informace o šablonách Resource Manager najdete v Azure Resource Manager článku.
- Pokud chcete začít s Azure Storage, podívejte se na úvod do Azure Storage.
- Další užitečné informace o Azure Automation najdete v tématu Použití runbookůa modulů v Azure Automation .