Terraform の構成とスクリプト

完了

このユニットでは、Terraform の構成とスクリプトを見ていきます。

Terraform を使用する理由

インフラストラクチャ マネージャーであるあなたには、Azure インフラストラクチャをプロビジョニングして管理するためのツールが必要です。 また、Azure リソースのトポロジを記述する構成ファイルの コードとしてインフラストラクチャ を使用する必要があります。

HashiCorp Terraform は、複数のクラウド プロバイダー間でインフラストラクチャをデプロイする場合に適しています。 各インフラストラクチャの定義を管理するための一貫したツールが開発者に提供されます。

インフラストラクチャの管理を自動化する

テンプレート ベースの Terraform 構成ファイルを使用すると、反復可能かつ予測可能な方法で Azure リソースの定義、プロビジョニング、および構成を行うことができます。 この自動化には、いくつかの利点があります。

  • これによってインフラストラクチャがデプロイおよび管理されるため、人為的なエラーが発生する可能性が低くなります。
  • 同じテンプレートが複数回デプロイされ、同一の開発、テスト、および運用環境が作成されます。
  • 必要に応じて開発環境とテスト環境を作成することで、それらのコストが削減されます。

インフラストラクチャの変更内容を適用前に把握する

リソースのトポロジが複雑になるにつれ、インフラストラクチャの変更の意味と影響を把握するのが困難になることがあります。

Terraform を使用すると、インフラストラクチャの変更内容を適用前に検証およびプレビューすることができます。 チームのメンバーは、提案された変更内容とその影響を開発プロセスの早い段階で理解することによって、より効果的に共同作業を行うことができます。

Terraform 構成ファイル

構成ファイルにより、実行プランと、目的の状態に達するためにそのプランで行われることが生成されます。 その後、記述されたインフラストラクチャを Terraform で構築できます。 構成が変更されたら、Terraform で変更内容を決定して、増分実行プランを作成できます。

Terraform 構成ファイルでは、インフラストラクチャを記述できるように設計されている、YAML に似た独自の構成言語が使用されます。

構成ファイルを作成するには、HashiCorp Configuration Language (HCL) 構文を使用します。 HCL は宣言型であり、目標に到達するための手順ではなく、意図される目標を記述します。 HCL 構文を使用すると、Azure などのクラウド プロバイダーと、クラウド インフラストラクチャを構成する要素を指定することができます。

構成ファイルは、 拡張子が .tf のプレーン テキスト ファイルとして格納されます。 これらは次のとおりです。

  • main.tf: (必須) メイン構造を定義し、完全なインフラストラクチャを直接デプロイするか、モジュールを呼び出してデプロイします
  • outputs.tf: Terraform モジュールの各戻り値を識別します
  • variables.tf: 必要かどうかに関係なく、 main.tf 内の変数を定義します

Terraform 構成構造のスクリーンショット。

モジュール

Terraform リソースをモジュールにグループ化して、より大きな構成単位を作成することができます。 これらのモジュールは、1 つのディレクトリに格納されている構成ファイルのセットです。 単純な構成は、1 つ以上の .tf ファイルを含む 1 つのディレクトリで構成されます。

モジュールには多くの利点があります。 たとえば、モジュールによって:

  • プロジェクトを整理しやすくなります。
  • 複雑さがカプセル化されます。
  • 共通のタスクを再利用できるようになります。
  • 一貫性がもたらされ、優れたプラクティスが適用されるようになります。

main.tf ファイル

main.tf ファイルには、モジュールの構成の詳細のメイン セットが含まれています。 このファイルは、多くの場合、Terraform プランと呼ばれます。 Terraform のプランでは、必要なインフラストラクチャ リソースを指定します。 このファイルには任意の名前を付けることができますが、通常は main.tf という名前です。

Terraform のワークフロー

Terraform により、自動化のための "初期化、計画、適用" のコア ワークフローが推奨されています。 このワークフローにより、新規および更新される Git pull request に対して Terraform のすべての CI/CD アクションが実行されます。

コア アクション Init、Plan、Apply を表示する Terraform ワークフローの図。

このワークフローの主要なアクションは次のとおりです。

  • Init: Terraform 構成ファイルを使用して作業ディレクトリを初期化する
  • プラン: 現在の構成に合わせてリソースを変更するための計画を作成する
  • 適用: プランで説明されている変更を適用する

状態

状態 により、Terraform は、追加、更新、または削除する Azure リソースを認識できます。

Terraform により、状態を使用してプランが作成され、インフラストラクチャに対する変更が行われます。 操作が行われる前に、Terraform により実際のインフラストラクチャに従って状態が更新されます。

状態は既定で terraform.tfstate という名前のローカル テキスト ファイルに格納されます。 このファイルは Terraform によって、ユーザーがモジュールで定義したワークフロー アクションを使用して管理されます。

また、状態をリモートで格納することもできます。この方法はチーム環境に適しています。 状態をリモートで管理する方法の詳細については、このモジュールの最後にある「まとめ」ユニットを参照してください。

次のステップ

次のユニットでは、Terraform を GitHub Actions または Azure Pipelines と共に使用して、アプリケーションのプロビジョニングとデプロイを行う方法について説明します。