TFS\Team Services, Использование секретов Azure KeyVault из группы переменных в определении сборки
У меня есть простая настройка сборки в Team Services. Сборка просто загружает исходный код из репозитория Git, размещенного в Team Services, а затем выполняет скрипт Powershell.
Скрипт Powershell получает 4 параметра;
-SiteName "$(AppServiceName)" -AzureRMTenantID "$(AzureRMTenantID)" -AzureRMUN "$(AzureRMUN)" -AzureRMPW "$(AzureRMPW)"
AppServiceName вводится вручную, когда сборка ставится в очередь.
3 параметра AzureRM* должны поступать из группы переменных, которую я связал с определением сборки;
Группа переменных AzureDevOps настроена на связывание секретов из хранилища ключей Azure как переменных;
Исходя из всего, что я смог найти относительно этого паттерна, кажется, что он должен просто работать.
В качестве временной проверки работоспособности я печатаю переменные в своем скрипте powershell, чтобы убедиться, что они передаются правильно.
До сих пор мне не удавалось получить значения любой из переменных AzureRM* для правильной печати, что наводит меня на мысль, что они НЕ передаются должным образом.
Generating script.
Formatted command: . 'd:\a\1\s\AppServices\Create Canned App Service Application.ps1' -SiteName "Testers" -AzureRMTenantID "" -AzureRMUN "" -AzureRMPW ""
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -File "d:\a\_temp\23b9a27a-4b6d-4232-8e24-150173e08915.ps1"
Working Set of Variables:
SiteName: Testers
ResourceGroup: Applications
ASE Name: appservices-ase
Location: East US
Additional Variables:
AzureRMTenantID:
Я не ожидаю, что переменные будут напечатаны в команде log здесь;
Formatted command: . 'd:\a\1\s\AppServices\Create Canned App Service Application.ps1' -SiteName "Testers" -AzureRMTenantID "" -AzureRMUN "" -AzureRMPW ""
но я ожидаю, что они будут напечатаны в моем сценарии, где я их явно выписываю;
Write-Host "Working Set of Variables:`nSiteName: "$SiteName"`r`nResourceGroup: "$RG"`r`nASE Name: "$ASEName"`r`nLocation: "$Location
Write-Host "Additional Variables:`nAzureRMTenantID: "$AzureRMTenantID"`r`n"$AzureRMUN"`r`n"$AzureRMPW
Если я запускаю скрипт PS локально, значения печатаются, как и ожидалось;
PS C:\ashley\scm\AzureAutomation\AppServices> & '.\Create Canned App Service Application.ps1' -SiteName "tester" -AzureRMTenantID 12345 -AzureRMUN user -AzureRMPW 1234
Working Set of Variables:
SiteName: tester
ResourceGroup: Applications
ASE Name: appservices-ase
Location: East US
Additional Variables:
AzureRMTenantID: 12345
user
1234
Кто-нибудь знает, как заставить это работать? Мне интересно, связана ли проблема с разрешениями Key Vault, поскольку запрос поступает из очереди агентов "Hosted 2017", встроенной в Team Services.
2 ответа
Во-первых, вы не можете распечатать значение секретных переменных, вы можете отправить данные в службу (например, Web API), чтобы получить фактические данные во время сборки / выпуска.
Во-вторых, переменные секретов хранилища ключей используются для выпуска, это добавит задачу хранилища ключей Azure во время выпуска. Связывать секреты из хранилища ключей Azure как переменные
Вы получите пустое значение, если вы используете в сборке. Вы можете добавить Key Vault Task в определение сборки, затем вы можете использовать связанные переменные в следующих задачах. (Не нужно ссылаться на эту группу переменных в определении сборки)