标签: terraform-provider-azure

使用 terraform 添加 azure SQL 用户

是否有可能通过 terraform 将 sql 用户添加到 azure sql? https://www.mssqltips.com/sqlservertip/5242/adding-users-to-azure-sql-databases/

或者是否有更好的建议如何创建 SQL 用户?

谢谢

terraform terraform-provider-azure

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

Terraform 创建的服务主体不在输出中提供密码/秘密

在 Azure 中手动生成服务主体时,作为操作的结果,我获得了密码。

但是,如果我使用 Terraform 创建服务主体,则情况并非如此,密码不在此模块的输出中:

  + azuread_service_principal.k8s_principal
      id:                <computed>
      application_id:    "${azuread_application.app.application_id}"
      display_name:      <computed>
Run Code Online (Sandbox Code Playgroud)

有什么我错过的吗?与 CLI 相比,为什么 Terraform 的输出行为不同?

service-principal terraform-provider-azure

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

无法使用 Azure DevOps + Terraform 创建 Azure AD 应用程序

我正在尝试使用 terraform 和 Azure DevOps 管道创建 Azure AD 应用程序,但出现以下错误:

1 error(s) occurred:

* module.cluster.module.cluster.azuread_application.cluster: 1 error(s) occurred:

* azuread_application.cluster: graphrbac.ApplicationsClient#Create: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="Unknown" Message="Unknown service error" Details=[{"odata.error":{"code":"Authorization_RequestDenied","date":"2019-02-19T23:22:23","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"<SOME GUID>"}}]
Run Code Online (Sandbox Code Playgroud)

我很确定这是因为管道的服务主体在我们的 Azure AD 中没有适当的权限。

这是违规的 Terraform 代码:

resource "azuread_application" "cluster" {
  name = "some-application"
}

resource "azuread_service_principal" "cluster" {
  application_id = "${azuread_application.cluster.application_id}"
}
Run Code Online (Sandbox Code Playgroud)

这是 Terraform 步骤的样子(我正在使用服务连接来提供服务主体)。

地形步骤

为了配置服务主体,我为服务连接选择了“管理服务主体”。

服务连接

然后,我为 Microsoft Graph 和 Windows Azure Active Directory …

azure-devops terraform-provider-azure

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

模块的动态嵌套块

我想为 Azure 应用程序网关创建一个模块。

我想使用内联块 disabled_rule_group 禁用一些规则组,但是如何在模块中进行配置?这应该是一个可选变量。

我找到了for_each嵌套块的 。

例子:

variable "disabled_rule_groups" {
  default     = [
    {
      rule_group_name = "REQUEST-931-APPLICATION-ATTACK-RFI"
      rules           = [
        931100,
        931130]
    },
    {
      rule_group_name = "REQUEST-942-APPLICATION-ATTACK-SQLI"
      rules           = [
        942100
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)
resource "azurerm_application_gateway" "AppGateway" {
  dynamic "disabled_rule_group" {
    for_each = [var.disabled_rule_groups]
    content {
      rule_group_name = disabled_rule_group.value.rule_group_name
      rules           = disabled_rule_group.value.rules
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用。

有人知道如何修复语法吗?

此外,该变量disabled_rule_groups应该是可选的。所以如果没有设置 disabled_rule_groups 块应该被禁用。我怎样才能做到这一点?我是否需要第二个布尔变量和一个 if ?

terraform terraform-provider-azure terraform0.12+

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

Terraform - Azure 作为提供者和受限访问帐户

我想使用 Terraform 在 Azure 上部署一些资源。在 Azure 上,我有一个仅在一个资源组 (RGName) 上具有“所有者权限”的帐户。不是在订阅级别。

在我的 linux 服务器上,我安装了“az cli”并执行了“az login”。到这一步,一切正常。

当我想执行 terraform 来创建一个资源时会出现问题。


provider.tf 的内容(目前唯一的一个 .tf 文件):

provider "azurerm" {
}
Run Code Online (Sandbox Code Playgroud)

如果我做一个“地形计划”,它会起作用。

如果我添加以下行,它将失败。请查看最后的错误:

resource "azurerm_virtual_network" "myterraformnetwork" {
    name                = "myVnet"
    address_space       = ["10.0.0.0/16"]
    location            = "eastus"
    resource_group_name = "RGName"

    tags = {
        environment = "Terraform Demo"
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有订阅级别的权利,但我不需要。使用 Azure WebUI,我可以毫无问题地在此资源组上创建资源。


错误 :

错误:确保注册资源提供程序时出错:无法向 Azure 资源管理器注册提供程序 Microsoft.DevSpaces:resources.ProvidersClient#Register:响应请求失败:StatusCode=403 -- 原始错误:autorest/azure:服务返回错误。Status=403 Code="AuthorizationFailed" Message="对象 ID 为 'IDaccountName' 的客户端 'accountName' 无权在范围 '/subscriptions/subscriptionID' 或范围内执行操作 'Microsoft.DevSpaces/r egister/action'无效。如果最近授予了访问权限,请刷新您的凭据。”。

在 provider.tf 第 1 行,在提供者“azurerm”中:1:提供者“azurerm”{ …

provider azure subscription terraform terraform-provider-azure

3
推荐指数
2
解决办法
3061
查看次数

无法在 terraform azure 提供程序中获取 SystemAssigned 身份属性

使用以下应用程序服务定义

data "azurerm_resource_group" "rg" {
  name = var.resource_group_name
}

# Creates our new App Service
resource "azurerm_app_service" "app" {
  name                    = var.app_name
  app_service_plan_id     = var.app_service_plan_id
  location                = data.azurerm_resource_group.rg.location
  resource_group_name     = data.azurerm_resource_group.rg.name
  client_affinity_enabled = false
  enabled                 = true
  https_only              = true

  app_settings = var.app_settings

  site_config {
    always_on                 = true
    http2_enabled             = true
    use_32_bit_worker_process = false
    scm_type                  = "LocalGit"
    default_documents         = var.default_documents

    cors {
      allowed_origins     = var.cors_allowed_origins
      support_credentials = var.cors_enabled
    }
  }

  identity {
    type = "SystemAssigned"
  }
Run Code Online (Sandbox Code Playgroud)

我正在像这样设置 keyvault 访问策略

resource …
Run Code Online (Sandbox Code Playgroud)

azure terraform azure-devops terraform-provider-azure

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

错误:无法导入不存在的远程对象

我正在尝试将现有资源导入 terraform 状态。我使用了以下内容:

terraform import azurerm_resource_group.main_rg /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-cm-main
Run Code Online (Sandbox Code Playgroud)

资源组以名称和 ID 存在于订阅中。

但是当我运行命令时,我收到此错误:

Error: Cannot import non-existent remote object
Run Code Online (Sandbox Code Playgroud)

在我运行这个命令之前,我需要在我的脚本中做任何特别的事情吗?

terraform terraform-provider-azure

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

Terraform 删除应用程序网关入口控制器 (AGIC) 创建的配置/资源

我有一些 Terraform 代码,它在应用程序网关后面部署 AKS 以及与该问题无关的其他基础设施。该代码基于https://learn.microsoft.com/en-us/azure/developer/terraform/create-k8s-cluster-with-aks-applicationgateway-ingress。如果需要,我可以提供实际文件。

所有基础设施都在初始创建时成功部署,但是当我配置 AGIC Pod 并部署 Nginx 等应用程序时,它会在应用程序网关上创建 Terraform 未知的资源,例如路由规则,因此如果我运行 Terraform 部署,它将恢复到代码中的内容(无论我是否做了任何更改)。这会导致通过入口控制器路由到我的应用程序返回 502,直到重新部署为止。

我该如何解决这个问题?

> terraform apply -var-file=".\env\DEV.tfvars"
Acquiring state lock. This may take a few moments...
azurerm_resource_group.k8snetworkingrg: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sNetworkingRG]
azurerm_resource_group.k8srg: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sRG]
azurerm_resource_group.acrrg: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sCRRG]
azurerm_resource_group.k8ssupportrg: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sSupportRG]
azurerm_container_registry.acr: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sCRRG/providers/Microsoft.ContainerRegistry/registries/DEVK8sCR]
azurerm_public_ip.publicip: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sNetworkingRG/providers/Microsoft.Network/publicIPAddresses/DEV-K8sPublicIP]
azurerm_virtual_network.vnet: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sNetworkingRG/providers/Microsoft.Network/virtualNetworks/DEV-K8sVNET]
azurerm_log_analytics_workspace.log: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourcegroups/DEV-k8ssupportrg/providers/microsoft.operationalinsights/workspaces/DEV-k8sloganalyticsworkspace]
data.azurerm_subnet.vnet_subnet1: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sNetworkingRG/providers/Microsoft.Network/virtualNetworks/DEV-K8sVNET/subnets/DevTestSubnet1]
azurerm_virtual_network_peering.vnet_peer: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sNetworkingRG/providers/Microsoft.Network/virtualNetworks/DEV-K8sVNET/virtualNetworkPeerings/DevTest-K8stoDevTest-Peering]
data.azurerm_subnet.vnet_subnet_ag: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sNetworkingRG/providers/Microsoft.Network/virtualNetworks/DEV-K8sVNET/subnets/DevTestAppGatewaySubnet]
azurerm_application_gateway.appgateway: Refreshing state... [id=/subscriptions/<Subscription_ID>/resourceGroups/DEV-K8sNetworkingRG/providers/Microsoft.Network/applicationGateways/DEV-K8sAppGateway] …
Run Code Online (Sandbox Code Playgroud)

azure terraform azure-application-gateway terraform-provider-azure

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

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

Terraform - 获取存储帐户的主要静态网站端点

我想部署一个 Azure 前门,其后端链接到存储帐户的静态网站。如果我使用 Azure Portal 没有问题,但我不知道如何检索主静态网站的端点?

此外,主端点就像https://saprodgamingfiles.z6.web.core.windows.net/我们想要的后端主机名一样saprodgamingfiles.z6.web.core.windows.net

如何自动创建与存储帐户的静态网站主要端点相关的前门后端?


合成

我想从 Azure Front Door Terraform 配置中自动执行以下host_header操作...address

backend {
     host_header = "saprodgamingfiles.z6.web.core.windows.net"
     address     = "saprodgamingfiles.z6.web.core.windows.net"
     http_port   = 80
     https_port  = 443
     priority    = 1
     weight      = 50
}
Run Code Online (Sandbox Code Playgroud)

...与使用存储帐户创建的静态网站相关:

resource "azurerm_storage_account" "saprodgamingfiles" {
    name                = var.sa_name1
    resource_group_name = azurerm_resource_group.rg-prod-gaming.name

    # etc...

    # THIS : Pre-requisite for Azure Front Door
    static_website {}
}
Run Code Online (Sandbox Code Playgroud)

我是 Terraform 和 Azure 的新手,但我进行了很多搜索,但找不到令人满意的解决方案来解决我的问题。我很惊讶它没有提高那么多,也许我只是错过了一些东西?

最好的

azure terraform azure-storage-account terraform-provider-azure azure-front-door

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