在具有Terraform的订阅下创建一个Azure资源组

时间:2019-03-10 21:07:16

标签: azure terraform

我正在从terraform文档中查看此示例以创建一个天蓝色的组:

resource "azurerm_resource_group" "test" {
  name     = "testResourceGroup1"
  location = "West US"

  tags = {
    environment = "Production"
  }
}

它没有在任何地方指定订阅。

如何指定订阅?

2 个答案:

答案 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

Reference