Terraform-如何映射不同的azure环境变量文件



我有以下两个环境地形文件

  1. devenv_variables.tvars
  2. 测试环境变量.tfvars

这里是devenv_variables.tvars

location            = "westeurope"
resource_group_name = "devenv-cloudresources-rg"

这是testenv_variables.tvars

location            = "westeurope"
resource_group_name = "testenv-cloudresources-rg"

这是我的main.tf

# Configure the Microsoft Azure Provider
provider "azurerm" {
version = "=2.0.0"
features {}
subscription_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
provider "azurerm" {
alias  = "testenv"
subscription_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

# Create a resource group
resource "azurerm_resource_group"  {
provider = "azurerm.testenv" //How do I pass provider based on variables here?
name     = "${var.resource_group_name}" 
location = "${var.location}"
}

我的要求是,基于传递的tfvar文件作为参数,它应该选择订阅。

terraform apply  -var-file="devenv_variables.tfvars"

当我键入以下命令时,资源应在测试环境中创建

terraform apply  -var-file="testenv_variables.tfvars"

我想,我需要定义客户端id和密码来登录到各自的订阅。

tfvars文件应仅包含变量的。变量的声明应发生在常规tf文件中。

variables.tf

variable "location" { 
type = "string"
description = "The azure location where the resources is created"
}

devenv_variables.tfvars

location     = "West Europe"

本教程还可以帮助您提供更多信息和示例。

您所要做的就是在两个文件中创建相同的变量名。当您运行命令terraform plan–var-file='variable's_file_name'&terraform apply–var-file='variable's_file_name'在这一点上,地形将从不同的文件中获得不同的值。

用于演示

variable.tf(包含所有变量(

variable "resource_group" {
type = string
description = "Resource Group"
default = ""
}

dev.tfvars(包含开发变量的值(

resource_group="name_of_my_resource_group_dev"

prod.tfvars(包含生产变量的值(

resource_group="name_of_my_resource_group_prod"

现在,当您运行命令terraform plan–var-file='dev.tfvars'时,它会从dev.tfvars文件中获取值。

最新更新