乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
Terraform 0.1 Variables
2023-10-04 12:53:53
40
0
0
admin
> 输入参数/输出结果/本地变量 # Input Variables ## 类型 ``` #string,number,bool #list(<TYPE>) #set(<TYPE>) #map(<TYPE>) #object({<ATTR NAME> = <TYPE>, ... }) #tuple([<TYPE>, ...]) #官方例子 variable "image_id" { type = string description = "xxxxx" #可选 sensitive = true #可选 plan/apply 的时候不显示出来 nullable = false #可选 不允许为空 validation { #检查input 是否符合条件 condition = length(var.image_id) > 4 && substr(var.image_id, 0, 4) == "ami-" error_message = "The image_id value must be a valid AMI id, starting with \"ami-\"." } } variable "availability_zone_names" { type = list(string) default = ["us-west-1a"] } variable "docker_ports" { type = list(object({ internal = number external = number protocol = string })) default = [ { internal = 8300 external = 8300 protocol = "tcp" } ] } ``` ##使用方式 ###命令行参数 ``` terraform apply -var="image_id=ami-abc123" terraform apply -var='image_id_list=["ami-abc123","ami-def456"]' -var="instance_type=t2.micro" terraform apply -var='image_id_map={"us-east-1":"ami-abc123","us-east-2":"ami-def456"}' ``` ###文件 写在.tfvars 后缀的文件中 ``` cat testing.tfvars image_id = "ami-abc123" availability_zone_names = [ "us-east-1a", "us-west-1c", ] terraform apply -var-file="testing.tfvars" ``` ###环境变量 设置TF_VAR_ 前缀的环境变量 ``` export TF_VAR_image_id=ami-abc123 export TF_VAR_availability_zone_names='["us-west-1b","us-west-1d"]' terraform plan ``` ###var 生效顺序(后面的覆盖前面的) ``` 1. 环境变量 2. terraform.tfvars 文件 3. *.auto.tfvars / *.auto.tfvars.json 文件 4. -var -var-file 设置的 ``` # Output Variables 可以用于子模块返回变量给父模块 ``` output "instance_ip_addr" { value = aws_instance.server.private_ip description = "xxx" sensitive = true } ``` # Local Variables 只能在同一个模块内使用 ``` locals { service_name = "forum" owner = "Community Team" } locals { # Common tags to be assigned to all resources common_tags = { Service = local.service_name Owner = local.owner } } resource "aws_instance" "example" { # ... tags = local.common_tags } ```
上一篇:
Terraform 0.0 基础
下一篇:
Terraform 0.9 移动资源
文档导航