Шаблон Azure ARM для Runbook с файлом Powershell из Azure Git Repo - PullRequest
0 голосов
/ 06 ноября 2019

Мы пытаемся развернуть Runbook с Powershell, который периодически запрашивает Log Analytics. Он работает на портале, и сейчас мы пытаемся создать шаблон ARM для будущих развертываний в других средах. У нас есть шаблон ARM (json) и файл PS1 в том же репозитории Git для Azure Devops, и мы даже пытались жестко запрограммировать путь к файлу PS1 в шаблоне, но он не работает. Может кто-нибудь, пожалуйста, помогите нам здесь в том, что мы делаем неправильно. Ниже приведен шаблон ARM: -

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "automationAccountName": {
        "type": "string",
        "defaultValue": "Automation-XXX-INFRA-MONITORING",
        "metadata": {
            "description": "Automation Account"
        }
    },
    "automationRegion": {
        "defaultValue": "eastus2",
        "type": "string",
        "allowedValues": [
            "westeurope",
            "southeastasia",
            "eastus2",
            "southcentralus",
            "japaneast",
            "northeurope",
            "canadacentral",
            "australiasoutheast",
            "centralindia",
            "westcentralus"
        ],
        "metadata": {
            "description": "Specify the region for your automation account"
        }
    },
    "_artifactsLocation": {
        "type": "string",
        "defaultValue": "https://ABCD.visualstudio.com/3Pager/_git/Infrastructure?path=%2FAzure.Infra%2FAppInsights%2FMonthOverMonthTrendAnalysisReport.ps1&version=GBmaster",
        "metadata": {
            "description": "URI to artifacts location"
        }
    },
    "_artifactsLocation1": {
        "type": "string",
        "defaultValue": "https://ABCD.visualstudio.com/3Pager/_git/Infrastructure?path=%2FAzure.Infra%2FAppInsights%2FMonthOverMonthTrendAnalysisReport.ps1&version=GBmaster",
        "metadata": {
            "description": "URI to artifacts location"
        }
    }
},
"variables": {
    "asrScripts": {
        "runbooks": [
            {
                "name": "Test_Runbook",
                "url": "[parameters('_artifactsLocation')]",
                "version": "1.0.0.0",
                "type": "PowerShell",
                "description": "Runbook for month over month trend analysis report"
            }
        ]
      }
},
 "resources": [

    {
        "apiVersion": "2015-10-31",
        "type": "Microsoft.Automation/automationAccounts/runbooks",
        "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]",
        "location": "[parameters('automationRegion')]", 
        "copy": {
            "name": "runbooksLoop",
            "count": "[length(variables('asrScripts').runbooks)]"
        },
        "properties": {
            "description": "[variables('asrScripts').runbooks[copyIndex()].description]",
            "runbookType": "[variables('asrScripts').runbooks[copyIndex()].type]",
            "logProgress": false,
            "logVerbose": true,
             "publishContentLink": { 
                 "uri":"[parameters('_artifactsLocation1')]",
                 "version": "[variables('asrScripts').runbooks[copyIndex()].version]"                  } 

        }
    }
],
"outputs": {}

}

1 Ответ

0 голосов
/ 13 ноября 2019

Вы отправляете URI в ARM, сообщая ему, где найти модули Runbook. Когда создается тип ресурса AutomationAccount / runbooks, он вызывает GET для publishContentLink.url, чтобы получить содержимое из URI. Если Azure не может получить доступ к этому URI (предположительно, ваш URI visualstudio.com не является общедоступным), он не сможет получить доступ к содержимому книги запусков, и развертывание не будет выполнено.

Решение состоит в том, чтобы убедиться, чтоURI publishContentLink является чем-то доступным для службы автоматизации Azure. Это можно сделать несколькими способами:

  1. Поместить содержимое в общедоступный URI, например Github, или в общедоступный контейнер хранилища BLOB-объектов.
  2. Создать токен SAS для содержимого. https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-tutorial-secure-artifacts показывает пример того, как сделать это с хранилищем Azure, или https://xebia.com/blog/setting-up-vsts-with-arm-templates/ для того, чтобы сделать это с VSTS.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...