最近很常寫 Terraform ,知道一些 terraform cli 指令可以幫助自己寫的更好,也在學習 Terraform 的過程中,把覺得值得記錄的一些注意事項 & 小技巧留在這裡。


基礎知識- mac 增加和刪除環境變數

# 查看環境變數
env

# 新增環境變數,例如設定環境變數 TF_LOG ,值為 INFO
export TF_LOG=INFO

# 刪除環境變數
unset TF_LOG

Terraform 排版

自動格式化程式碼工具 terraform fmt 會自動處理排版風格,但只會 format 當前層 folder 內的 .tf 檔。

terraform fmt -recursive

可以遞迴排版所有 folder 的 .tf 檔,強烈建議在 git commit 前可以做一次。


Terraform 輸出 state file 裡的值

Terraform 有 output.tf file,我們可以用 terraform output 檢查是不是我們要的值。

terraform output public_ip
echo $(terraform output public_ip) # ex: "18.118.18.111"

terraform output -raw public_ip
echo $(terraform output public_ip) # ex: 18.118.18.111 , 沒有刮號

Terraform log

若要 Terraform 顯示 log ,要設置環境變數為:

export TF_LOG="TRACE"
terraform apply -no-color 2>&1 | tee apply.txt

也可以使用環境變數預設 log 文件位置

export TF_LOG_PATH="./terraform.log"

Terraform state rm

可以從 Terraform 管理的狀態中移除指定的資源,使其不再由 Terraform 管理。這個命令可以在 Terraform 設定中刪除資源,而不會刪除實際的基礎設施資源。

terraform state rm aws_instance.example

這個命令會從狀態檔案中移除 aws_instance.example 資源,並將其從 Terraform 的管理範圍中移除。

這個命令可以在需要刪除不需要的資源,或者修復狀態檔案中的錯誤時使用。