Nasazení šablony Azure Resource Manageru v runbooku Automation PowerShellu
Pomocí šablony Azure Resource Manageru můžete napsat runbook PowerShellu automation, který nasadí prostředek Azure. Šablony umožňují používat Azure Automation k automatizaci nasazení prostředků Azure. Šablony Resource Manageru můžete udržovat v centrálním zabezpečeném umístění, jako je Azure Storage.
V tomto článku vytvoříme runbook PowerShellu, který k nasazení nového účtu Azure Storage používá šablonu Resource Manageru uloženou ve službě Azure Storage .
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.
Az modules:
Az.Accounts
,Az.ManagedServiceIdentity
,Az.Resources
aAz.Storage
. importováno na účet služby Automation. Další informace najdete v tématu Import modulů Az.Účet Azure Storage, do kterého se má šablona Resource Manageru uložit.
Azure PowerShell nainstalovaný na místním počítači. Informace o tom, jak získat Azure PowerShell, najdete v tématu Instalace modulu Azure PowerShell. Budete také potřebovat modul Az.ManagedServiceIdentity.
Az.ManagedServiceIdentity
je modul Preview a není nainstalovaný jako součást modulu Az. Pokud ho chcete nainstalovat, spusťteInstall-Module -Name Az.ManagedServiceIdentity
Přiřazení oprávnění ke spravovaným identitám
Přiřaďte oprávnění spravovaným identitám, abyste mohli provádět úlohy související 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íže uvedené proměnné a spusťte skript.
$resourceGroup = "resourceGroup" $automationAccount = "automationAccount" $storageAccount = "storageAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity" $storageTemplate = "path\storageTemplate.json" $runbookScript = "path\runbookScript.ps1"
Přiřaďte roli
reader
spravované identitě přiřazené systémem, aby se spustila rutinaGet-AzUserAssignedIdentity
.$SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"
Přiřaďte roli
Storage Account Contributor
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 Manageru, která nasadí nový účet Azure Storage. Vytvořte volaný storageTemplate.json
místní soubor a 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 Manageru v Azure Files
Pomocí PowerShellu vytvořte sdílenou složku Azure a nahrajte storageTemplate.json
ji. Pokyny k vytvoření sdílené složky a nahrání souboru na webu Azure Portal najdete v tématu Začínáme se službou Azure Files ve Windows.
Spuštěním následujících příkazů vytvořte sdílenou složku a nahrajte do této sdílené složky šablonu Resource Manageru.
# 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 PowerShell
Vytvořte skript PowerShellu storageTemplate.json
, který získá soubor ze služby Azure Storage a nasadí šablonu pro vytvoření nového účtu Azure Storage. Vytvořte volaný runbookScript.ps1
místní soubor a 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 účtu Azure Automation
Pomocí PowerShellu naimportujte runbook do svého účtu Automation a pak runbook publikujte. Informace o importu a publikování runbooků na webu Azure Portal najdete v tématu Správa runbooků ve službě Azure Automation.
Pokud chcete importovat runbookScript.ps1
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 na webu Azure Portal, najdete v tématu Spuštění runbooku ve službě 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 $job.Status
úlohy .
Runbook získá šablonu Resource Manageru a použije ji k nasazení nového účtu Azure Storage. Nový účet ú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 Manageru najdete v přehledu Azure Resource Manageru.
- Pokud chcete začít se službou Azure Storage, přečtěte si téma Úvod do Služby Azure Storage.
- Další užitečné runbooky Azure Automation najdete v tématu Použití runbooků a modulů ve službě Azure Automation.