【入門】Terraformを最速で始める【AWS】

AWS
2024年4月
 123456
78910111213
14151617181920
21222324252627
282930  

こんにちは咲矢です。

今回はAWSにおけるTerraformの始め方を、初心者を対象に6ステップで紹介してみたいと思います。

・対象
AWSでのインフラ構築基礎を学習済みである方を想定しています。
S3バケットを使用します。
・環境
Mac、またはLinux(WSL)
・目標
Terraformを使って、AWSのVPCに簡単なネットワークを構築する。

Webアプリ開発の学習をしている方なら、Terraformを使えばAWSの設定情報をコード化できるということを、聞いたことがある人は多いと思います。

しかし、情報としては聞いたことがあっても、実際に挑戦するとなると難易度は高く感じますよね。
どうやって始めるのかわかりにくく、チュートリアル的なものも少ない。

そこで、Terraformを始めるためのとっかかりをつかむために必要な手順を、なるべく完結に紹介していきます。

記事の最後に関連リンクも載せておきます。
挫折しそうになったら、そちらも参考にしてみてください。

それではやってみましょう!

■ tfenvをインストールする

Terraformをインストールする準備として、tfenvをインストールします。

tfenvとはTerraformをバージョン管理するためのものです。
イメージとしてはRubyのrbenvみたいなものです(実際、インスパイアされてるとのこと)。

なくてもTerraformできますが、バージョンによって結構変わることがあるらしいです。
それに、tfenvを介したほうがTerraformのインストールも簡単です。
なので、導入しておきます。

tfenvの公式Github(https://github.com/tfutils/tfenv)に手順があるので、そのとおりにインストールしていきます。

Mac編:
Macの場合はHomebrewを使ってインストールできます。
コマンド:

$ brew install tfenv

 

Linux(WSL)編:
Linuxで手動インストールする場合は

★gitをクローンする

$ git clone https://github.com/tfutils/tfenv.git ~/.tfenv

★パスを通す

$ echo ‘export PATH=”$HOME/.tfenv/bin:$PATH”‘ >> ~/.bash_profile

★設定の変更を反映させる

$ source ~/.bash_profile
この3コマンドでtfenvコマンドを使えるようになります。

■ Terraformをインストールする

いよいよTerraform本体を、tfenvを使ってインストールします。
コマンド:

$ tfenv install

インストールが終わったら確認してみます。

$ terraform -v

こんな感じでバージョン情報が表示されればインストール成功です。

Terraform v1.0.7

■ 設定ファイルを書く準備をする

Terraformは、設定をtfファイルに記述していきます。

そのファイルをまとめて置くための専用のフォルダを、プロジェクトフォルダ直下に作ります。

名前はわかりやすくするために、「terraform」としておきましょう。

今後terraformのコマンドを使用する時はterraformフォルダで行うので、ディレクトリを移動しておきましょう。

$ cd terraform

■ 初期設定をtfファイルに書く

Terraformはコマンドを叩いて設定をAWSにプッシュします。
そのための最初の設定を、これからファイルに記述していきます。

backend.tfというファイルを、terraformフォルダ内に作ります。

backend.tfに最初に必要な設定を記述します。

 

■ 初期化する

これで準備が整ったので初期化します。
コマンド

$ terraform init

エラーが出なければ成功です。

これでAWSのインフラをコード化する準備ができました。
次から実際にインフラ設定を書いていきましょう。

■ 実際にインフラ設定を書いてみる

VPCを構築する

Terraformでは、設定をtfファイルに記述します。
そのファイルの中で「resaurce」という構文によって、インフラ設定を定義します。
参照してくれるtfファイルは、カレントディレクトリ(今回の例ではterraformフォルダ)にあるものすべてです。
ファイル名は何でも大丈夫ですので、内容がわかりやすい名前をつけておくと良いでしょう。

まずはvpc.tfファイルを作成してVPCネットワークを作ってみましょう。

今回は、CIDR_BLOCKが
192.168.0.0/16
のVPCネットワークを例とします。

構文の意味は、
・1行目の“aws_vpc”はVPCを構築するよ、という意味。固定。
・1行目の“test-vpc”はterraform内で使うID。自分で名前をつけられます。
波括弧の中に設定の詳細を書きます。

この設定でVPCネットワークを作ります。

AWSに設定を送信する前に、確認のためのコマンドを打ってみましょう

$ terraform plan

このコマンドで、どんなインフラが出来るのか確認ができます。

OKでしたか?

それではいよいよAWSに設定を送信して見ましょう
コマンド:

$ terraform apply

途中で最終確認のために処理が止まるので、良ければ「yes」を入力してエンターしましょう。
エラーが出なければ成功です。

AWSのコンソールでVPCのサービスを見て確認してみましょう。

test-vpc」というVPCが作成されていますよね。
出来ていればバッチリです。

サブネットを構築する

せっかくなのでこのVPCにサブネットを作ってみましょう。
先ほど作ったVPCネットワークをサブネットに分割します。
CIDR_BLOCKは
192.168.0.0/24
に設定。
この設定で、このサブネットのネットワークアドレスの範囲は
192.168.0.1~192.168.0.254
になります。

わかりやすいようにサブネット用の設定ファイルを別に作成します。
名前は「subnet.tf」としておきましょう。

subnet.tfの記述はこんな感じ。

 

構文はVPCの時とほぼ同じですが、ここでポイントがあります。
vpc_id = aws_vpc.test-vpc.id
の部分。

この左項は、「サブネットを構築するVPCのIDを指定してくださいね」という意味。
そして、この右項は、先程定義したVPCのIDを、文字列ではなく、設定を参照する形で表現しています。

vpc.tfファイルの

resource “aws_vpc” “test-vpc” {

この部分を思い出してください。
ここでは、“aws_vpc”のリソースを、“test-vpc”という名前で構築しました。

ここで定義したVPCリソースのIDを参照するのが、
aws_vpc.test-vpc.id
という表現なのです。

こうすることによって実際の値ではなく、vpc.tfファイルで定義したVPCの名前から、IDを参照することができます。

初めて「terraform apply」する時は当然IDが割り振られていないので、こういう記法があるということを覚えておきましょう。

それではVPCの時と同じように

$ terraform plan

で確認してみましょう。

サブネットの設定が追加されていると思います。

OKでしたら送信してみましょう

$ terraform apply

成功したらAWSコンソールで、VPCのサブネットの設定を見てみましょう。

最初に作成したVPCの中に、今作成したサブネットが出来ているはずです。

これで、たとえ真っ更な状態からでも、コマンドをちょっと叩くだけで最低限のネットワークが作れますね!

ちなみに今回作ったインフラは、

$ terraform destroy

というコマンドですべて破棄できます。

「apply」した時と同じように、チェックが走った後に最終確認があります。
削除してOKなら「yes」を入力してエンターすれば、作成したリソースをすべて削除してくれます。

■ まとめ

Terraformの入門はいかがでしたか?

知らないと、どんな操作感なのかイメージしづらいツールですが、手を動かしてみると感じがつかめると思います。

今回紹介したものはごく一部の機能ですが、AWSのあらゆるインフラをコード化することが可能です。

リソース作成の構文に関しては、公式のドキュメントが割とわかりやすいので、英語を恐れずに見てみることをおすすめします。

TerraformはWEBアプリ開発において、かなり応用度が高いです。

CIDRって何?

とか、

AWSとかよく分からない・・・

という方には難しく感じるでしょう。

ネットワークの基礎や、AWSでのインフラ構築の基礎の学習がまだの方はそちらを先に進めることをおすすめします。
(ページ下の参考リンクに、学習におすすめの本を紹介しておきます)

ぼくとしては、さらにRailsチュートリアルを終えているくらいの学習段階を想定しています。

難しいことをいきなりやろうとすると挫折しやすいのは、プログラミング学習のあるあるです。

難しいなと感じた方は、以前の記事でWEBアプリ開発の学習ロードマップを紹介しているので、そちらを進めてからTerraformへチャレンジしてみてください。

AWSのリソースを利用するための構文はこちらで検索:
Terraform公式 AWSで利用する際のドキュメント

【過去記事】WEBアプリ開発の学習ロードマップ:
【SPA化】RailsアプリをCircleCIを使ってAWSにデプロイするまでのロードマップ【Fargate】

環境がWindowsという方(miwato様のQiita記事):
Terraformインストール(Windows版)

もう少ししっかりと入門したい方:
クライン様のYoutube動画講義

YouTube
作成した動画を友だち、家族、世界中の人たちと共有

 

おすすめの書籍:

・イラスト図解式 この一冊で全部わかるWeb技術の基本
ネットワークとかIPアドレス等に関する基礎を学べます。

AWS基礎からのネットワーク&サーバー構築
初めてのAWSという方にオススメのハンズオン教材。
ネットワーク構築の基礎を手を動かして学べます。

コメント

タイトルとURLをコピーしました