我們有一些 terraform 配置,我們使用 s3 作為后端。我們有多個 AWS 賬戶,每個環境對應一個賬戶。
在所有環境和跨多個區域中,我們使用了不同的 s3 存盤桶和 dynamodb_table 名稱,截至目前,這些名稱不遵循有效約定,并且很難從其名稱中識別存盤桶的用途。我們現在想要為所有 s3 terraform 狀態存盤桶遵循基于約定的命名。為此,我需要將現有 terraform 資源的狀態遷移到新的 s3 存盤桶。
我不確定實作這一目標的最佳方法是什么,而不必在舊狀態存盤桶上運行銷毀并應用到新存盤桶上。
我能想到的一些選項如下,但我不確定它們是否正確。
- 重命名 s3 存盤桶:我知道這是不可能的(或者是嗎?)
- 移動 s3 存盤桶:此處提到了重命名的解決方案。不確定這種方法是否會干擾我們的設定。
- 狀態遷移:terraform 源代碼受 Git 控制,但
.terraform不是。因此,我可以使用新存盤桶對源代碼進行更改,提交它并從此提交創建一個新的 git 標簽。現在,在實際進行遷移時,我會檢出在我的環境中使用的舊 git 標簽,運行terraform init,檢出新的 git 標簽并terraform init再次運行,理想情況下會詢問我是否要進行遷移并執行必要的操作。這個程序類似于 terraform在這里建議的內容,但我不確定的是,這種方法是否適用于我期望做的那種運動。
PS:我假設重命名 DynamoDB 表或僅使用新表而不是舊表可以開箱即用,因為我將確保在進行狀態遷移時,我沒有任何正在進行的實時 terraform 運行。
uj5u.com熱心網友回復:
您是否嘗試將 StateFile 從舊存盤桶復制到新存盤桶,然后在 terraform 后端配置中更改 S3 存盤桶
uj5u.com熱心網友回復:
將您的 Terraform 狀態檔案移動到新的 S3 存盤桶,然后bucket將 S3 后端配置中的引數更改為指向該存盤桶。
如果您只想移動狀態檔案的位置,則無需執行任何其他操作 - 這就像更改應用程式的位置,然后將快捷方式指向新位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/339539.html
