[解決済み] .tfstateファイルはGitにコミットすべきですか?
質問
をコミットするかどうかという質問について、少し迷っています。
.tfstate
ファイルを Git にコミットするかどうかという問題について、少し困惑しています。その
Terraformのドキュメント
にはこう書かれています。
Terraformはまた、いくつかのステートを
terraform.tfstate
ファイルに格納します。このステートファイルは非常に重要です。様々なリソースのメタデータを実際のリソースIDにマッピングし、Terraformが何を管理しているのかがわかるようにします。このファイルは保存して、Terraformを実行する可能性のある人に配布する必要があります。一般的にあまり大きくないので、単純にバージョンコントロールに入れることをおすすめします。
さて、一方、受け入れられ、upvotedされた回答で Terraformを使用する際のベストプラクティス の状態になります。
Terraformの設定は、異なるインフラストラクチャ上の多くのボックスをプロビジョニングするために使用され、それぞれが異なる状態を持つことができます。複数の人によって実行されることもあるので、この状態は(S3のような)一元管理された場所にあるべきですが ではなく git ではありません。
(強調は原著者であり、私ではありません)
誰が正しいのか、正しいとしたらなぜなのか。
どのように解決するのか?
TL;DRです。
重要! ソースコントロールに保存すると 潜在的な機密データ と、古いバージョンの状態に対してTerraformを実行するリスクがあります。やめておきましょう。
Terraformはもはやソース管理に状態を保存することを推奨していません。良い'選択肢はリモートかローカルです。
リモート状態は、ローカルとソース管理への保存の両方と比較して、大きな利点を与えます。これらの詳細は以下の通りです。
オリジナルの回答です。
Yevgeniyの回答は良いものです。この問題は、Terraformがドキュメントを更新して記述しているため、現在では多少議論が少なくなっています。
Terraformはデフォルトでterraform.tfstateファイルにいくつかの状態を格納します。 ファイルに格納します。この状態ファイルは非常に重要です。 リソースメタデータを実際のリソースIDにマッピングし、Terraformが何を管理しているのかがわかるようにします。 を知ることができます。このファイルは必ず保存して、Terraformを実行する可能性のある人 このファイルは保存して、Terraformを実行する可能性のある人に配布する必要があります。通常、Terraformを使用する際には、リモートステート を設定することが推奨されます。 これは、状態ファイルに保存された潜在的な秘密が、バージョンコントロールにチェックされないことを意味します。 がバージョンコントロールにチェックされないということです。
つまり、確立されたベストプラクティスと公式の推奨事項の間に不一致がなくなったのです。
2019-05-17のアップデート
で ドキュメントの最新版 という表現に変更されました。
... この状態は、デフォルトではローカルファイルの という名前のローカルファイルに保存されますが、リモートで保存することもできます。 という名前のファイルに保存されます。...
私は、アドバイスが状態を保存するための好ましい方法であるソースコントロールに戻ることはないと思っています。
上記の docs の引用にもかかわらず
リモート状態は単独の開発者としてはまだ有益です。
リモートステートでは、ソロの開発者は、次のことができます。
- 複数のデバイスから Terraform コードを実行することができます。
- 選択したバックエンドに応じて、状態ファイルを簡単にバックアップし、紛失から保護することができる
- アーキテクチャのセクションを 出力
- 静止状態のファイルを自動的に暗号化する 選択されたバックエンドに依存します。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedGit Git がファイルをコードクラウドにプッシュする際に報告されるエラーを解決します: ! [拒否] master -> master (最初にフェッチ)
-
git pull reports エラー: :cannot open .git/FETCH_HEAD:Permission denied (.git/FETCH_HEADを開くことができません。
-
解決策正しいアクセス権を持っていることと、リポジトリが存在することを確認してください。
-
giteaを使ったGitサービスの構築
-
git-fatal: 設定されたプッシュターゲットがありません / 警告: store/README.md の LF は CRLF に置き換えられています。
-
[解決済み] JenkinsのGitプラグイン。特定のタグをビルドするには?
-
[解決済み] チェリーピックのコンフリクトを解決するにはどうしたらいいですか?
-
[解決済み] 現在のブランチにあるファイルをメインブランチにある同じファイルに上書きしますか?
-
[解決済み] Terraformを使用する際のベストプラクティス [終了しました]。
-
[解決済み] 非標準のポートでリモートリポジトリを使用する