Когда вы применяете терраформу, она сначала обновляет состояние существующих ресурсов. Допустим, вы уже создали группу ресурсов в одной подписке, когда вы снова запустите команду apply, она обновит состояние группы ресурсов в этой конкретной подписке.
Когда вы подтвердите операцию применения, она изменит подписку, выбранную в вашей локальной оболочке (через null_resource), но на данный момент она уже подсчитала, что в ранее выбранной подписке не требуется никаких изменений.
Если вы запустите это снова после того, как local-exec выберет желаемую подписку, это, вероятно, сработает.
Могу ли я предложить вам передать subscription_id в качестве аргумента при вызове terraform apply? Таким образом, поставщик будет настроен с правильной подпиской с самого начала.
Код ниже:
variable "subscription_id" {
type = "string"
}
provider "azurerm" {
version = "=1.28.0"
subscription_id = var.subscription_id
}
resource "azurerm_resource_group" "resources_groups" {
name = "resources_groups"
location = "uksouth"
}
и вызовите с помощью команды terraform apply -var 'subscription_id=<my_subscription_id>
Затем вы можете просто запустить terraform, используя powershell, чтобы получить интерактивный выбор
Login-AzAccount
$SubscriptionId = (Get-AzSubscription | select Name, State, SubscriptionId, TenantId | Out-GridView -Title "Azure Subscription Selector" -PassThru).SubscriptionId
terraform apply -var `subscription_id=$SubscriptionId`