Как получить параметры фабрики данных Azure в файл параметров шаблона ARM (ARMTemplateParametersForFactory.json) после публикации - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать конвейер выпуска Azure DevOps для фабрики данных Azure.

Я следовал довольно загадочному руководству от Microsoft (https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment) относительно добавления дополнительных параметров в шаблон ARM, которыйгенерируется при публикации (https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment#use-custom-parameters-with-the-resource-manager-template)

Создается файл arm-template-parameters-definition.json в маршруте главной ветви.Когда я делаю публикацию, ARMTemplateParametersForFactory.json в ветви adf_publish остается полностью неизменным.Я перепробовал множество конфигураций.

Я определил некоторые параметры конвейера в фабрике данных и хочу, чтобы их можно было настраивать в моем конвейере развертывания.Кажется очевидным требованием ко мне.

Я пропустил что-то фундаментальное?Помогите пожалуйста!

JSON выглядит следующим образом:

{
    "Microsoft.DataFactory/factories/pipelines": {
        "*": {
            "properties": {
                "parameters": {
                        "*": "="                
                }
            }
        }
    },
    "Microsoft.DataFactory/factories/integrationRuntimes": {
        "*": "="
    },
    "Microsoft.DataFactory/factories/triggers": {},
    "Microsoft.DataFactory/factories/linkedServices": {},
    "Microsoft.DataFactory/factories/datasets": {}
}

Ответы [ 4 ]

0 голосов
/ 20 марта 2019

У вас правильная идея, но файл arm-template-parameters-definition.json должен следовать иерархии элемента, который вы хотите параметризовать.

Вот мой конвейер, который я хочу параметризировать.«URL» должен меняться в зависимости от среды, в которой он развернут в

{
    "name": "[concat(parameters('factoryName'), '/ExecuteSPForNetPriceExpiringContractsReport')]",
    "type": "Microsoft.DataFactory/factories/pipelines",
    "apiVersion": "2018-06-01",
    "properties": {
        "description": "",
        "activities": [
            {
                "name": "NetPriceExpiringContractsReport",
                "description": "Passing values to the Logic App to generate the CSV file.",
                "type": "WebActivity",
                "typeProperties": {
                    "url": "[parameters('ExecuteSPForNetPriceExpiringContractsReport_properties_1_typeProperties')]",
                    "method": "POST",
                    "headers": {
                        "Content-Type": "application/json"
                    },
                    "body": {
                        "resultSet": "@activity('NetPriceExpiringContractsReportLookup').output"
                    }
                }
            }
        ]
    }
}

. Здесь находится файл arm-template-parameters-definition.json, который превращает этот URL в параметр.

{
   "Microsoft.DataFactory/factories/pipelines": {
        "properties": {
            "activities": [{
                "typeProperties": {
                    "url": "-::string"
                }
            }]
        }
    },
    "Microsoft.DataFactory/factories/integrationRuntimes": {},
    "Microsoft.DataFactory/factories/triggers": {},
    "Microsoft.DataFactory/factories/linkedServices": {
        "*": "="
    },
    "Microsoft.DataFactory/factories/datasets": {
        "*": "="
    }
}

Таким образом, в основном в конвейерах шаблона ARM он ищет свойства -> активность -> typeProperties -> URL в JSON и параметризует его.

0 голосов
/ 29 января 2019

Я боролся с этим в течение нескольких дней и не нашел много информации, так что вот что я узнал.Вы должны поместить arm-template-parameters-definition.json в настроенную корневую папку вашей ветви совместной работы:

data factory git settings

Так что в моем примере это должно выглядеть так:

arm-template-parameters-definition.json

Если вы работаете в отдельной ветке, вы можете проверить свою конфигурацию, загрузив шаблоны рукавов с фабрики данных.Когда вы вносите изменения в определение параметров, вам необходимо перезагрузить экран браузера (f5), чтобы обновить конфигурацию.Data factory download arm template

Если вы действительно хотите параметризовать все параметры во всех конвейерах, должно работать следующее:

"Microsoft.DataFactory/factories/pipelines": {
    "properties": {
        "parameters":{
            "*":{
                "defaultValue":"="
            }
        }
    }
}

Я предпочитаю указывать параметрычто я хочу параметризировать:

"Microsoft.DataFactory/factories/pipelines": {
    "properties": {
        "parameters":{
            "LogicApp_RemoveFileFromADLSURL":{
                "defaultValue":"=:-LogicApp_RemoveFileFromADLSURL:"
            },
            "LogicApp_RemoveBlob":{
                "defaultValue":"=:-LogicApp_RemoveBlob:"
            }
        }
    }
}
0 голосов
/ 21 февраля 2019

У меня возникли аналогичные проблемы с файлом ARMTemplateParametersForFactory.json, который не обновлялся при каждой публикации, и я изменил arm-template-parameters-definition.json.

Я решил, что могу принудительно обновить ветку публикации, выполнив следующие действия:

  1. Обновите файл определения пользовательского параметра по своему желанию.
  2. Удалите ARMTemplateParametersForFactory.json из ветви публикации.
  3. Обновите (F5) портал фабрики данных.
  4. Публикация.

Самый простой способ проверить синтаксис вашего пользовательского параметра .json - это экспортировать шаблон ARM, как упоминал Саймон.

0 голосов
/ 25 января 2019

Вот необходимые шаги для устранения путаницы:

  1. Добавьте arm-template-parameters-definition.json в вашу основную ветку.
  2. Закройте и снова откройте вашDev ADF portal
  3. Выполните новую публикацию

Ваш ARMTemplateParametersForFactory.json будет обновлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...