当前位置:首页 >> 硬件技术 >> 【Terraform学习】本地变量(Terraform配置语言学习),索尼dsct100

【Terraform学习】本地变量(Terraform配置语言学习),索尼dsct100

cpugpu芯片开发光刻机 硬件技术 1
文件名:【Terraform学习】本地变量(Terraform配置语言学习),索尼dsct100 【Terraform学习】本地变量(Terraform配置语言学习) 背景:

关于如何在机器上拉terraform代码,初始化就不重复了,需要的可以查看前面的文章:

【Terraform学习】Terraform-AWS部署快速入门(快速入门)_向往风的男子的博客-CSDN博客

使用本地变量命名资源

将每个配置的共享部分设置为重复使用的本地值,减少重复并使此配置更清晰。

通过将以下代码段粘贴到main.tf顶部来定义本地变量。

locals {name_suffix = "${var.resource_tags["project"]}-${var.resource_tags["environment"]}"}

在任何Terraform配置中一样,配置的显示顺序不会影响Terraform解释配置的方式。

现在更新配置中的属性以使用此新的本地值。

module "vpc" {source = "terraform-aws-modules/vpc/aws"version = "2.66.0"- name = "vpc-${var.resource_tags["project"]}-${var.resource_tags["environment"]}"+ name = "vpc-${local.name_suffix}"## ...}module "app_security_group" {source = "terraform-aws-modules/security-group/aws//modules/web"version = "3.17.0"- name = "web-sg-${var.resource_tags["project"]}-${var.resource_tags["environment"]}"+ name = "web-sg-${local.name_suffix}"## ...}module "lb_security_group" {source = "terraform-aws-modules/security-group/aws//modules/web"version = "3.17.0"- name = "lb-sg-${var.resource_tags["project"]}-${var.resource_tags["environment"]}"+ name = "lb-sg-${local.name_suffix}"## ...}module "elb_http" {source = "terraform-aws-modules/elb/aws"version = "2.4.0"# Ensure load balancer name is unique- name = "lb-${random_string.lb_id.result}-${var.resource_tags["project"]}-${var.resource_tags["environment"]}"+ name = "lb-${random_string.lb_id.result}-${local.name_suffix}"## ...}

请注意,负载均衡器名称包含一个随机字符串,以便这些名称是唯一的,这是 AWS 中负载均衡器名称的要求。

应用配置以验证名称的值是否未更改。

terraform apply


将变量与局部值组合

与变量值不同,局部值可以使用动态表达式和资源参数。

许多项目要求以某种方式标记所有资源以跟踪它们。要强制实施此要求,请将本地值与变量结合使用,以便分配给资源的标签至少包括项目名称和环境。

将以下新变量定义添加到variables.tf。

variable "project_name" {description = "Name of the project."type = stringdefault = "my-project"}variable "environment" {description = "Name of the environment."type = stringdefault = "dev"}

接下来,将变量resource_tags的默认值更改为空映射。

variable "resource_tags" {description = "Tags to set for all resources"type = map(string)- default = {- project = "my-project",- environment = "dev"- }+ default = { }}

添加新块locals以创建所需标签和用户定义标签组合。

locals {required_tags = {project = var.project_name,environment = var.environment}tags = merge(var.resource_tags, local.required_tags)}

可以在单个块中定义配置本地值,也可以使用多个locals块。

更新局部变量的定义以使用新变量。

locals {- name_suffix = "${var.resource_tags["project"]}-${var.resource_tags["environment"]}"+ name_suffix = "${var.project_name}-${var.environment}"}

然后,更新main.tf中的tags引用,以使用新的本地值。

- tags = var.resource_tags+ tags = local.tags## ... replace all five occurrences of `tags = var.resource_tags`

最后,向output.tf文件添加一个名为tags的输出。此输出将显示您在此配置中使用的标签。

output "tags" {value = local.tags}

现在,应用这些更改以查看每个资源的标签。

terraform apply

接下来,运行另一个 apply,这次将环境更改为prod。

terraform apply -var "environment=prod"

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接