我需要传递给Terraform应用特定的环境变量,如dev,prod,从 *.tfstate文件登台。到目前为止,我所做的是为它们创建3个工作区和变量。在variables.tf文件中,我有:
我的文件夹结构是:
dev.tfvars
prod.tfvars
staging.tfvars
main.tf
variables.tf
variables.tf
variable "env_dev" {
type = string
}
variable "env_prod" {
type = string
}
variable "env_staging" {
type = string
}
在 *.tfvars for dev,prod and staging中,我有:
env_dev = "dev"
env_prod = "prod"
env_staging = "staging"
我想要实现的是为特定环境更新lambda别名,而不是同时更新所有的lambda别名:
resource "aws_lambda_alias" "prod_lambda_alias" {
name = var.env_dev
description = "Release candidate -"
function_name = var.function_name
function_version = aws_lambda_function.payload.version
}
resource "aws_lambda_alias" "dev_lambda_alias" {
name = var.env_dev
description = "Release candidate - "
function_name = var.function_name
function_version = var.function_version != "" ? var.function_version : "$LATEST"
}
resource "aws_lambda_alias" "staging_lambda_alias" {
name = var.env_staging
description = "Release candidate - "
function_name = var.function_name
function_version = aws_lambda_function.payload.version
}
对于要为特定工作空间使用导出的管道,下面是针对dev的:
export TF_WORKSPACE=dev
然后使用Terraform应用如下应用更改:
terraform apply plan.out
我想只对特定资源应用更改。示例:如果我想更新dev“resource aws_lambda_alias”“dev_lambda_alias”,只更新其中一个资源,而不更新其他2个资源,用于生产和暂存。
问候
1条答案
按热度按时间yrdbyhpb1#
如果别名的名称将与工作区的名称相同,则应该这样做:
有关terraform.workspace语法的更多信息可以在文档中找到。