У меня есть проект, работающий на Azure DevOps, который требует создания KeyVault и предоставления серии управляемых удостоверений AppService доступа к секретам в этом хранилище.
Из-за невозможности дать Terraform собственный сервис подключения доступа к хранилищу ключей (это какая-то ошибка), я вынужден создать ResourceGroup и Keyvault с доступом к SP до Terraforming.
При запуске terraform import
на ресурсной группе и Keyvault через PowerShell task:
terraform init
$state = terraform state list
if ($state -like '*azurerm_resource_group.instancerg*' -and '*azurerm_key_vault.instancekeyvault*') {
Write-Host "Resources have already been imported!"
}
else {
terraform import azurerm_resource_group.instancerg /subscriptions/$(subscriptionid)/resourceGroups/rgname
terraform import azurerm_key_vault.instancekeyvault /subscriptions/$(subscriptionid)/resourceGroups/rgname/providers/Microsoft.KeyVault/vaults/keyvaultname
}
Сбой при выполнении команд импорта terraform:
«Аутентификация с использованием субъекта-службы» Для аутентификации на Azure с использованием субъекта-службы вы можете использовать отдельный метод auth - инструкции, для которых можно найти здесь: '
Мой main.tf содержит:
provider "azurerm" {
version = "=2.7.0"
subscription_id = var.subscriptionid
client_id = var.devopsserviceconnectionaid
client_secret = var.devopsserviceconnectionpw
tenant_id = var.tennantid
features {}
}
Все переменные связаны с правильными учетными данными.
Из того, что я понимаю, Terraform должен узнать, какой метод аутентификации используется на основе учетных данных, которые находятся в блоке выше или специфицируют c переменные env (которые также присутствуют ...), но каким-то образом Terraform все еще думает, что я пытаюсь авторизоваться через Azure Cli, а не субъект службы.