Megosztás a következőn keresztül:


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

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.

  1. 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>
    
  2. 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"
    
  3. Rendelje hozzá a szerepkört reader a rendszer által hozzárendelt felügyelt identitáshoz a parancsmag Get-AzUserAssignedIdentityvégrehajtásához.

    $SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId
    New-AzRoleAssignment `
        -ObjectId $SAMI `
        -ResourceGroupName $resourceGroup `
        -RoleDefinitionName "Reader"
    
  4. 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.jsona 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.Statustulajdonsá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