TerraformをAWSで使ってみた!導入からインスタンス作成まで
エンジニアになろう!
TerraformをAWSで使ってみよう!
(株)ライトコードの小山(こやま)です!
アメリカの HashiCorp 社が開発した、インフラ構築や設定などもコード化できる、「Terraform」というツール。
ネットワーク構築も自動化できるとあって、エンジニアの間でも、人気のツールとなっていますね!
というわけで今回は、そんな話題の Terraform を「AWS」で使ってみたいと思います。
Terraform 導入から、インスタンス作成までを試していくので、ぜひ一緒にチャレンジしてみてくださいね!
今回の構築環境
本記事では、下表のような環境を前提に、執筆されています。
OS | macOS 10.15.7 |
AWS | 登録済み |
AWS CLI | 導入済み |
Homebrew | 導入済み |
Terraform | Terraform v0.13.5(記事の中で導入します) |
では早速、はじめていきましょう!
Terraformの環境導入とAWSの設定
Terraform の環境を導入
Homebrew を利用して、Terraform の環境を導入します。
1$ brew install terraform
導入できたかどうかを確認するために、以下のようなバージョン確認コマンドを入力します。
1$ terraform --version
バージョン情報が表示されたら、環境導入は成功です。
AWSのクレデンシャルの設定
今回は、Terraform を利用して、AWS のリソースを作成していきます。
そのために、まず AWS のクレデンシャルの設定を行っておきましょう。
AWS のクレデンシャル(アクセスキー及びシークレットキー)は、AWS コンソールの IAM より発行できます。
発行できたら、クレデンシャルを、環境変数に登録します。
1$ export AWS_ACCESS_KEY_ID=発行したアクセスキーを入力
2$ export AWS_SECRET_ACCESS_KEY=発行したシークレットキーを入力
3$ export AWS_DEFAULT_REGION=ap-northeast-1
ご利用のリージョンが東京でない方は、「AWS_DEFAULT_REGION」を、ご利用のリージョンに設定してください。
Terraformを実際に使ってみる
「tfファイル」を作成
まずは、任意の名前でディレクトリを作成し、そこへ移動します。
1$ mkdir hoge
2$ cd hoge
次に、以下のコマンドで、Terraform のファイルを作成してください。
1$ touch main.tf
拡張子「tf」のファイルを作成すると、Terraform がテンプレートとして認識します。
「main.tf」を編集
続いて、main.tf の内容を、次のように編集していきましょう。
1$ vim main.tf
1resource "aws_instance" "hoge" {
2ami = "ami-0f9ae750e8274075b"
3instance_type = "t3.micro"
4tags = {
5Name = "hogehoge"
6}
7}
インデントが整う便利コマンド
ここで、Terraform の便利なコマンドを利用します。
1$ terraform fmt
上記のコマンドを入力すると、拡張子が「tf」のファイルのインデントなどを整えてくれます。
実際に入力したら、インデントが整っているかを、確認してみてください。
1$ cat main.tf
1resource "aws_instance" "hoge" {
2 ami = "ami-0f9ae750e8274075b"
3 instance_type = "t3.micro"
4
5 tags = {
6 Name = "hogehoge"
7 }
8}
キレイに整いましたね!
「main.tf」のコードの意味
main.tf では、AWS の EC2 インスタンスを作成するコードを実装しています。
aws_instance の内容を変更すれば、EC2 以外のリソースも作成することができます。
今回は、EC2 のインスタンスを作成するので、AMI とインスタンスのタイプを設定しておきました。
ちなみにインスタンスのタイプは、
- nano
- micro
- large
など、様々なサイズがあります。
基本的には、費用を抑えるために、なるべく小さいサイズを選ぶと良いかと思います。
また、最後の tags では、その名の通り、タグを設定しています。
必須ではありませんが、設定しておくと AWS コンソールで確認しやすくなるので、ぜひ活用してみてください。
「main.tf」のエラーの解消と実行
さて、main.tf ですが、今のまま実行するとエラーとなってしまいます。
試しに実行してみます。
1$ terraform apply
1Error: Could not load plugin
2...
「プラグインを読み込めない」というエラーが出てしまいました…。
このエラーを解消するために、次のコマンドを実行して、プラグイン環境を整えます。
1$ terraform init
そして、次のコマンドを実行します。
1$ terraform plan
「何がどうなるのか」を、教えてくれるはずです。
内容を確認して問題がなければ、実行コマンドを再度入力してみましょう。
1$ terraform apply
実行して良いかどうか尋ねられるので、「yes」と入力すると実行されます。
実行されたら、下記のコマンドを入力してください。
1$ terraform show
「resource "aws_instance" "hoge"」と、その詳細が表示されたら成功です!
インスタンスの確認 & 後処理をする
AWS のコンソールを開いて、EC2 を確認すると、インスタンスが作成されているはずです。
AWS の EC2 インスタンスは、起動したままだと料金がかかるので、終了させておきましょう!
次のコマンドで、作成したリソースを、削除することができます。
1$ terraform destroy
再び、実行して良いかどうか尋ねられるので、「yes」を入力し実行します。
実行されたら再度、下記コマンドを入力します。
1$ terraform show
リソースを削除する「destroy」コマンドを実行したあとは、何も表示されないはずです。
以上が、Terraform の基本の流れとなります。
さいごに
今回の記事では、以下の流れで作業をしていきました。
- tfファイルを作成
- init
- plan
- apply
- show
- destroy
- show
基本的には、今回の流れで Terraform を操作することになるかと思います。
ただ、「show」や「destroy」については、使わないこともあります。
アクセスキーやシークレットキーなどのクレデンシャルは、外部に流出すると大変なことになるので、扱いにはご注意ください。
また、Terraform で作成したリソースについても、適切に管理しないと AWS の使用額がとんでもないことになってしまいます。
さて今回は、特に認知度の高い AWS を用いました。
Terraform は、Azure や Heroku など、様々なサービスにも対応しています。
これを機に、Terraform を活用して、業務の効率化を目指してみるのも良いですね!
こちらの記事もオススメ!
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
2020.07.27IT・コンピューターの歴史特集IT・コンピューターの歴史をまとめていきたいと思います!弊社ブログにある記事のみで構成しているため、まだ「未完成状態」...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ