Azure ARM Template and PowerShell Module

2019-09-15 07:19发布

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 ?

2条回答
霸刀☆藐视天下
2楼-- · 2019-09-15 07:49

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.

查看更多
甜甜的少女心
3楼-- · 2019-09-15 07:57

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'))]"
           ]
        },
查看更多
登录 后发表回答