То, что вы пытаетесь сделать, - это действительно правильный подход. Вам также придется использовать рабочие пространства terraform .
Terraform запускается с одного рабочего пространства с именем «default». это
рабочее пространство является особенным, потому что это по умолчанию, а также потому, что
это никогда не может быть удалено. Если вы никогда не использовали явно рабочие пространства,
тогда вы работали только с рабочим пространством по умолчанию.
Рабочие пространства управляются с помощью набора команд terraform workspace.
Чтобы создать новое рабочее пространство и переключиться на него, вы можете использовать terraform
рабочее пространство новое; для переключения среды вы можете использовать рабочее пространство Terraform
Выбрать; и т.д.
По сути это означает, что у вас будет рабочее пространство для каждой имеющейся у вас среды.
Посмотрим на некоторые примеры.
У меня есть следующие файлы:
- main.tf
- variables.tf
- dev.tfvars
- production.tfvars
main.tf
Этот файл содержит модуль VPC 9 Может быть любым ресурсом c). Мы называем переменные через var. Функция:
module "vpc" {
source = "modules/vpc"
cidr_block = "${var.vpc_cidr_block}"
subnets_private = "${var.vpc_subnets_private}"
subnets_public = "${var.vpc_subnets_public}"
}
variables.tf
Этот файл содержит все наши переменные. Пожалуйста, не делайте, чтобы мы не присваивали здесь default , это обеспечит 100% уверенность в том, что мы используем переменные из файлов .tfvars.
variable "vpc_cidr_block" {}
variable "vpc_subnets_private" {
type = "list"
}
variable "vpc_subnets_public" {
type = "list"
}
Вот и все. Наш файл .tfvars будет выглядеть так:
dev.tfvars
vpc_cidr_block = "10.40.0.0/16"
vpc_subnets_private = ["10.40.0.0/19", "10.40.64.0/19", "10.40.128.0/19"]
vpc_subnets_public = ["10.40.32.0/20", "10.40.96.0/20", "10.40.160.0/20"]
production.tfvars
vpc_cidr_block = "10.30.0.0/16"
vpc_subnets_private = ["10.30.0.0/19", "10.30.64.0/19", "10.30.128.0/19"]
vpc_subnets_public = ["10.30.32.0/20", "10.30.96.0/20", "10.30.160.0/20"]
Если я хочу запустить terraform для моей среды разработки, я бы использовал эти команды (при условии, что рабочие пространства уже созданы, см. Документы рабочей области Terraform ):
- Выберите среду разработки:
terraform workspace select dev
- Запустите план, чтобы увидеть изменения:
terraform plan -var-file=dev.tfvars -out=plan.out
- Применить изменения:
terraform apply plan.out
Вы можете повторить это для любого количества окружений.