Azure ARM Template and PowerShell Module

2019-09-15 07:56发布

问题:

I Have a module published on Powrshell Gallery and I want to deploy this module with Azure ARM Template. And I did not find how!

Here my template :

   "resources": [
  {
     "name": "[variables('automationAccountName')]",
     "type": "Microsoft.Automation/automationAccounts",
     "apiVersion": "2015-10-31",
     "location": "[parameters('AutomationLocation')]",
     "tags": {
        "displayName": "Compte Automation"
     },
     "properties": {
        "sku": {
           "name": "Basic",
           "family": "B"
        }
     },
     "resources": [
        {
           "name": "[variables('powerShellGalleryModuleName')]",
           "type": "modules",
           "apiVersion": "2015-10-31",
           "location": "[parameters('AutomationLocation')]",
           "properties": {
              "isGlobal": false,
              "sizeInBytes": 0,
              "contentLink": {
                    "uri": "[variables('powerShellGalleryModule')]"
              }
           }
        }
     ]
  }
]

What should provide for variable powerShellGalleryModule ?

回答1:

I found a way to do via the PowerShellGallery

This way :

            {
           "name": "[variables('powerShellGalleryModule')]",
           "type": "modules",
           "apiVersion": "2015-10-31",
           "location": "[parameters('AutomationLocation')]",
           "properties": {
              "isGlobal": false,
              "sizeInBytes": 0,
              "contentLink": {
                 "uri": "[concat('https://www.powershellgallery.com/api/v2/package/', variables('powerShellGalleryModule'))]"
              }
           },
           "dependsOn": [
              "[resourceId('Microsoft.Automation/automationAccounts', variables('automationAccountName'))]"
           ]
        },


回答2:

We can import these integration modules into Azure Automation using any of the following methods:

1.Using the New-AzureRmAutomationModule cmdlet in the AzureRm.Automation module.
2.Using the Azure portal and navigating to the Assets within automation account.
3.Using Azure Resource Manager (ARM) template

We can use ARM template to deploy our custom integration modules. Here is an example template:

"$schema": "http://schemas.microsoft.org/azure/deploymentTemplate?api-version=2015-01-01-preview#",
      "contentVersion": "1.0",
      "parameters": {
        "automationAccountType": {
          "type": "string",
          "allowedValues": [
            "New",
            "Existing"
          ]
        },
        "automationAccountName": {
          "type": "string"
        },
        "moduleName": {
          "type": "string"
        },
        "moduleUri":{
          "type": "string"  
        }
      },
      "variables": {
        "templatelink": "[concat('https://devopsgallerystorage.blob.core.windows.net/azureautomationpackages/templates%5Corigtemplates%5C', parameters('automationAccountType'), 'AccountTemplate.json')]"
      },
      "resources": [
        {
          "apiVersion": "2015-01-01",
          "name": "nestedTemplate",
          "type": "Microsoft.Resources/deployments",
          "properties": {
            "mode": "incremental",
            "templateLink": {
              "uri": "[variables('templatelink')]",
              "contentVersion": "1.0"
            },
            "parameters": {
              "accountName": {
                "value": "[parameters('automationAccountName')]"
              },
              "accountLocation": {
                "value": "[resourceGroup().Location]"
              },
              "moduleName": {
                "value": "[parameters('moduleName')]"
              },
              "moduleUri": {
                "value": "[parameters('moduleUri')]"
              }
            }
          }
        }
      ]
    }

More information about deploy custom Azure Automation Integration module using ARM template, please refer to this link writed by Ravikanth.