Azure Resource Manager-sablon üzembe helyezése Automation PowerShell-runbookban
Megírhat egy Automation PowerShell-runbookot , amely Azure-erőforrást helyez üzembe egy Azure Resource Manager-sablon használatával. A sablonok lehetővé teszik az Azure Automation használatát az Azure-erőforrások üzembe helyezésének automatizálásához. A Resource Manager-sablonokat egy központi, biztonságos helyen, például az Azure Storage-ban tarthatja fenn.
Ebben a cikkben létrehozunk egy PowerShell-runbookot, amely egy Azure Storage-ban tárolt Resource Manager-sablont használ egy új Azure Storage-fiók üzembe helyezéséhez.
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Előfeltételek
Azure Automation-fiók, amely legalább egy, felhasználó által hozzárendelt felügyelt identitással rendelkezik. További információ: Felhasználó által hozzárendelt felügyelt identitás használata Azure Automation-fiókhoz.
Az modulok:
Az.Accounts
,Az.ManagedServiceIdentity
,Az.Resources
ésAz.Storage
. az Automation-fiókba importálva. További információ: Az modulok importálása.Azure Storage-fiók , amelyben a Resource Manager-sablont tárolni szeretné.
Helyi gépen telepített Azure PowerShell. Az Azure PowerShell beszerzéséről további információt az Azure PowerShell-modul telepítésével kapcsolatban talál. Szüksége lesz az Az.ManagedServiceIdentity modulra is.
Az.ManagedServiceIdentity
egy előzetes verziójú modul, és nem az Az modul részeként van telepítve. A telepítéshez futtassa aInstall-Module -Name Az.ManagedServiceIdentity
Engedélyek hozzárendelése felügyelt identitásokhoz
Engedélyek hozzárendelése a felügyelt identitásokhoz a tárterülettel kapcsolatos feladatok elvégzéséhez a Runbookban.
Jelentkezzen be interaktívan az Azure-ba az Csatlakozás-AzAccount parancsmaggal, és kövesse az utasításokat.
# 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>
Adjon meg egy megfelelő értéket az alábbi változókhoz, majd hajtsa végre a szkriptet.
$resourceGroup = "resourceGroup" $automationAccount = "automationAccount" $storageAccount = "storageAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity" $storageTemplate = "path\storageTemplate.json" $runbookScript = "path\runbookScript.ps1"
Rendelje hozzá a szerepkört
reader
a rendszer által hozzárendelt felügyelt identitáshoz a parancsmagGet-AzUserAssignedIdentity
végrehajtásához.$SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"
Rendelje hozzá a szerepkört
Storage Account Contributor
a felhasználó által hozzárendelt felügyelt identitáshoz a tárfiókon végzett műveletekhez.$UAMI_ID = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity).PrincipalId New-AzRoleAssignment ` -ObjectId $UAMI_ID ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Storage Account Contributor"
A Resource Manager-sablon létrehozása
Ebben a példában egy Új Azure Storage-fiókot üzembe helyező Resource Manager-sablont használ. Hozzon létre egy helyi fájlt, storageTemplate.json
és illessze be a következő kódot:
{
"$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')]"
}
}
}
A Resource Manager-sablon mentése az Azure Filesban
Azure-fájlmegosztás létrehozása és feltöltése storageTemplate.json
a PowerShell használatával. A fájlmegosztások létrehozásával és a fájlok Azure Portalon való feltöltésével kapcsolatos útmutatásért tekintse meg az Azure Files használatának első lépéseit a Windowson.
Futtassa az alábbi parancsokat egy fájlmegosztás létrehozásához, és töltse fel a Resource Manager-sablont a fájlmegosztásba.
# 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
A PowerShell-runbook szkriptjének létrehozása
Hozzon létre egy PowerShell-szkriptet, amely lekéri a fájlt az storageTemplate.json
Azure Storage-ból, és üzembe helyezi a sablont egy új Azure Storage-fiók létrehozásához. Hozzon létre egy helyi fájlt, runbookScript.ps1
és illessze be a következő kódot:
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
A runbook importálása és közzététele az Azure Automation-fiókban
A PowerShell használatával importálhatja a runbookot az Automation-fiókjába, majd közzéteheti a runbookot. A runbookok Azure Portalon történő importálásával és közzétételével kapcsolatos információkért lásd : Runbookok kezelése az Azure Automationben.
Az Automation-fiókba PowerShell-runbookként való importáláshoz runbookScript.ps1
futtassa a következő PowerShell-parancsokat:
$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
A runbook indítása
Most elindítjuk a runbookot a Start-AzAutomationRunbook parancsmag meghívásával. A runbookok Azure Portalon való elindításával kapcsolatos információkért lásd : Runbook indítása az Azure Automationben.
Futtassa a következő parancsokat a PowerShell-konzolon:
# 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
A runbook futtatása után a feladatobjektum $job.Status
tulajdonságértékének beolvasásával ellenőrizheti annak állapotát.
A runbook lekéri a Resource Manager-sablont, és egy új Azure Storage-fiók üzembe helyezésére használja. Az új tárfiókot az alábbi parancs futtatásával hozhatja létre:
Get-AzStorageAccount
Következő lépések
- A Resource Manager-sablonokról az Azure Resource Manager áttekintésében olvashat bővebben.
- Az Azure Storage használatának megkezdéséhez tekintse meg az Azure Storage bemutatása című témakört.
- További hasznos Azure Automation-forgatókönyvek kereséséhez lásd : Runbookok és modulok használata az Azure Automationben.