0
votes

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

Here is 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 be provided for the variable powerShellGalleryModule?

2

2 Answers

3
votes

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'))]"
           ]
        },
1
votes

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.