В своем коде Terraform я использую модули из того же проекта Azure DevOps.
Итак, структура репозитория выглядит следующим образом:
org1/project1/keyvault
org1/project1/repo_that_uses_keyvault_module
Сам код выглядит следующим образом:
module "key_vault" {
source = "git::https://[email protected]/org1/proj1/_git/keyvault"
# code here
}
Моя задача конвейера очень проста:
- powershell: |
terraform init
displayName: 'Terraform Init'
workingDirectory: src/terraform
Но это не удается:
Initializing Terraform without backend...
Initializing modules...
Downloading git::https://[email protected]/org1/proj1/_git/keyvault
for key_vault...
╷
│ Error: Failed to download module
│
│ on main.tf line 57:
│ 57: module "key_vault" {
│
│ Could not download module "key_vault" (main.tf:57) source code from
│ "git::https://[email protected]/org1/proj1/_git/keyvault":
│ error downloading
│ 'https://[email protected]/org1/proj1/_git/keyvault':
│ C:\agents\3.238.0\externals\ff_git\cmd\git.exe exited with 128: Cloning
│ into '.terraform\modules\key_vault'...
│ fatal: Cannot prompt because user interactivity has been disabled.
│ fatal: Cannot prompt because user interactivity has been disabled.
│ fatal: could not read Password for
│ 'https://git_url':
│ terminal prompts disabled
Как разрешить агентам, размещенным в Microsoft, извлекать модули GIT в одном проекте ADO?
Я могу воспроизвести ошибку на своей стороне. Чтобы устранить ошибку, выполните следующие действия:
terraform init
, замените orgname на свое:- task: TerraformInstaller@1
inputs:
terraformVersion: 'latest'
- script: |
git config --global url."https://$(System.AccessToken)@dev.azure.com".insteadOf "https://<<orgname>>@dev.azure.com"
displayName: 'set extra header'
- powershell: |
terraform init -upgrade
Поскольку он использовался system.accesstoken
для доступа к целевому репо (модулю), by default
у него есть разрешение. Вы можете подтвердить это, перейдя в настройки проекта, проверив учетную запись службы сборки в репозитории модуля, у нее есть разрешение read
.
Трубопровод работает:
Вы можете проверить аналогичный билет для справки.
Спасибо @michasaucer. Чтобы использовать агент Windows, просто нужно напрямую использовать $(system.accesstoken)
в команде git config
. Я обновлю содержимое, чтобы оно работало как для Windows, так и для агента Ubuntu.
Он работает с изображением
ubuntu
, но можете ли вы также добавить код для машиныwindows
в качестве ссылки? Потому что действительно ваш код работает, но мне пришлось сменить изображение наubuntu
сwindows