DevOps課程-IaC with Terraform 10

Environment Variables in Terraform

ZONGRU Li
Feb 12, 2022

每次執行Code最重要的前面一定要宣告到連到AWS的憑證資訊:

但是以明碼方式會有疑慮,所以要考慮用別的方式,不要直接寫死

1.可以在執行指令的cmd內先宣告環境變數

#windows cmd下,用以下方是宣告ENV:
SET KET=VALUE
#這邊實際宣告以下(這個key名稱可自行看/USER_HOME/.aws/credentials內):
SET AWS_SECRET_ACCESS_KEY={值}
SET AWS_ACCESS_KEY_ID={值}
#其他terminal用以下方是:
export KET=VALUE

就可以移除那兩行Code:

此時再次執行apply指令:

可以正常運作!

這邊暫時給no:

但是以上僅僅在那一個CMD內生效

#windows cmd可以透過以下指令查找宣告的AWS憑證ENV:
set | FINDSTR AWS

我如果另外再開一個CMD可能就:

但是我們有這個:

2.亦即可以透過AWS CLI工具建立的憑證檔

AWS CLI工具透過以下指令建立

aws configure

也可以直接給Terraform直接參照!

如下這個CMD是沒有宣告到ENV的執行apply指令:

這是因為Terraform也會參照到以下檔案:

也就是事前還要安裝好AWS CLI工具!

至於可能會好奇其他provider有無類似的串接憑證方式

例如Jenkins:

另外要提到的是以下這行

變成這樣:

要移除region設定則要另外依靠ENV宣告defaultregion,參考:

link

所以現在我的Code長這樣:

在宣告了預設的資料中心後

#宣告AWS的預設資料中心為ENV:
SET AWS_DEFAULT_REGION=ap-northeast-1

也仍可以執行apply指令:

把環境變數當作Terraform Variables:

在環境變數上,Terraform還有進階使用法,可以拿來當變數

#例如在環境上宣告以下變數後(例如:windows cmd):
SET TF_VAR_{變數名稱}={值}
#例如:
SET TF_VAR_avail_zone=ap-northeast-1a
#注意如果是其他系統在宣告值的部分可能要雙引號,類似:
export TF_VAR_avail_zone="ap-northeast-1a"
則在Code裡面可以直接拿到{變數名稱}的值

然後就可以直接在Code宣告這個變數:

接著一樣可以執行apply:

甚至用此方式快速切換zone:

此時Code(main.tf)如下:

變數檔Code(terraform-dev.tfvars)沒變:

另外記得現在起要另外宣告:

#宣告AWS的預設資料中心為ENV:
SET AWS_DEFAULT_REGION=ap-northeast-1
#跟上述Code要用到的變數:
SET TF_VAR_avail_zone=ap-northeast-1a

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet