Terraform - 命令
調試
terraform fmt
格式化當前目錄的tf文件內容格式,并列出已進行格式化的文件列表
-diff選項,顯示格式更改的差異
-recursive選項,在所有子目錄遞歸執行
terraform validate
驗證配置的語法有效性,檢查和定位錯誤出現的詳細位置和原因
-json選項,以json格式顯示結果
默認在當前目錄中查找配置
terraform console
啟用交互控制臺,可用于評估和驗證表達式
查看
terraform providers
輸出關于當前配置中使用的云提供商的信息
terraform graph
輸出當前配置定義的資源關系
可以對指定的目錄執行
輸出為DOT格式,可以通過GraphViz生成圖表然后用瀏覽器打開,terraform graph | dot -Tsvg > graph.svg
-draw-cycles選項,用顏色標亮依賴中循環的部分,有助于分析循環出現的問題
-module-depth選項,設置輸出中模塊的深度,默認情況下這是-1,顯示所有
-type選項,輸出依賴圖內容的類型
terraform show
資源的展示,查看當前狀態或者檢查計劃內容
展示當前state中所有被管理的資源及其所有屬性值
-json選項,以json格式顯示結果
terraform output
用于從狀態文件中查看輸出變量的值
配置output.tf文件后,執行terraform apply命令,output的內容自動顯示出來
可以指定提取指定變量的值
-json選項,輸出的格式為JSON對象
關鍵操作
terraform init
初始化包含terraform配置文件的工作目錄
如果不指定目錄,默認為當前目錄
在空目錄下,因為找不到任何配置信息,執行terraform init時會報錯
可以對空目錄使用-from-module=MODULE-SOURCE選項運行init,在這種情況下,指定的模塊將被復制到目標目錄中
-plugin-dir選項,跳過安裝插件的步驟,從指定的PATH目錄下加載插件
執行時依照 *.tf文件中的配置下載相應的插件,存放在新生成的 .terraform 目錄
terraform plan
對配置中所定義資源的預覽,不對實際資源或狀態進行更改
- 默認為當前目錄執行,可以指定目錄
- 預覽的最后部分會輸出資源變化add、change和destory的統計數目
- 預覽信息前的+代表新添加的資源,當銷毀資源時對應的符號會變為-;
- 更改一些參數需要重新部署資源時,該資源前面的符號為-/+;
- 在舊參數和新參數內容之間有→符號標識。
- -target選項,可用來將Terraform的注意力集中在資源的一個子集上
主要用于以下幾個場景:
- 預覽當前配置中定義的資源是否符合管理預期
- 如果當前配置已經存在對應的state文件,將會展示配置定義與state文件內容的diff結果,如果有變更,會將結果在下方顯示出來
- 對DataSource而言,執行plan命令可直接獲取并輸出所要查詢的資源及其屬性。
terraform apply
用于實際資源的新建和變更操作
在命令運行過程中需要手動確認是否繼續
可以通過--auto-approve參數來跳過人工確認的過程
創建資源的同時會在當前目錄中生成一個狀態文件 terraform.tfstate, 執行結果會保存這個標準的JSON 文件中。
適用于以下幾種場景:
- 創建新的資源
- 通過修改模板參數來修改資源的屬性
- 如果從當前模板中刪除某個資源的定義,會將該資源徹底刪除。可以理解為“資源的移除也是一種變更”
terraform state
用來操作狀態文件
terraform state list 按照 <資源類型>.<資源名稱> 的格式列出當前state中存在的所有資源
terraform state show 按照Key-Value的格式展示出特定資源的所有屬性及其值,格式為 terraformstate show <資源類型>.<資源名稱>
terraform state pull 獲取當前state內容并展示
terraform state rm 將state中的某個資源移除,但實際上并不真正刪除這個資源
terraform refresh
刷新當前State的內容,用于檢測不一致的內容并更新狀態文件,也就是再次拉取最新的數據寫入到state文件中。
terraform import
用于將資源導入到terraform state中,進而加入到Terraform的管理中
terraform destroy
用于對資源的釋放操作,謹慎使用!!!
在命令執行過程中需要手動確認的過程
可以通過--force參數來跳過手動確認過程
默認會釋放當前配置中定義的所有資源
可以通過選項-target=<資源類型>.<資源名稱>來指定釋放特定的資源
工作區
terraform workspace
用于管理工作區
terraform workspace new [NAME] 創建一個新的工作區
terraform workspace list 列出現有的工作區,使用星號*標記指示當前工作區
terraform workspace select [NAME] 選擇一個要操作的工作區
terraform workspace delete [NAME] 刪除已有的工作區
terraform workspace show 輸出當前工作區的名字
行動是絕望的解藥!
歡迎轉載和引用,但請在明顯處保留原文鏈接和原作者信息!
本博客內容多為個人工作與學習的記錄,少數內容來自于網絡并略有修改,已盡力標明原文鏈接和轉載說明。如有冒犯,即刻刪除!
以所舍,求所得,有所獲,方所成。

浙公網安備 33010602011771號