Stateのドリフト管理とリコンシリエーション
障害や予期しない変更につながる前に、TerraformのStateと実際のインフラの差分であるドリフトを検出、診断、解消します。
「Stateのドリフト管理とリコンシリエーション」はCoddyKit上の無料Terraform Infrastructure as Codeレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTerraform Infrastructure as Code学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Terraform Infrastructure as Codeコースには全4レッスンが含まれています。
ドリフトとは
ドリフトは、Terraformの外部で実際のインフラが変更されたときに発生します。たとえば、エンジニアがコンソールで設定を変更したり、別のツールがリソースを変更したりする場合です。するとstateと実際の状態が一致しなくなり、次回のapplyで変更が予期せず元に戻ったり上書きされたりする可能性があります。
planでドリフトを検出する
通常のterraform planはstateを更新し、差分を表示します。リソースにドリフトがあると、コードで変更していない差分がplanに報告されます。
terraform planRefresh-onlyプラン
設定変更を提案せずにドリフトを確認するには、refresh-onlyプランを使います。stateを実際の状態に更新し、異なる部分を表示します。
terraform plan -refresh-onlyドリフトレポートを読む
Terraformは、検出した変更とともにドリフトした属性を示します。チルダはインプレース変更を示し、マイナスとプラスの組み合わせは、Terraformの外部で値が追加または削除されたことを示します。
# aws_instance.web has changed
~ instance_type = "t3.micro" -> "t3.small"調整する2つの方法
ドリフトを見つけたら、どちらの状態に合わせるかを選びます。
- 実際の状態を受け入れる — 新しいstateに合わせてコードを更新します。
- コードの状態に戻す — applyして、設定どおりの状態にインフラを戻します。
ドリフトをstateに取り込む
手動変更が意図したものだった場合は、apply -refresh-onlyを実行して実際の状態をstateに記録し、その後コードも一致するよう更新して、今後のplanに差分が出ないようにします。
terraform apply -refresh-onlyドリフトを元に戻す
変更が承認されていない場合は、通常のterraform applyを実行して、インフラを宣言した設定に戻し、手動変更を取り消します。
terraform apply単一のリソースを対象にする
特定のリソースだけを修正するには、-targetで操作対象を1つのリソースに限定します。より広範なドリフトを隠してしまう可能性があるため、慎重に使用してください。
terraform apply -target=aws_instance.web不要なドリフトを防ぐ
一部の属性はAWSや他のツールによって管理されます。ignore_changesを使うと、Terraformがそれらをめぐって競合しなくなります。
resource "aws_instance" "web" {
lifecycle {
ignore_changes = [tags["LastScanned"]]
}
}継続的なドリフト検出
CIでスケジュール実行のrefresh-onlyプランを実行し、ドリフトを早期に検出します。Terraform Cloudには、stateと実際の状態が乖離したときに通知するドリフト検出機能が組み込まれています。
on:
schedule:
- cron: "0 6 * * *"ツールより文化が重要
ドリフトを最も効果的に防ぐのはプロセスです。コンソールへの書き込み権限を制限し、すべての変更をTerraform経由にして、手動変更をインシデントとして扱います。ツールはドリフトを検出しますが、規律がドリフトを防ぎます。
確認テスト
ドリフト管理に関する知識を確認しましょう。
まとめ: 正しいstateを保つ
これでドリフトに対処できるようになりました。
planまたはplan -refresh-onlyで検出する。apply -refresh-onlyとコードの更新で受け入れる。- 通常の
applyで元に戻す。 ignore_changesとスケジュール実行のチェックで早期に対処する。
よくある質問
「Stateのドリフト管理とリコンシリエーション」レッスンは無料ですか?
はい。「Stateのドリフト管理とリコンシリエーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Terraform Infrastructure as Codeコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Terraform Infrastructure as Codeコースには全4レッスンが含まれています。
「Stateのドリフト管理とリコンシリエーション」で何を学びますか?
障害や予期しない変更につながる前に、TerraformのStateと実際のインフラの差分であるドリフトを検出、診断、解消します。 ブラウザで直接実行するハンズオンコードでTerraform Infrastructure as Codeを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Terraform Infrastructure as Codeを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTerraform Infrastructure as Codeは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Stateのドリフト管理とリコンシリエーション」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTerraform Infrastructure as Codeレッスンでコードを書いて実行できますか?
はい。すべてのTerraform Infrastructure as Codeレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Terraform 構成のデバッグ
- パフォーマンス最適化戦略
- Terraform によるディザスタリカバリ
- Stateのドリフト管理とリコンシリエーション