Terraformのトラブルシューティング

  1. デバッグログの有効化
  2. TF_LOG_COREとTF_LOG_PROVIDER
  3. 依存関係と並列処理

依存関係分析を含むトレースログ

Terraformはインフラストラクチャをコードとして管理するための優れたツールですが、問題が発生したときにデバッグするのが難しい場合があります。このブログ投稿では、Terraformの問題をトラブルシューティングする方法についてのヒントを共有します。

デバッグログの有効化

TF_LOG環境変数を使用すると、Terraformのログレベルを設定できます。これは、Terraformが舞台裏で何をしているかについての詳細を取得するのに役立ちます。次のいずれかの値に設定できます:TRACEDEBUGINFOWARN、またはERROR。デフォルトはINFOで、高レベルのメッセージのみを表示します。より詳細な出力を取得するには、DEBUGに設定できます。TRACEにはDEBUGの詳細が含まれますが、ほとんどのデバッグには必要のない依存関係分析の詳細も含まれます。たとえば、Terraformを実行する前に次のコマンドを実行できます:

export TF_LOG=DEBUGの後にterraform plan

または1行で実行

export TF_LOG=DEBUG && terraform plan

TF_LOG_PATH環境変数を指定すると、ログはファイルに保存されます。

TF_LOG_COREとTF_LOG_PROVIDER

デバッグログは膨大で、100MBを超えることがあります!プロバイダーのデバッグに集中したい場合は、TF_LOGの引数を使用してTF_LOG_PROVIDERを使用する必要があります。依存関係に問題があると疑われる場合は、TF_LOG_COREを使用する必要があります。

依存関係と並列処理

Terraformは実行前にTerraformモジュール間の依存関係を分析します。依存関係分析により、リソースが正しい順序でプロビジョニングされることが保証されます。同時に、Terraformは分析結果を使用して、並行してプロビジョニングまたは変更できる独立したリソースのセットを識別することで、操作の効率的な並列実行を行います。ただし、並行実行からのログは非常に読みにくく、planapplyのパラメータ-parallelism=1で並行性を無効にする必要があります。

-parallelism=1を使用すると、リソースは一度に1つずつ順番に作成/変更/破棄されます。これにより、各リソースが一度に1つずつ実行されるため、デバッグとトラブルシューティングが容易になります。例:terraform apply -parallelism=1

graph TD A[Terraform操作] --> C[リソース1の変更] C --> D[リソース2の変更] D --> E[Terraform実行完了]

-parallelismが指定されていない場合、デフォルト値は10です。リソースは並行して作成/変更/破棄され、より高速な実行が可能になります。ただし、複数のリソースが同時に実行されるため、問題のデバッグとトラブルシューティングがより困難になる可能性があります。例:terraform apply

graph TD A[Terraform操作] --> C[リソース1の変更] A --> D[リソース2の変更] D --> E[Terraform実行完了] C --> E
シェア