Terraform中輸入變量

Terraform中輸入變量

[1]翻譯自官網html

把全部的信息,如access_key等所有硬編碼顯然是不安全的。所以須要可以參數化配置。安全

變量定義

首先須要先定義(聲明)變量,放到一個.tf文件中,如:app

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

上面定義了三個變量。前兩個變量是空的,第三個給了一個默認值(默認參數)。此時運行terraform plan,Terraform會提示輸入這些還沒有定義的變量。ide

在配置中使用變量

變量定義好後,就能夠引用這些變量來進行Terraform的配置,如:編碼

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

引用變量,使用${var.xxx}的形式。翻譯

變量賦值

前面咱們聲明瞭變量,可是尚未給變量賦值,沒法真正使用。給變量賦值,有如下幾種方法,下面幾種方法按照變量賦值的優先順序排序。版本控制

  1. Command-line flagscode

    使用terraform的各類命令時,使用-var選項,能夠在後面直接跟變量的定義,如:orm

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

    以這種方式賦值變量是一次性的,並不會保存它們的值,也就是說下一次從新執行命令時,須要從新賦值。htm

  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不知道如何處理,此時就會出現交互界面,讓用戶手動輸入變量值,來給變量賦值。

相關文章
相關標籤/搜索