前面的範例,所有的設定都是寫死的
要讓 terraform 組態檔能重複使用,並適合放入版本控制裡, 我們需要參數化一些組態資料。
Terraform 有「輸入變數」 (Input Variables) 的功能,讓我們宣告變數。
在任何 .tf
檔案都可以宣告變數。
如果想要讓檔名好辨識,建議用 variables.tf
當做檔名。
輸入變數使用 variable
區塊宣告變數,如下:
variable "aws_region" {
type = string
description = "AWS region to launch servers."
default = "ap-northeast-1"
}
variable "my_ip" {
type = string
description = "my ip to allow ssh connection"
}
variable
的引數:
什麼事都不做的話,在 plan
或是 apply
時,會要求你輸入資料,如下:
$ terraform plan
var.my_ip
my ip to allow ssh connection
Enter a value:
當然沒有人想一直打字,這很累人,我們來看看有什麼方法可以使用。
-var
參數想要在輸入指令時帶入資料,要加上 -var
參數,如下:
$ terraform plan -var="my_ip=1.1.1.1"
.tfvars
建立 .tfvars
檔案,並在輸入指令時,加上 -var-file
參數,如下:
testing.tfvars
ami = "ami-0461b11e2fad8c14a"
my_ip = 1.1.1.1
$ terraform apply -var-file="testing.tfvars"
如果符合以下幾個檔名規則,Terraform 則會自動讀取內容
terraform.tfvars
*.auto.tfvars
Terraform 會搜尋以 TF_VAR_
開頭宣告的環境變數來使用
$ export TF_VAR_my_ip=1.1.1.1
$ terraform plan
Terraform 載入變數的順序如下,較晚載入的會覆蓋前面的:
terraform.tfvars
*.auto.tfvars
-var
或是 -var-file
參數