gpt4 book ai didi

azure - terraform 计划不与 azurerm 提供商合作

转载 作者:行者123 更新时间:2023-12-03 03:39:56 26 4
gpt4 key购买 nike

我想使用 terraform 在 azure 云中创建一个资源组,我必须为此配置 azurerm 提供程序。

我使用 cli 创建了 SPN。

# az ad sp create-for-rbac --name spn_devops_terraform  --role="Contributor" --scopes="/subscriptions/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX"

The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
{
"appId": "YYYYYY-YYYY-YYYY-YYYY-YYYYYYYYY",
"displayName": "spn_devops_terraform",
"password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"tenant": "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX"
}

为了测试我的 SPN spn_devops_terraform,我通过 cli 登录

az login --service-principal -u YYYYYY-YYYY-YYYY-YYYY-YYYYYYYYY -p XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --tenant XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX

然后执行

az vm list --output table

我可以看到所有 VMS 的列表。

现在这是我的 main.tf 文件

terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.0.2"
}
}
}

provider "azurerm" {
features {}

subscription_id = "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX" # copy pasted this from portal.
client_id = "YYYYYY-YYYY-YYYY-YYYY-YYYYYYYYY" # this is app_id
client_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" # password
tenant_id = "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX" # tenant

}

我使用“terraform init”命令初始化了 terraform,效果很好。但是当我执行 terraform plan 时,它只是挂起 10 分钟,我必须按 CTRL + C 来停止它。

请等待 Terraform 退出,否则可能会发生数据丢失。优雅地关闭...

正在停止操作...


│ Error: Unable to list provider registration status, it is possible that this is due to invalid credentials or the service principal does not have permission to use the Resource Manager API, Azure error: resources.ProvidersClient#List: Failure sending request: StatusCode=0 -- Original Error: context canceled

│ with provider["registry.terraform.io/hashicorp/azurerm"],
│ on main.tf line 10, in provider "azurerm":
│ 10: provider "azurerm" {


我出了什么问题?修复了什么?门户中的 CLI 或 GUI 中是否有任何命令可以让我看到正在发生的情况?

最佳答案

在我的环境中进行测试,出现相同类型的错误。看起来服务主体没有分配给它的贡献者角色/无权访问订阅。

您可以在创建服务原则时定义其范围。

$ az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/SUBSCRIPTION_ID"

只需转到门户中的订阅,选择访问控制 (IAM) 并将角色分配、贡献者添加到您的服务主体

enter image description here

可以引用这个Terraform Document使用带有客户端 key 的服务主体进行身份验证

引用:Terraform unable to list provider registration status

关于azure - terraform 计划不与 azurerm 提供商合作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71715849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com