メインコンテンツまでスキップ

Terraform

Terraform は、インフラストラクチャをコードとして管理するためのオープンソースツールです。
クラウドリソースやその他のインフラストラクチャリソースをコード化し、宣言的に管理・構築できます。

このドキュメントでは、Terraformの基本操作やインフラストラクチャのデプロイ方法について説明します。

Terraform の概要

  • インフラストラクチャをコードとして定義し、自動でリソースを構築・管理できるツール
  • HCL(HashiCorp Configuration Language)を使ってリソースを宣言的に定義
  • 複数のクラウドプロバイダ(AWS, GCP, Azureなど)やオンプレミス環境をサポート
  • Terraform公式ドキュメント

用語

用語説明
HCLTerraformの設定ファイルに使われる宣言的な言語(*.tf)
Stateファイル管理対象リソースの状態を記録するファイル(terraform.tfstate)
Providerクラウドプロバイダやサードパーティのサービスを管理するためのモジュール

Terraform のインストール

asdf を使って Terraform をインストールしてください。
asdf コマンドがインストールされていない方は、asdf の資料 を見ながらインストールしてください。

asdf plugin add terraform
asdf install terraform latest
asdf global terraform latest

terraformコマンドを利用できるかチェックしてみましょう。

terraform -v

Terraform の基本操作

初期化

プロジェクトディレクトリを初期化し、必要なプロバイダやモジュールをダウンロードします。

terraform init

設定ファイルの検証

設定ファイルにエラーがないか検証します。

terraform validate

実行計画の作成

設定ファイルに基づき、リソースの変更計画を表示します。

terraform plan

リソースの適用

実行計画に従ってリソースを作成・更新します。

terraform apply

※ ここで terraform.tfstate と言うファイルが作成されます。状態を管理するファイルなので削除しないように気をつけてください

リソースの削除

定義されていないリソースを削除します。

terraform destroy

terraform apply 時に作成された terraform.tfstate を参照してリソースを削除します。terraform.tfstate が失われるか、内容が不整合な場合、terraform destroy での削除が正常に行えないことがあります。この場合、手動で作成されたリソースを削除する必要があります。

クラウドプロバイダーの操作

Terraformはプロバイダを使用して、クラウドリソースを管理します。以下は、AWSプロバイダの設定例です。

設定ファイルの例(AWSプロバイダ)

terraform-vpc-example-for-eks を参照してください。

初期化と適用コマンド

設定ファイルを用意した後、以下のコマンドを使用してインフラを作成します。

AWSの場合、以下のように環境変数でプロファイルを指定し、aws-cli が利用できる状態にする必要があります。

export AWS_PROFILE=admin

または、AWSのアクセスキーとシークレットキーを直接環境変数で指定する方法もあります。

export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key

初期化と適用

terraform init
terraform apply

参考リンク