Terraform中输入变量

Terraform中输入变量

[1]翻译自官网

把所有的信息,如access_key等全部硬编码显然是不安全的。因此需要能够参数化配置。

变量定义

首先需要先定义(声明)变量,放到一个.tf文件中,如:

variable "access_key" {}
variable "secret_key" {}
variable "region" {
  default = "us-east-1"
}

上面定义了三个变量。前两个变量是空的,第三个给了一个默认值(默认参数)。此时运行terraform plan,Terraform会提示输入这些尚未定义的变量。

在配置中使用变量

变量定义好后,就可以引用这些变量来进行Terraform的配置,如:

provider "aws" {
  access_key	=	"${var.access_key}"
  secret_key	=	"${var.secret_key}"
  region		=	"${var.region}"
}

引用变量,使用${var.xxx}的形式。

变量赋值

前面我们声明了变量,但是还没有给变量赋值,无法真正使用。给变量赋值,有以下几种方法,下面几种方法按照变量赋值的优先顺序排序。

  1. Command-line flags

    使用terraform的各种命令时,使用-var选项,可以在后面直接跟变量的定义,如:

    	# terraform apply \
    	  -var 'access_key=foo' 
    	  -var 'secret_key=bar'
    	# ...
    

    以这种方式赋值变量是一次性的,并不会保存它们的值,也就是说下一次重新执行命令时,需要重新赋值。

  2. 从文件导入

    为永久性存储一个变量的值,可以将其放在文件中保存。Terraform会自动加载当前目录下扩展名为.tfvars.auto.tfvars的文件来填充定义的变量。如果以其他格式存放,可以使用-var-file选项来手动指定需要加载的变量值文件。这些文件使用Terraform格式或JSON格式。

    使用文件也方便版本控制,但是用户名、密码这种东西就不要用版本控制管理的。因此可以将用户名和密码这类信息单独放在一个文件中,使用-var-file来手动指定。其他的,可以自动填充,方便使用版本控制管理的,可以直接放在.tfvars文件中,Terraform会自动加载。

  3. 环境变量

    Terraform会读取TF_VAR_name这种格式的环境变量,用来填充定义好的变量。比如,环境变量中有一个TF_VAR_access_key的变量,Terraform就会读取到,并用于填充access_key变量。

  4. default值

    如果某个变量没有采用以上任何一种方法来进行赋值,那么如果在变量的定义中有个default属性,那么Terraform就会使用default的值来对变量进行赋值。

  5. 交互输入

    没有使用任何方法来对变量赋值,在输入命令时使得Terraform不知道如何处理,此时就会出现交互界面,让用户手动输入变量值,来给变量赋值。

转载于:https://my.oschina.net/u/2561528/blog/1933533

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值