这一章笔记总结一下变量在Terraform里面的定义和使用。
变量在Terraform里面可以通过多种方式来定义:
- 系统的环境变量
- 命令行里面指定
- 从文件里面指定
- 从variable default的值指定
下面来看几个例子
例1 我创建一个EC2, 把一个自定义的变量传给我的 instance_type
在terraform,我们可以额外创建一个文件叫做 variables.tf, 在里面声明我们的变量值,然后就可以从主文件里面去直接调用里面的值了
我们的主文件 first_ec2.tf
我们的变量文件 variables.tf, 里面我设置了默认值
可以看见执行的时候,他自动就替换成了我们的默认值
例2 我在执行命令行的时候,可以直接用参数指定新的内容, 这样他就替换了我的默认值
例3 我创建一个新的文件 terraform.tfvars, 然后在这里面指定我的值
执行的时候,他会自动调用 terraform.tfvar 文件的内容赋值给我们的变量,结果如下所示 ( 效果和default类似)
注意,如果我既不设置default,也没配置 terraform.tfvar 文件,那么他在配置的时候会自动提示用户手动输入变量值
例4 我从指定的var 文件里面获取参数的值
我新建一个 custom.tfvars 文件,如下所示
这个文件他默认不会加载,需要我们手动加载,这样的好处是针对不同的环境,我们可以加载不同的tfvars文件来传递变量值
例5 环境变量中定义,windows 可以用 setx, Linux可以用 export 命令
我用的是windows
然后重新打开一个cmd窗口查看一下
例6 在variables.tf 文件里面定义变量的时候,指定变量的类型,他一般包括 string, list, map 和number四种类型,理解起来就是字符串,列表(数组),字典和数字
下面的例子里 我创建了一个ELB
定义的变量名和类型
赋值
执行即可