我正在查看Terraform Docs创建Azure组的示例:
resource "azurerm_resource_group" "test" {
name = "testResourceGroup1"
location = "West US"
tags = {
environment = "Production"
}
}
它没有在任何地方指定订阅。
如何指定订阅?
在您的问题上,您知道Terraform通过Azure CLI部署Azure资源。
有四种方法可以进行身份验证。使用Azure Cli
对Azure进行身份验证使用托管服务身份
对Azure进行身份验证使用服务主体和客户证书对Azure进行身份验证
使用服务主体和客户秘密
对Azure进行身份验证如果未在Terraform代码中设置租户ID和订阅ID,则必须在默认情况下使用第一个方法。您可以通过Azure CLI进行身份验证,并使用您登录Azure CLI的帐户。因此,您在CLI中设置了哪种订阅,然后将其用于Terraform。
,但按照Terraform的建议:
我们建议使用服务本金或托管服务 非交互运行地Terraform时的身份(例如 在CI服务器中运行Terraform) - 并使用Azure进行身份验证 当地运行Terraform时的CLI。
,您可以根据需要授予服务原理的更合适的许可。
当您配置Terraform登录到Azure时,将设置订阅。推荐的方法是使用Azure AD服务原理和环境变量。
要配置Terraform以使用您的Azure AD服务主体,请设置以下环境变量,然后由Azure Terraform模块使用。如果与Azure Public以外的Azure Cloud一起工作,您也可以设置环境。
-
ARM_SUBSCRIPTION_ID
-
ARM_CLIENT_ID
-
ARM_CLIENT_SECRET
-
ARM_TENANT_ID
-
ARM_ENVIRONMENT
参考