AWSでTerraformを使ってみた(基礎知識~環境構築)

はじめに

お疲れ様です。相変わらず文鳥とハムスターに飼われている網中です。

今回は先日課内にてTerraform勉強会を実施したので、その内容について書こうと思います。

またAWS初心者向けに書いていますので、記事がやや長くなっております。

 

今回の記載範囲

  1. Terraform とは
  2. Terraform  vs CloudFormation
  3. Terraformの環境構築            までです。

実践的なことについては、また後日…

また、VPC・サブネット作成方法とEC2へのアクセス法については本記事では取り扱わないので、わからない場合は事前に調べてみてください。

 

1.Terraformとは

今話題のInfrastructure as Code を実現するOSSです。

開発元は、カリフォルニア州サンフランシスコを拠点とするHashiCorp社です。

言語は、HashiCorp社特有のHCL (Hashicorp Configuration Language)というJSON形式と互換性がある言語を利用します。非常に可読性が高く、殆どコーディング経験のない私でもすんなり使う事ができました。

対応プラットフォームは、AWS・GCP・Azureなどに対応しており、マルチプラットフォームで構築する人にとって、Terraformはもってこいのツールではないかと感じています。

また、利用できるOSは、Windowsをはじめ macOS, Linux等に対応しており、職場環境など選ばず使用できることもTerraformの利点です。

 

2.Terraform  vs CloudFormation

普段AWSを使っている人間としては、ここが気になるところ。

Infrastructure as Codeとは言えど、CloudFormationとは何が違うのかと。

下の表は、あくまでも投稿者の主観となります。気になる方はぜひ実際にCloudFormationとTerraformを使ってみて、実感していただければ嬉しいです。

  Terraform CloudFormation
サポート OSSである為、情報は多い。 AWSのサービスで、サポートをしっかり受けられる。
学習

コスト

最低限のコマンドで構築可能な為、学習コストは低い。 aws cloudformationコマンドもあるが、オプションが多いので、やや学習コストは高い。
プラットフォーム AWS、Azure、GCPなど多くのプラットフォームに対応。 AWS専用のサービス

他のAWSサービスと連携がスムーズ。

セキュリティ それぞれのローカル環境で実行することが基本のためセキュリティを意識する必要がある。

しかしながら、EC2でTerraformの環境を構築する場合IAMRoleでクレデンシャル情報の安全な取り扱いが可能。

AWSで閉じられるのでセキュリティで考えることが少ない。
開発 一部のリソースの変更が簡単にできるため、少しずつ始められるため、アジャイル型開発が可能。

ただ、アプリ開発やリソースの内部の作り込みには不向き。

一度stack化すると削除⇒作成という流れを踏まなければいけないため、最初の設計が大事。

 

3.Terraformの環境構築

今回はAWSのEC2で環境構築します。
その他Windows・Macなどで環境を構築する場合は下記サイトをご参照ください。
 
 
<前提条件>※AWSで環境を構築する場合はお気を付けください。

・AWS CLIが使用可能であること。
・インターネットにアクセスできること。

 →今回の記事では省きますが、事前にVPC・サブネットの設定の確認をお願いします。

 

<流れ>※EC2で環境構築をする場合。
・IAMRoleを作成。
・AWS環境にAmazonLinux2のEC2を作成。
・Terraform をインストール。        以上!!簡単ですね。

下記から具体的な手順にを記載しますが、そんなの必要ないという方は「4.EC2の作成/変更/削除」の手前まで読み飛ばしてください。

 

まず、「IAMRole」の作成です。

1.AWSでIAMのページにアクセスして、ロールのタブを開く。

IAMダッシュボード

 

2.「ロールの作成」をクリック。

ロールの作成画面へ移行

3.ユースケースは「EC2」を選択後、「次のステップ:アクセス権限」をクリック。

ユースケースの選択

4.「AmazonEC2FullAccess」を選択して、「次のステップ:タグ」をクリック。

今回はEC2の作成、変更、削除の作業だけなので「AmazonEC2FullAccess」を利用します。

アクセス権限についてはTerraformでどのAWSサービスを利用するか確認の上、適切なものを選択ください。

アクセス権限の選択

5.タグは特に記入せず、「次のステップ:確認」をクリック。 

タグの追加

6.ロール名を記入して、「次のステップ:タグ」をクリック。

なお今回のロール名は「ROL-Terraform」にしてあります。

ロール名の記載

以上で、ロールの作成は完了です。

 

次は、EC2を作成します。

1.EC2のサービス画面に移動後、「インスタンスを起動」-「インスタンスを起動」をクリック。

EC2作成画面へ移動

 

2.AMIを選択。

今回ははじめからAWS CLIの入っているAmazonLinux2を選択しました。

AMIの選択

 

2.インスタンスタイプを選択して、「次のステップ:インスタンスの詳細の設定」をクリック。

今回は特に要件はないので「t2.micro」を選択しました。

インスタンスタイプの選択

 

3.適当なVPC・サブネット・パブリックIPを選択してをクリック。先ほど作った「IAMロール」を指定したら、「次のステップ:ストレージの追加」

今回は特に要件はないので他の部分はデフォルトのままにしました。インスタンスタイプの詳細設定

 

4.デフォルトで問題ないので、そのまま「次のステップ:タグの追加」をクリック。

ストレージの選択

 

 

5.デフォルトで問題ないので、そのまま「次のステップ:タグの追加」をクリック。

Nameタグくらい入れておいてもいいかもしれません。

タグの追加

 

6.適当な「セキュリティグループ」を選択し、「確認と作成」をクリック。

下のような図だと世界のどこからでも通信できてしまいますので、必ずIPを絞り込むようにお願いします。

セキュリティグループの選択

 

7.「起動」をクリック後、キーペアを選択。最後に「インスタンスの作成」をクリック。

キーペアの選択

 

以上で、EC2の作成は完了です。

この後は、OSにログインした状態での作業となります。

 

最後は、Terraformのインストールします。

1.Terraformをダウンロード

なお、バージョンについて今後更新もあるかと思いますので、サイトの方をご確認ください。

‣wget -O terraform_0.13.3_linux_amd64.zip https://releases.hashicorp.com/terraform/0.13.3/terraform_0.13.3_linux_amd64.zip

2.ダウンロードしたファイルの解凍

unzip terraform_0.13.3_linux_amd64.zip

3.ファイルのパスを通す。

sudo mv terraform /usr/bin

下記実行画面です。

terraformインストール画面

 

 

以上でTerraformの環境作成は完了です!

後日、EC2作成方法や書くつもりですので、お時間がありましたらそちらの記事も見ていただけますと幸いです。

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