Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt een Automation PowerShell-runbook schrijven waarmee een Azure-resource wordt geïmplementeerd met behulp van een Azure Resource Manager-sjabloon. Met sjablonen kunt u Azure Automation gebruiken om de implementatie van uw Azure-resources te automatiseren. U kunt uw Resource Manager-sjablonen onderhouden op een centrale, veilige locatie, zoals Azure Storage.
In dit artikel maken we een PowerShell-runbook dat gebruikmaakt van een Resource Manager-sjabloon die is opgeslagen in Azure Storage om een nieuw Azure Storage-account te implementeren.
Als je geen Azure-abonnement hebt, maak dan een gratis account aan voordat je begint.
Vereiste voorwaarden
Een Azure Automation-account met ten minste één door de gebruiker toegewezen beheerde identiteit. Zie Een door de gebruiker toegewezen beheerde identiteit gebruiken voor een Azure Automation-account voor meer informatie.
Az-modules:
Az.Accounts,Az.ManagedServiceIdentity,Az.ResourcesenAz.Storage. Geïmporteerd in het Automation-account. Zie Az-modules importeren voor meer informatie.Azure Storage-account waarin de Resource Manager-sjabloon moet worden opgeslagen.
Azure PowerShell geïnstalleerd op een lokale computer. Zie De Azure PowerShell-module installeren voor meer informatie over het verkrijgen van Azure PowerShell. U hebt ook module Az.ManagedServiceIdentity nodig.
Az.ManagedServiceIdentityis een preview-module en niet geïnstalleerd als onderdeel van de Az-module. Om het te installeren, voert uInstall-Module -Name Az.ManagedServiceIdentityuit.
Machtigingen toewijzen aan beheerde identiteiten
Wijs machtigingen toe aan de beheerde identiteiten om de opslaggerelateerde taken in het Runbook uit te voeren.
Meld u interactief aan bij Azure met behulp van de cmdlet Connect-AzAccount en volg de instructies.
# 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>Geef een geschikte waarde op voor de onderstaande variabelen en voer vervolgens het script uit.
$resourceGroup = "resourceGroup" $automationAccount = "automationAccount" $storageAccount = "storageAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity" $storageTemplate = "path\storageTemplate.json" $runbookScript = "path\runbookScript.ps1"Wijs de rol
readertoe aan de door het systeem toegewezen beheerde identiteit om de cmdletGet-AzUserAssignedIdentityuit te voeren.$SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Wijs de rol
Storage Account Contributortoe aan de door de gebruiker toegewezen beheerde identiteit voor acties voor het opslagaccount.$UAMI_ID = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity).PrincipalId New-AzRoleAssignment ` -ObjectId $UAMI_ID ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Storage Account Contributor"
De Resource Manager-sjabloon maken
In dit voorbeeld gebruikt u een Resource Manager-sjabloon waarmee een nieuw Azure Storage-account wordt geïmplementeerd. Maak een lokaal bestand met de naam storageTemplate.json en plak de volgende code:
{
"$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')]"
}
}
}
De Resource Manager-sjabloon opslaan in Azure Files
Gebruik PowerShell om een Azure-bestandsshare te maken en te uploaden storageTemplate.json. Zie Aan de slag met Azure Files in Windows voor instructies over het maken van een bestandsshare en het uploaden van een bestand in Azure Portal.
Voer de volgende opdrachten uit om een bestandsshare te maken en de Resource Manager-sjabloon naar die bestandsshare te uploaden.
# 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
Het PowerShell-runbookscript maken
Maak een PowerShell-script waarmee het storageTemplate.json bestand wordt opgehaald uit Azure Storage en de sjabloon wordt geïmplementeerd om een nieuw Azure Storage-account te maken. Maak een lokaal bestand met de naam runbookScript.ps1 en plak de volgende code:
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
Het runbook importeren en publiceren in uw Azure Automation-account
Gebruik PowerShell om het runbook te importeren in uw Automation-account en publiceer vervolgens het runbook. Zie Runbooks beheren in Azure Automation voor meer informatie over het importeren en publiceren van runbooks in Azure Portal.
Als u wilt importeren runbookScript.ps1 in uw Automation-account als een PowerShell-runbook, voert u de volgende PowerShell-opdrachten uit:
$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
Het runbook starten
Nu starten we het runbook door de cmdlet Start-AzAutomationRunbook aan te roepen. Voor meer informatie over het starten van een runbook in Azure Automation, zie Een runbook starten in Azure Automation.
Voer de volgende opdrachten uit in de PowerShell-console:
# 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
Nadat het runbook is uitgevoerd, kunt u de status ervan controleren door de eigenschapswaarde van het taakobject $job.Statusop te halen.
Het runbook haalt de Resource Manager-sjabloon op en gebruikt deze om een nieuw Azure Storage-account te implementeren. U kunt zien dat het nieuwe opslagaccount is gemaakt door de volgende opdracht uit te voeren:
Get-AzStorageAccount
Volgende stappen
- Zie het overzicht van Azure Resource Manager voor meer informatie over Resource Manager-sjablonen.
- Zie Inleiding tot Azure Storage om aan de slag te gaan met Azure Storage.
- Zie Runbooks en modules gebruiken in Azure Automation voor het vinden van andere nuttige Azure Automation-runbooks.