Terraform プロジェクトの初期化

LinuxBeginner
オンラインで実践に進む

はじめに

Terraform は、HashiCorp によって作成された人気のオープンソースの Infrastructure as Code (IaC) ツールです。宣言的な設定言語を使用してインフラストラクチャリソースを定義し、プロビジョニングすることができます。

新しい Terraform プロジェクトで最初に実行するコマンドは terraform init です。このコマンドは、作業ディレクトリを Terraform で使用できるように準備するため、非常に重要です。これにはいくつかの主要なアクションが含まれます。

  • Backend の初期化: ステートストレージのバックエンドを設定します。
  • Provider プラグインのインストール: 設定ファイルをスキャンし、必要なプロバイダーを特定して、Terraform Registry からダウンロードします。
  • Module のインストール: 設定で参照されているモジュールをダウンロードします。

この実験(Lab)では、新しい Terraform プロジェクトを初期化する基本的なプロセスを学習します。プロジェクトディレクトリを作成し、簡単な設定ファイルを定義し、terraform init を使用して必要なプロバイダープラグインをダウンロードします。

Terraform プロジェクト用の新しいディレクトリを作成する

このステップでは、新しい Terraform プロジェクト専用のディレクトリを作成します。設定の競合を避け、整理された状態を保つために、各 Terraform プロジェクトを独自のディレクトリに格納することがベストプラクティスです。すべての操作は ~/project ディレクトリ内で行われます。

まず、terraform-init-lab という名前の新しいディレクトリを作成します。

mkdir terraform-init-lab

次に、新しく作成したディレクトリに移動します。ここが、この実験(Lab)の残りの部分での作業ディレクトリとなります。

cd terraform-init-lab

ターミナルのプロンプトは、現在 ~/project/terraform-init-lab ディレクトリ内にいることを示すはずです。

プロジェクトディレクトリ内に main.tf ファイルを作成する

このステップでは、プロジェクトのメイン設定ファイルを作成します。Terraform の設定ファイルは .tf 拡張子を使用し、HashiCorp Configuration Language (HCL) で記述されます。慣例として、主要な設定ファイルは main.tf と呼ばれることがよくあります。

terraform-init-lab ディレクトリ内で、touch コマンドを使用して main.tf という名前の空のファイルを作成します。

touch main.tf

ディレクトリの内容を一覧表示することで、ファイルが作成されたことを確認できます。

ls

出力に main.tf ファイルが表示されるはずです。

main.tf

main.tf にローカルプロバイダの設定を定義する

このステップでは、main.tf ファイルに設定コードを追加します。このコードは、Terraform がどのプロバイダをダウンロードして使用する必要があるかを指示します。プロバイダとは、Terraform がクラウドプロバイダや SaaS サービスなどの特定の API と対話できるようにするプラグインです。

この実験(Lab)では、ローカルファイルを管理できる local プロバイダを使用します。これはクラウド認証情報を必要としないため、学習に最適なプロバイダです。

nano テキストエディタを使用して main.tf ファイルを開きます。

nano main.tf

次に、以下のコードブロックをコピーして nano エディタに貼り付けます。この terraform ブロックは、プロジェクトに必要なプロバイダを指定します。

terraform {
  required_providers {
    local = {
      source  = "hashicorp/local"
      version = "2.4.0"
    }
  }
}

この設定は Terraform に対して以下を指示します。

  • required_providers: このプロジェクトが必要とするプロバイダを宣言しています。
  • local: プロバイダに付けるローカル名です。
  • source: Terraform Registry におけるプロバイダのグローバルアドレス、ここでは hashicorp/local です。
  • version: 使用するプロバイダの特定バージョンです。

コードを貼り付けた後、Ctrl+O、次に Enter、最後に Ctrl+X を押してファイルを保存し、nano を終了します。

terraform init を実行してプロジェクトを初期化する

このステップでは、terraform init コマンドを実行します。プロバイダの設定が完了したことで、Terraform はプロジェクトを初期化するために何をすべきかを知りました。main.tf ファイルを読み込み、required_providers ブロックを見つけ、Terraform Registry から指定されたバージョンの hashicorp/local プロバイダをダウンロードします。

まだ terraform-init-lab ディレクトリ内にいることを確認してから、初期化コマンドを実行します。

terraform init

バックエンドとプロバイダプラグインの初期化を示す出力が表示されます。初期化が成功すると、成功メッセージで終了します。

Initializing the backend...

Initializing provider plugins...
- Finding hashicorp/local versions matching "2.4.0"...
- Installing hashicorp/local v2.4.0...
- Installed hashicorp/local v2.4.0 (signed by HashiCorp)

Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

ダウンロードされたプラグインのために .terraform ディレクトリを確認する

このステップでは、terraform init がプロバイダプラグインを正常にダウンロードしたことを確認します。このコマンドは、これらのプラグインやその他の初期化データを保存するために、プロジェクトフォルダ内に .terraform という名前の隠しディレクトリを作成します。

まず、隠しファイルを含むすべてのファイルとディレクトリをリスト表示して、init コマンドによって作成された新しい成果物を確認します。

ls -a

出力には、.terraform ディレクトリと .terraform.lock.hcl ファイルが表示されるはずです。ロックファイルは、初期化中に選択されたプロバイダのバージョンを記録します。

.  ..  main.tf  .terraform  .terraform.lock.hcl

次に、.terraform ディレクトリの内容を調べて、ダウンロードされたプロバイダを確認します。階層的な表示を明確にするために、tree コマンドを使用できます。

tree .terraform

出力には、プロバイダプラグインが保存されているディレクトリ構造が表示されます。レジストリからダウンロードされた local プロバイダの実行可能ファイルを確認できます。

.terraform
└── providers
    └── registry.terraform.io
        └── hashicorp
            └── local
                └── 2.4.0
                    └── linux_amd64
                        └── terraform-provider-local_v2.4.0_x5

6 directories, 1 file

これにより、terraform init が必要なプロバイダでプロジェクトのセットアップに成功したことが確認できました。

まとめ

おめでとうございます!この Terraform プロジェクト初期化の実験(Lab)を無事に完了しました。

この実験(Lab)では、新しい Terraform プロジェクトを開始するための不可欠な最初のステップを学びました。以下のことを実践しました。

  • Terraform プロジェクト専用のディレクトリを作成する。
  • main.tf 設定ファイルで必要なプロバイダを定義する。
  • プロジェクトを準備するために terraform init コマンドを実行する。
  • プロバイダプラグインが .terraform ディレクトリにダウンロードされたことを確認する。

プロジェクトの初期化が完了したので、リソース定義の記述や、インフラストラクチャを管理するための terraform plan および terraform apply の使用など、Terraform ワークフローの次のステップに進む準備が整いました。