是否有可能通过 terraform 将 sql 用户添加到 azure sql? https://www.mssqltips.com/sqlservertip/5242/adding-users-to-azure-sql-databases/
或者是否有更好的建议如何创建 SQL 用户?
谢谢
在 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 的输出行为不同?
我正在尝试使用 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 应用程序网关创建一个模块。
我想使用内联块 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 在 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
使用以下应用程序服务定义
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) 我正在尝试将现有资源导入 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 代码,它在应用程序网关后面部署 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
在以下示例中:
我们有这个代码片段:
第57行中, 的值data.azurerm_subscription.primary.id来自哪里?我问是因为第 53 行中的数据块是空的。
我想部署一个 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