CODE

【TIPS】Terraformコマンド・環境構築方法・前提知識がまるわかり!

terraform-command-basic-usage

 

エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。

 

普段はフリーランスでシステムエンジニアをしております。

 

今回は、IaC(Infrastructure as Code)としてTerraformを使ってインフラ環境をコードで構築するにあたり、Terraformの環境構築、前提知識、基本コマンドをまとめてみました。

 

 

Terraform環境構築(tfenv)

 

Terraform初心者向けにTerraformの環境構築を行う手順を記事にまとめているため、まずは以下の記事で環境構築を行ってください。

 

terraform-install-tfenv-usage-command-list
【TIPS】tfenvでTerraformのインストールからバージョン管理までをマスターしようtfenvのインストールからtfenvでTerraformのバージョン管理を行う方法をまとめました。tfenvとは、Windows/Macの両方で利用でき、CLI(コマンドラインインターフェース)でTerraformのバージョン管理を行えるツールです。Terraformは、インフラ環境を効率的に構築できるIaC(Infrastructure as Code)ツールです。...

 

 

Terraformのフォルダ・ファイル構成

 

TerraformでIaCを作成するにあたり、フォルダ・ファイル構成を紹介します。

 

Terraformのソースコードは、拡張子(.tf)を持つファイルに記載されることを覚えておきましょう。

 

その上で以下のようなフォルダ・ファイル構成だった場合を例に説明します。

 

 

Terraformのソースコードは、カレントディレクトリ直下にある .tfファイルを自動的に読み込み、インフラ環境を構築します。

 

ただし、カレントディレクトリ直下にない、サブディレクトリ配下にある .tfファイルは読み込まれません。

 

つまり、上記フォルダ・ファイル構成では、main.tfとs3.tfは自動的に読み込まれ、test1.tfとtest2.tfは読み込まれません。

 

また、Terraformでインフラ環境を構築すると、terraform.tfstateというファイルも作成されます。

 

terraform.tfstateファイルは、クラウド上のリソースを管理するためのファイルです。

 

これらの特徴を必ずおさえておきましょう。

 

 

Terraform基本コマンド

 

Terraformの環境構築とフォルダ構成を理解したところで、Terraformの基本コマンドを紹介していきます。

 

Terraform初期化(terraform init)

 

Terraformのソースコードである .tfファイルを作成したら、まず初めに以下の「terraform init」コマンドを実行する必要があります。

 

 

 

Terraformファイルの整形・フォーマット(terraform fmt)

 

次に.tfファイルの整形・フォーマットを行うために以下の「terraform fmt」コマンドを実行します。

 

 

 

これにより、.tfファイルの可読性があがり、メンテナンスがしやすくなります。

 

 

リソースの作成計画を確認(terraform plan)

 

Terraformのソースコードをもとにインフラ構築を行う前に、以下の「terraform plan」コマンドでリソースの作成計画を事前確認するようにしましょう。

 

 

 

カレントディレクトリ直下にある .tfファイルから新しく作成するリソース、削除リソース、変更リソースの一覧を表示してくれるので、ソースコードに記載したリソースが表示されることを確認しましょう。

 

 

リソースを作成(terraform apply)

 

「terraform plan」コマンドで作成計画に問題がなければ、以下の「terraform apply」コマンドでインフラ環境にリソースを生成、削除、変更することができます。

 

 

 

ただし、上記コマンド実行中にyesやnoを入力させる場合があります。

 

このようにコマンド実行中の入力要求をすべてyesで自動実行させるためには、以下のように「-auto-approve」オプションをつけて、「terraform apply」コマンドを実行します。

 

 

 

リソースの一括削除(terraform destroy)

 

Terraformのソースコードを使ってインフラ環境に作成したリソース一覧を一括で削除するには、以下の「terraform destroy」コマンドを実行します。

 

 

 

「terraform apply」コマンドと同様に「-auto-approve」オプションを付けることもできます。

 

 

 

リソース一覧の確認(terraform state list)

 

Terraformのソースコードでインフラ環境に構築したリソースの一覧を確認するには、以下の「terraform state list」コマンドを実行します。

 

 

 

特定のリソースを確認するには、以下のように [<ADDRESS>]を指定します。

 

 

 

<ADDRESS>は、Terraform上のリソースのアドレスになります。

 

 

リソース詳細の確認(terraform state show)

 

リソースの詳細を確認するには、以下の「terraform state show」コマンドを実行します。

 

 

 

<ADDRESS>は、Terraform上のリソースのアドレスになります。

 

 

リソース名の変更(terraform state mv)

 

リソース名を変更する方法を紹介します。

 

リソース名を変更

 

.tfファイルのリソース名を変更します。

 

この時点では、リソース名を変更したリソースが新しく作成される扱いになってしまいます。

 

tfstateファイルの変更

 

インフラ環境の状態を示すtfstateファイル上のリソース名も変更するため、以下の「terraform state mv」コマンドを実行します。

 

 

 

これにより、.tfファイルと.tfstateファイルの両方で、リソース名が変更されたので、「terraform apply」コマンドを実行します。

 

 

 

これでリソース名の変更が完了です。

 

 

リソース取り込み(terraform import)

 

Terraformで管理していなかったリソース(手作業でAWS上に作成したリソースなど)を、terraformに取り込んで管理対象とするには、以下の「terraform import」コマンドを実行します。

 

 

 

<ADDRESS>には、 取り込み先のリソース名(これはterraformコード上のリソース名)を指定します。

 

<ID>には、取り込みたい稼働中リソースID(これはAWS上のリソースID)を指定します。

 

手順としては、

 

まず手作業で作成したリソースに該当するTerraformソースコードを、main.tfファイルに追加します。

 

そのあと、 .tfstateファイルにリソースを取り込むため、「terraform import <ADDRESS> <ID>」を実行します。

 

リソースファイルの取り込みが完了したら、以下の「terraform plan」コマンドで、差分がなくなっていることが確認できたらオッケーです。

 

 

 

リソースをterraform管理対象外にする(terraform state rm)

 

指定したリソースをterraform管理対象外にするには、以下の「terraform state rm」コマンドを実行します。

 

 

 

<ADDRESS>は、Terraform上のリソースのアドレスになります。

 

このとき、インフラ上(AWSなど)の実態は削除されず、存在したままになっていることに注意してください。

 

 

手修正の内容を反映(terraform refresh)

 

インフラ環境上で手修正した内容をtfstateファイルに反映するには、以下の「terraform refresh」コマンドを実行します。

 

 

 

リソース依存関係の可視化(terraform graph)

 

Terraformで管理しているリソースの依存関係を可視化するには、以下の「terraform graph」コマンドを実行します。

 

 

 

上記コマンドによって、任意のファイルにリソース依存関係をDOT形式ファイルに変換してくれます。

 

このDOT形式ファイルを利用し、GraphvizでSVG形式画像ファイルで閲覧可能になります。

 

Visual Studio Codeの拡張機能「Graphviz Interactive Preview」を使えば、DOTファイルからSVGファイルにして閲覧も可能です。

 

 

Terraformコンソールで動作確認(terraform console)

 

Terraformコンソールを使用するには、以下の「terraform console」コマンドを実行します。

 

 

 

Terraformコンソールを使うと、TerraformのIDや値の実態を確認することができます。

 

 

まとめ

 

いかがでしたでしょうか。

 

Terraform初心者の方に向けて、Terraformの環境構築から基本コマンドを紹介してきました。

 

コマンドを一つ一つ覚えておくことは困難であるため、ぜひ振り返りのために本記事を活用頂ければ幸いです。

 

 

【関連記事】

 

【TIPS】tfenvでTerraformのインストールからバージョン管理までをマスターしよう