Terraform の基本的な使用方法を理解するために調べてみました。
Terraform とは
Terraform とは、HashiCorp社により開発されているオープンソースのインフラ自動構築ツールです。Terraform では AWS などのクラウドサービス上のインフラリソースをコードで定義します。 Terraform は作成したコードに基づいて自動でリソースを構築します。Terraform を利用することでオペレーションミスが無くなるほか、複数システムでコードを再利用することで効率化を図ることが出来ます。また、一度に大量のリソースを定義することで手動よりも早く構築することが可能になります。
このようにインフラリソースをコードで定義することを IaC(Infrastructure as Code)と呼びます。他のIaCツールとしてはサーバ内の設定変更を得意とする Ansible などが有名ですが、Terraform はクラウド上のリソースを構築することに長けています。クラウドリソースは Terraform で構築し、サーバ内の設定変更は Ansible、といった使い分けが可能です。
Terraform と似た位置付けのツールに AWS CloudFormation が存在しますが、Terraform とは違いAWS専用です。Terraform は AWS だけでなく Azure や GCP、GitHub、Datadog など、複数のクラウドプロバイダーに対応しているため、マルチクラウド環境においても構築手段を統一することが出来ます。
■ Terraform 学習の経緯
私は以前、業務で Ansible を使用して AWS リソースを作成した経験がありますので、なんとなく構造は理解していますが、Terraform を使用した経験や知識はありません。
今後、Terraform を活用して AWS リソースを作成する可能性があるため、Terraform の基本的な使用方法を学びたいと思い調査してみました。
■ AWS を対象とした Terraform 環境準備
Terraform で AWS リソースを作成するための環境を構築します。
・AWS CLI のインストール
Terraform を使用するためには、AWS CLI のインストールが必要です。
AWS公式サイト
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
・IAM ユーザー、アクセスキー作成
IAM ユーザーを作成しアクセスキーを取得します。Terraform で AWS リソースにアクセスする際に使用します。
・Terraform のインストール
Terraform をインストールします。
Terraform 公式サイト
https://developer.hashicorp.com/terraform/install
・Terraform の初期化
Terraform のコードが格納されたディレクトリで、terraform init
コマンドを実行します。コマンド実行により、Terraform が AWSプロバイダを使用できるようになります。
■ Terraform 主要ファイル
Terraform で使用する主要ファイルは、以下の3つになります。
1. main.tf
"main.tf" ファイルは、Terraform のメインコードファイルです。ここには、実際にリソースを作成するための Terraform のコードが含まれます。AWS のインスタンスやネットワークなど、必要なリソースを作成するための Terraform コードが含まれます。このファイルを使用して、AWS 上に必要なサーバーやネットワークなどの設定を行います。
2. variables.tf
"variables.tf" ファイルは、Terraform の変数を定義するためのファイルです。変数は、コード内の再利用可能な値を定義するために使用されます。例えば、AWS のリージョンやインスタンスタイプなどのパラメータを変数として定義することができます。
3. terraform.tfvars
"terraform.tfvars" ファイルは、Terraform の変数の値を設定するためのファイルです。変数.tf ファイルで定義された変数の実際の値を設定します。このファイルには、AWS アクセスキー、シークレットキーなどの機密情報を含めることができます。
・これらのファイルを使用することで、AWS 上に必要なサーバーやネットワークなどの設定を行います。
まとめ
Terraform の基本的な使い方について調査しました。
Ansible を使用した経験はありましたが、Terraform を使ったことはありませんでした。
今回、Terraform の基本を学び、AWS 上のAWS 上のインフラを効率的に構築する方法を少し理解できたと思います。