我正在从terraform文档中查看此示例以创建一个天蓝色的组:
resource "azurerm_resource_group" "test" {
name = "testResourceGroup1"
location = "West US"
tags = {
environment = "Production"
}
}
它没有在任何地方指定订阅。
如何指定订阅?
答案 0 :(得分:1)
对于您的问题,您知道Terraform通过Azure CLI部署Azure资源。身份验证有四种方法。
Authenticating to Azure using the Azure CLI
Authenticating to Azure using Managed Service Identity
Authenticating to Azure using a Service Principal and a Client Certificate
Authenticating to Azure using a Service Principal and a Client Secret
如果未在Terraform代码中设置租户ID和订阅ID,则默认情况下必须使用第一种方法。然后,您可以使用登录CLI的帐户通过Azure CLI进行身份验证。因此,您要在CLI中设置哪个订阅,然后将其用于Terraform。
但正如Terraform建议:
我们建议使用服务主体或托管服务 非交互运行Terraform时的身份(例如 在CI服务器上运行Terraform)-并使用Azure进行身份验证 在本地运行Terraform时的CLI。
以便您可以根据需要为服务主体授予更适当的权限。
答案 1 :(得分:0)
在将Terraform配置为登录Azure时设置了订阅。推荐的方法是使用Azure AD服务主体和环境变量。
要配置Terraform使用您的Azure AD服务主体,请设置以下环境变量,然后由Azure Terraform模块使用。如果使用Azure公共以外的Azure云,还可以设置环境。
ARM_SUBSCRIPTION_ID
ARM_CLIENT_ID
ARM_CLIENT_SECRET
ARM_TENANT_ID
ARM_ENVIRONMENT