DevOps課程-IaC with Terraform 10
每次執行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宣告default的region,參考:
所以現在我的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