每個基礎架構和應用程序都有一個單獨的狀態文件是有意義的。
是否有任何現有的工具(內置或不是)來幫助?有點像terraform狀態mv但tfstates之間?
沒有,據我可以告訴。將共享部分(例如ECS羣集,ALB,網絡配置,iam角色等)移出到單獨的項目/存儲庫中。
當使用S3作爲國家後端您可以爲您的基礎架構和應用程序狀態不同的路徑,例如:
/infrastructure/nonprod/terraform.tfstate
/infrastructure/prod/terraform.tfstate
/apps/app1/test/terraform.tfstate
/apps/app1/uat/terraform.tfstate
/apps/app1/prod/terraform.tfstate
當你想將應用程序部署到測試或UAT您只需通過提供路徑到非督促S3狀態調用terraform init
在你的基礎設施項目terraform apply
之前。然後通過提供TEST或UAT路徑的路徑,在您的應用程序terraform config上調用terraform init
。
理想情況下,你可以創建自己的shell腳本來提供和部署應用程序。然後,在您最喜歡的配置項中,您可以創建一條管道來調配基礎架構並根據需要部署應用請確保您參數這些腳本,所以你可以通過你想要的環境,提供或應用程式哪個要部署,例如:
./my-shared-infrastructure/provision-infrastructure.sh nonprod
./my-app-1/deploy-application.sh uat v1.0
我有興趣的工具,如果有is.I傾向於使用terraform rm和terraform導入到另一個狀態文件。或者複製狀態文件並放棄你不需要的東西。取決於你在這裏管理多少資源 –
d1ll1nger
嗯,我認爲這對腳本沒有什麼不好,我們會'使狀態列表變爲',然後用'rm' +'import'循環... – munchybunch
不錯,但我想這個問題是無法導入的資源,例如路由表中的單個路由(上次我檢查過的時候無法進行) – d1ll1nger