• トップ
  • ブログ一覧
  • TerraformをAWSで使ってみた!導入からインスタンス作成まで
  • TerraformをAWSで使ってみた!導入からインスタンス作成まで

    こやまん(エンジニア)こやまん(エンジニア)
    2021.01.18

    エンジニアになろう!

    TerraformをAWSで使ってみた!導入からインスタンス作成まで

    TerraformをAWSで使ってみよう!

    こやまん

    (株)ライトコードの小山(こやま)です!

    アメリカの HashiCorp 社が開発した、インフラ構築や設定などもコード化できる、「Terraform」というツール。

    ネットワーク構築も自動化できるとあって、エンジニアの間でも、人気のツールとなっていますね!

    というわけで今回は、そんな話題の Terraform を「AWS」で使ってみたいと思います。

    Terraform 導入から、インスタンス作成までを試していくので、ぜひ一緒にチャレンジしてみてくださいね!

    今回の構築環境

    本記事では、下表のような環境を前提に、執筆されています。

    OSmacOS 10.15.7
    AWS登録済み
    AWS CLI導入済み
    Homebrew導入済み
    TerraformTerraform 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 とインスタンスのタイプを設定しておきました。

    ちなみにインスタンスのタイプは、

    1. nano
    2. micro
    3. 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 の基本の流れとなります。

    さいごに

    今回の記事では、以下の流れで作業をしていきました。

    1. tfファイルを作成
    2. init
    3. plan
    4. apply
    5. show
    6. destroy
    7. show

    基本的には、今回の流れで Terraform を操作することになるかと思います。

    ただ、「show」や「destroy」については、使わないこともあります。

    アクセスキーやシークレットキーなどのクレデンシャルは、外部に流出すると大変なことになるので、扱いにはご注意ください。

    また、Terraform で作成したリソースについても、適切に管理しないと AWS の使用額がとんでもないことになってしまいます。

    さて今回は、特に認知度の高い AWS を用いました。

    Terraform は、Azure や Heroku など、様々なサービスにも対応しています。

    これを機に、Terraform を活用して、業務の効率化を目指してみるのも良いですね!

    こちらの記事もオススメ!

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
    featureImg2020.07.27IT・コンピューターの歴史特集IT・コンピューターの歴史をまとめていきたいと思います!弊社ブログにある記事のみで構成しているため、まだ「未完成状態」...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background