DevOps課程-IaC with Terraform 7

Terraform State

ZONGRU Li
Feb 12, 2022

在每次執行Terraform指令的時候,每每都會看到以下:

至於Terraform在哪裡儲存這些State,然後跟我寫的Terraform Code比較呢?

其實就在專案目錄內:

其中第一個terraform.tfstate內儲存了真實的infraStructure

不管執行任何terraform指令,首先都會去更新provider端真實的Resource

將當前真實的infraStructure狀態儲存到terraform.tfstate

當真的執行了變更後,才會再次更新terraform.tfstate

像下面執行apply就順便更新了state:

Refreshing成當前更新後的狀態

接下來就當前的Code再次執行apply:

回頭看看terraform.tfstate:

更新成當前狀態

往下還會看到:

接著再到terraform.tfstate.backup看到前一版的狀態:

所以我自己整理如下

desired state = Code(如前面寫的main.tf)

current state = refresh過的terraform.tfstate

前一版state狀態 = terraform.tfstate.backup

並且關乎state也有相關指令

#查找關於state相關的指令:
terraform state
#例如state中現在有的resources清單:
terraform state list

顯示特定resource的詳細內容

#顯示特定resource的詳細內容:
terraform state show {剛剛list的名稱}

並且此時我將其中一項resource移除:

再次執行apply指令:

terraform apply -auto-approve

此時terraform.tfstate就剩兩個resources:

當前resource清單就變成:

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet