标签: terraform-provider-azure

Terraform 无法列出提供商

我正在尝试创建 azure databrick 集群,但是当我尝试运行 terraform init 时,我看到以下错误。我该如何纠正这个问题。基本上如何在 terraform 中使用不同的提供者。Terraform 版本为 Terraform v0.14.5

当我运行 terraform init 时出现以下错误

Initializing the backend...

  Initializing provider plugins...
        - Finding hashicorp/azurerm versions matching "~> 2.33"...
        - Finding latest version of hashicorp/databricks...
        - Installing hashicorp/azurerm v2.45.1...
        - Installed hashicorp/azurerm v2.45.1 (signed by HashiCorp)

       Error: Failed to query available provider packages

           Could not retrieve the list of available versions for provider
           hashicorp/databricks: provider registry registry.terraform.io does not have a
           provider named registry.terraform.io/hashicorp/databricks

           If you have just upgraded directly …
Run Code Online (Sandbox Code Playgroud)

terraform databricks terraform-provider-azure azure-databricks terraform-provider-databricks

3
推荐指数
1
解决办法
5451
查看次数

Terraform 使用 for_each 为选定的子网创建 azure 子网委派

我需要一些有关在选定的天蓝色子网上创建委派的帮助。我的代码如下详细信息。

\n

我的变量文件中定义的变量

\n
variable \xe2\x80\x9csubnets\xe2\x80\x9d {\ntype = map(any)\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我的 tfvar 文件包含以下值

\n
subnets = {\nmlops-aue-snt-aks = [\xe2\x80\x9c10.255.232.0/24\xe2\x80\x9d]\nmlops-aue-snt-stg = [\xe2\x80\x9c10.255.233.0/26\xe2\x80\x9d]\nmlops-aue-snt-kv = [\xe2\x80\x9c10.255.233.128/27\xe2\x80\x9d]\nAzureBastionSubnet = [\xe2\x80\x9c10.255.233.160/27\xe2\x80\x9d]\nmlops-aue-snt-shd = [\xe2\x80\x9c10.255.234.0/25\xe2\x80\x9d]\nmlops-aue-snt-db1 = [\xe2\x80\x9c10.255.235.0/26\xe2\x80\x9d]\nmlops-aue-snt-db2 = [\xe2\x80\x9c10.255.235.64/26\xe2\x80\x9d]\nmlops-aue-snt-aci = [\xe2\x80\x9c10.255.235.128/26\xe2\x80\x9d]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的子网代码

\n
resource \xe2\x80\x9cazurerm_subnet\xe2\x80\x9d \xe2\x80\x9cazr_subnet\xe2\x80\x9d {\nfor_each = var.subnets\n\nname = each.key\nresource_group_name = azurerm_resource_group.rg.name\nvirtual_network_name = azurerm_virtual_network.vnet.name\naddress_prefixes = each.value\nenforce_private_link_endpoint_network_policies = true\n}\n
Run Code Online (Sandbox Code Playgroud)\n

所有子网都是用这个创建的,一切都很好,但现在我需要为 mlops-aue-snt-db1 和 mlops-aue-snt-db2 添加 service_delegation ,而其他子网则不同。我不知道如何用我现有的代码来实现这一点。我可以\xe2\x80\x99t 从代码中分离出子网,因为它将强制删除现有子网并创建新子网,这是不推荐的。我确实阅读了一些有关使用动态块进行更改的帖子,但不确定如何根据我的要求针对选择性子网实现它。

\n

谁能建议如何在 terraform 中实现这一目标?

\n

terraform terraform-provider-azure

3
推荐指数
1
解决办法
9357
查看次数

在 terraform 中为 azure-devops 和 mysql 提供程序使用第三方提供程序时出现问题

在执行 terraform init 时出现错误,按照 terraform 官方文档,我尝试通过 terraform 创建 azure-pipeline 并为其创建了模块,但无法初始化,如果我直接在 .tf 文件中传递它,它的工作正常,但是添加到模块时,terraform init 命令本身失败。

\n
\xe2\x95\xb7\n\xe2\x94\x82 Error: Failed to query available provider packages\n\xe2\x94\x82\n\xe2\x94\x82 Could not retrieve the list of available versions for provider hashicorp/mysql: provider registry registry.terraform.io does not have a provider named       \n\xe2\x94\x82 registry.terraform.io/hashicorp/mysql\n\xe2\x94\x82\n\xe2\x94\x82 Did you intend to use terraform-providers/mysql? If so, you must specify that source address in each module which requires that provider. To see which       \n\xe2\x94\x82 modules are currently depending on hashicorp/mysql, run the following command:\n\xe2\x94\x82 …
Run Code Online (Sandbox Code Playgroud)

terraform terraform-provider-azure terraform-provider

3
推荐指数
1
解决办法
2164
查看次数

Terraform:将整个资源组移动到新的 Azure 订阅

历史上增长的项目及其在 Azure 上的相关基础设施必须进行拆分。幸运的是,它的结构良好,因此很明显我们需要将两个资源组及其附属资源移动到新的 Azure 订阅。

  • 我已经检查过,大部分资源都可以移动,因此不必重新创建并且可以保留数据。

  • 对于那些无法移动的资源,幸运的是我们正在使用terraform,可以运行它来重新创建这些资源。

  • 需要移动的资源是整个terraform项目,因此不需要从当前配置文件中删除资源。所有这些都需要进行新的订阅。

到目前为止一切顺利,但现在我需要了解如何实际进行,以便 terraform 知道移动的资源。我当前看到的唯一选项是手动移动 Azure 门户上的资源,更改 CLI/for terraform 上的订阅,然后为每个资源运行terraform state rm; terraform import或 a 。terraform mv

难道没有更简单的方法来实现这一目标吗?这似乎过于麻烦,基本上可以更轻松地删除当前订阅中的整个基础设施,并通过新订阅中的 terraform 重新创建它(不是一个选项!)

infrastructure azure terraform terraform-provider-azure

3
推荐指数
1
解决办法
2814
查看次数

尝试运行 Terraform Apply 时出错,Web 应用程序身份验证错误

我在尝试运行 Terraform Apply 时收到以下错误。

\n
Error: updating Authentication Settings for App Service "app-cont-sa-fe-predev-cus-bb2e": web.AppsClient#UpdateAuthSettings: Failure responding to request: StatusCode=400 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="BadRequest" Message="Cannot execute the request for site app-cont-sa-fe-predev-cus-bb2e because the site is running on auth version v2." Details=[{"Message":"Cannot execute the request for site app-cont-sa-fe-predev-cus-bb2e because the site is running on auth version v2."},{"Code":"BadRequest"},{"ErrorEntity":{"Code":"BadRequest","ExtendedCode":"04534","Message":"Cannot execute the request for site app-cont-sa-fe-predev-cus-bb2e because the site is running on auth version v2.","MessageTemplate":"Cannot execute the request for …
Run Code Online (Sandbox Code Playgroud)

azure terraform azure-web-app-service terraform-provider-azure

3
推荐指数
1
解决办法
2325
查看次数

Terraform 输出多个子网 ID

我对 terraform 还很陌生,我正在尝试学习和编写 TF 代码来自动化 Azure VM 部署。我试图将每个部分作为模块(rg 除外)来覆盖,而不是将其保存在单个 main.tf 文件中。

我正在创建一个包含 3 个子网的 Vnet。请找到我的子网模块代码。请帮我解决以下两点。

子网.tf

resource "azurerm_subnet" "SUBNETS" {
for_each=var.Subnetlist
name=each.value.name
address_prefixes=[each.value.address]
  resource_group_name  = var.resource_group_name
  virtual_network_name = var.virtual_network_name
}
Run Code Online (Sandbox Code Playgroud)

网卡tf

resource "azurerm_network_interface" "NETWORKINTERFACE" {
  for_each=var.niclist
  name                = each.value.name
  location            = var.location
  resource_group_name = var.resource_group_name

  ip_configuration {
    name                          = "ipconfig1"
    subnet_id                     = 
    private_ip_address_allocation = "Dynamic"
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 如何输出(三个创建的子网的)subnet_ids。
  2. 如何将这些subnet_id传递给另一个模块(例如创建网络接口)

azure terraform terraform-provider-azure

3
推荐指数
1
解决办法
3249
查看次数

Terraform - AzureDataLake 创建错误未能响应请求:StatusCode=403

我尝试使用 terraform 创建 3 个数据湖,但收到 403 错误。

我正在使用具有所有者角色的管理员帐户。我还尝试创建 SP 并设置 Blob Reader Role。

下面找到我的代码和错误

windows_amd64 上的 Terraform v1.2.1

  • 提供商registry.terraform.io/hashicorp/azuread v2.22.0
  • 提供商registry.terraform.io/hashicorp/azurerm v3.7.0
resource "azurerm_storage_data_lake_gen2_filesystem" "stg-datalake" {
  for_each           = toset(["bronze", "silver", "gold"])
  name               = each.value
  storage_account_id = azurerm_storage_account.stg-datalake.id

  ace {
    scope       = "access"
    type        = "user"
    id          = azurerm_data_factory.adf.identity[0].principal_id
    permissions = "rwx"
  }
}
Run Code Online (Sandbox Code Playgroud)

错误:错误:检查现有文件系统“gold”是否存在(帐户“stgaclientteste”):datalakestore.Client#GetProperties:响应请求失败:StatusCode=403 -- 原始错误:autorest/azure:无法解析错误响应: {"" '\x00' '\x00'} 错误:EOF

terraform terraform-provider-azure

3
推荐指数
1
解决办法
4000
查看次数

如何使用一个子模块的输出作为 Terraform 中另一个子模块的输入

我有以下目录结构

\n
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 output.tf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 variables.tf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 modules\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ServicePrincipal\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 variables.tf\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 outputs.tf\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 aks\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 output.tf\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 variables.tf\n...\n\n
Run Code Online (Sandbox Code Playgroud)\n

问题: \n我想使用从服务主体模块生成的 client_id 和 client_secret 作为创建我的 aks 集群的输入。我可以通过 module.modulename.outputvarname 从我的根 main.tf 引用以下输出变量,但是,我无法在另一个子模块(aks)中将其作为 var.client_id 或 module.serviceprincipal.client_id 访问

\n

根模块的 main.tf ,我可以在其中使用 client_id 和 client_secret

\n
module "ServicePrincipal" {\n  source                 = "./modules/ServicePrincipal"\n  service_principal_name = var.service_principal_name\n  redirect_uris          = var.redirect_uris\n\n}\n\nmodule "aks" {\n  source                 = "./modules/aks/"\n  service_principal_name = var.service_principal_name\n  serviceprinciple_id    = module.ServicePrincipal.service_principal_object_id\n  serviceprinciple_key   = module.ServicePrincipal.client_secret\n …
Run Code Online (Sandbox Code Playgroud)

azure terraform terraform-provider-azure azure-aks azure-service-principal

3
推荐指数
1
解决办法
1516
查看次数

Azure:GroupsClient.BaseClient.Get():意外状态 403,带有 OData 错误:Authorization_RequestDenied:权限不足

I\xe2\x80\x99m 尝试使用以下 terraform 代码创建 Azure AD 组

\n
# Required Provider\nterraform {\n  required_providers {\n    azurerm = {\n      source  = "hashicorp/azurerm"\n      version = "~> 3.0.2"\n    }\n  }\n  required_version = ">= 1.1.0"\n}\n\n# Configure the Microsoft Azure Provider\nprovider "azurerm" {\n  features {}\n\n  ....\n  ....\n}\n\ndata "azuread_client_config" "current" {}\n\n# Variables\nvariable "ad_groups" {\n  description = "Azure AD groups to be added"\n  type = list(object({\n    display_name = string,\n    description  = string   \n  }))\n  default = [\n    {\n      display_name = "Group1"\n      description  = "some description"\n    },\n    {\n      display_name …
Run Code Online (Sandbox Code Playgroud)

azure azure-active-directory terraform-provider-azure azure-service-principal

3
推荐指数
1
解决办法
9533
查看次数

排除Terraform模块中的资源

我有一个我构建的Terraform模块,它将模块的两个实例部署到一个单独的区域.在这个模块中有一个密钥库.我只希望密钥库存在于两个区域之一.

这是我的模块:

resource "azurerm_resource_group" "test" {
  name     = "test"
  location = "${var.location}"
}

resource "azurerm_key_vault" "keyvault" {
  name = "keyvault"
}
Run Code Online (Sandbox Code Playgroud)

这是我的main.tf

module "test_uswest2" {
  source = "modules/test"

  location = "westus2"
  environment = "${var.environment}"
}

module "test_westcentralus" {
  source = "modules/test"

  location = "centralus"
  environment = "${var.environment}"
}
Run Code Online (Sandbox Code Playgroud)

我想在第二个区域/位置排除密钥保险库.

Terraform似乎不支持if/else所以我不确定我的选择是什么.

terraform terraform-provider-azure

2
推荐指数
1
解决办法
584
查看次数