问题标签 [terraform-provider-azure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3164 浏览

terraform - Terraform 数据源含义

我是 Terraform 的新手,并试图了解数据源。我已经阅读了文档和这个 StackOverflow帖子,但我仍然不清楚数据源的用例。

我有以下代码块:

但我收到 404 错误:

  • data.azurerm_resource_group.test:data.azurerm_resource_group.test:resources.GroupsClient#Get:响应请求失败:StatusCode=404 - 原始错误:autorest/azure:服务返回错误。Status=404 Code="ResourceGroupNotFound" Message="找不到资源组'example-resource-group'。"

我不明白为什么找不到资源组。另外,我不清楚数据变量之间的区别以及何时应该使用哪个。

谢谢

0 投票
1 回答
961 浏览

terraform - terraform .% 和 .# 和意义

创建资源并调用 terraform 计划时,我看到如下名称:

我想知道.%.#是什么意思;以及值"" => "1"对标签意味着什么。%

另外,计算的值真正代表什么?

0 投票
1 回答
877 浏览

powershell - 在 Azure 中预配 Windows VM 后更改本地管理员密码

我们正在使用 Terraform 使用来自 Marketplace 的标准 Windows 2016 sku 来配置 Windows VM。我可以在执行 Terraform 配置时以交互方式输入密码,但它仍会将其写入存储在 Azure 存储帐户中的状态文件中。我需要在配置完成后更改密码,并且更愿意在配置过程中以编程方式执行此操作……就像通过 vmextension 执行的 PowerShell 脚本一样。

理想情况下,希望能够在配置过程结束时更改密码并将其写入 Key Vault 中的 Secret。这些虚拟机将加入 AAD 域服务,因此在紧急情况下我们只需要本地管理员密码。

我考虑过执行一个 PowerShell 脚本来生成密码,更改本地帐户的密码,然后使用托管服务身份将其写入 Key Vault 中的秘密,但不确定这是否会在我们的正常流程中工作自动化程序。

我知道我可以Set-AzureRmVMAccessExtension在配置过程之外使用 PowerShell 命令来更改密码,然后在同一个脚本中将新值写入 Key Vault 中的 Secret,但这将是我们配置过程中的半手动步骤。

有人有任何想法或其他有效的建议吗?

0 投票
0 回答
1867 浏览

azure - 使用 terraform 部署 azure 函数

我有一个如何使用 terraform 部署 azure 功能的示例。但是,不幸的是,它只部署了 zip 包。还有其他方法吗?如何将多个包部署到一个函数中?如何使用 terraform 配置代理?

0 投票
1 回答
945 浏览

terraform - Terraform 配置中使用的“protected_settings”是什么

我已经protected_settings在一些示例中看到过使用它们,并且在一些 Terraform 文档中也看到过它们,但我一直无法找到关于它们的用途的良好解释。

0 投票
1 回答
1168 浏览

azure - 授予 Terraform 服务主要贡献者,但从 Key Vault 中删除

我们正在 Azure Government 中构建一个解决方案,我们将使用 Terraform 来部署该解决方案。似乎首选方法是为 Terraform 创建一个服务主体,该服务主体具有订阅范围内的贡献者角色。

我们希望解决的一个问题是,这使服务主体管理平面可以访问 Key Vault……因为它在订阅中。使用 Contributor 角色,服务主体无法创建新的访问策略(将自己或其他人的权限分配给数据平面),但我们正在寻找一种方法可以删除服务主体的任何管理平面权限。

在创建服务主体之前,我们尝试在 Key Vault 上设置只读锁,但该锁不会阻止服务主体获取对 Key Vault 的参与者权限。

除了创建一个新角色之外,除了 Key Vault 之外的所有内容都有贡献者,是否有人有任何创意可以帮助实现这一目标?

0 投票
4 回答
6027 浏览

terraform - Terraform - 在 Azure 上提供静态 IP 地址

我使用 Terraform 已经有一段时间了,并且对它与 VMware 和 Azure 提供商的使用感到满意。

目前,我需要在 Azure 中使用静态 IP 地址预配 VM。试图让他们摆脱静电,但我用了一个安全锤,我无法偏转。

虽然我可以在子网中分配一些并将它们提供给 Terraform(我使用 ansible 来驱动 Terraform),但我想知道是否有人在 Azure 中解决了这个问题并且可能有好的想法。

正如我所看到的,主要问题是并发性。我需要一种在子网中原子地“分配”IP 的方法,并确保即使需要一段时间才能构建 VM 并开始使用该地址,同时运行的其他供应请求也不会得到相同的请求。

在私有数据中心,我会使用 IPAM 解决方案。在 Azure 中,我没有可用的。寻找使用 Azure+Terraform+Ansible 严格实施的想法

0 投票
1 回答
1449 浏览

azure - 适用于 Windows Server 2012 R2 Datacenter VM 上的 SQL Server 2014 在 Azure 上的 Terraform 脚本

我正在尝试使用 Terraform 在 Azure 上的 Windows Server 2012 R2 Datacenter VM 上构建 SQL Server 2014。

这就是我的模块的样子

我正在使用这个 - https://www.terraform.io/docs/providers/azurerm/r/virtual_machine.html作为我要构建的基本模块。

上面的脚本为我启动了虚拟机 2012,但不是 SQL Server。如果你看这张图片,在我的脚本执行完成后,我无法对下面上传的图片中的 SQL Server 配置选项进行微调。 windows 2012 vm上的terraform sql server 2014

如果我从 Azure 门户启动 Windows Server 2012 R2 上的 Same SQL Server 2014 SP2 Enterprise,我可以看到 SQL Server 配置选项。

Azure 门户中的 SQL Server 2014

连同我的 VM,我在我的资源组仪表板上找到了这个扩展,如下图所示,用于使用 Portal 启动的 VM,但如果我使用 Terraform 执行此操作,则该扩展不可用。我试图找到扩展名,但找不到该扩展名。 资源组 - SQL 扩展

此扩展的资源类型和名称是

名称:SqlIaasExtension 资源类型:Microsoft.Compute/virtualMachines/extensions

如果我尝试使用此命令查找 SqlIaasExtension -

我收到“请求 URL 无效”。

如果我在下面尝试这个命令,我会得到一个空数组 []:

有什么方法可以使用 Terraform 在 Azure 上的 Windows Server 2012 R2 Datacenter VM 上启动这个 SQL Server 2014?

之前有人试过吗?

谢谢您的帮助

0 投票
1 回答
543 浏览

azure - Terraform 使用 Azure 服务主体进行身份验证失败

问题

在尝试使用terraform planterraform apply在 Azure 中创建服务主体后,Terraform 会出现以下错误:

provider.azurerm:找不到有效(未过期)的 Azure CLI 身份验证令牌。请运行az login

重现步骤

通过 . 在 Azure 中创建服务主体az ad sp create-for-rbac

将服务主体配置作为提供程序块添加到您的.tf文件中:

尝试运行terraform plan

0 投票
0 回答
417 浏览

azure - 对多个 VM 使用虚拟机扩展

使用 Terraform,是否可以创建单个虚拟机扩展并将其用于多个 VM?当我销毁(使用 Terraform)我使用扩展的 VM 之一时会发生什么?

更新:我能够确定你不能做我想做的事,即创建一个 CSE 并将它用于多台机器。CSE 的属性之一是计算机的名称,如果您在创建 CSE 后更改它,它将重新创建 CSE。不是我正在寻找的行为。