EC2インスタンス(Linux)へのTerraformインストール方法 | 備忘録

スポンサーリンク

ここ最近、業務で AWS 環境でのインフラ構築を Terraform を用いて
実施する機会があったため、その基本的な導入方法について備忘録に残しておきます。

スポンサーリンク

そもそもTerraformとは?

まずはじめに、そもそも Terraform は何かということについて記載しておきます。
ご存知の方は飛ばしてください。


Terraform は、HashiCorp 社 が開発した
Infrastructure as Code (IaC)を実現することができるOSS
です。

いわゆる、インフラストラクチャ定義ツールと呼ばれるもので、
ファイルにインフラ構成を記述し、Terraform コマンドでそのファイルを実行すると、
その構成通りのインフラが クラウド上に構築されます。

イメージとしては、テキストファイルに

  • 10.0.0.0/16 の VPC を1つ作成する
  • 10.0.0.0/17 のサブネットを1つ作成する
  • t2.micro の Linux EC2 を1つ作成する・・・

などの情報を記載しておき、Terraform に読み込ませてあげることで、
AWS 上に上記のリソースが自動的に構築される、という感じです。


ちなみに Infrastructure as Code は、サーバやネットワーク、DB などのリソースを
コードによって構築・管理する技術のこと
で、インフラ構成をコード化することで、
以下のようなメリットがあります。

  • Gitなどのバージョン管理システムで変更履歴を管理可能
  • 構成のレビューが容易になる
  • インフラ構成の再利用が可能(開発・ステージ・本番でコードを使いまわせる)
  • 人為的ミスを防ぐことができる



Terraform でインフラ構築する際に使用する設定ファイル群は、
JSON形式もしくは、Terraform 独自形式(拡張子 tf) で記載します。

使ってみた感想としては、Terrafrom 形式の方がJSON 形式よりも分かりやすく、書きやすかったです。
コード中にコメントを記載することもできるので、複数人でコードを更新する際にも便利ですね。

1つ注意点としては、AWS の最新のサービス (例えば WAF V2など)は
Terraform ではまだ対応されておらず、手動で作成する必要があるようでした(2020/03/27 現在)

大抵のものはコード化できますが、構築したい環境によっては
手動作成が必要な箇所が出てくる可能性もありますので、事前調査が必要
です。

スポンサーリンク

Terraform 実行環境の準備

Terraform は事前に、環境構築したいAWSアカウント内のEc2インスタンス、
または、ローカルPCから 各種Terraformコマンドを実行することで環境構築することができます。

今回は、EC2インスタンスに Terraform をインストールし、
そのEC2インスタンス上から Terraform コマンドを実行することで
各種リソースを構築してみました。

その準備として、以下2点を満たしている Terraform 実行環境Ec2インスタンスを作成します。

  • インターネット接続可能であること
  • Administrator権限を持っていること

Aministrator 権限と書いていますが、Terraform から構築したリソースへの
操作権限を持っていれば、Admin権限でなくてもよいです。
僕は面倒なので Administrator 権限を付けていますw


本筋から離れるため割愛しますが、以下の手順でLinuxのEc2インスタンスを用意しました。

  1. AWSコンソールから VPCを作成する
  2. AWSコンソールから 上記 VPC においてサブネットを1つ作成する
  3. AWSコンソールから InternetGateway を作成する
  4. 作成した IGW を上記 VPC へアタッチする
  5. 作成したサブネットを Publicサブネットとして扱う
  6. Publicサブネットのルートテーブルにて、IGW との紐づけを行う
  7. SecurityGroup を作成し、インバウンドルールにSSH接続許可設定を行う
  8. EC2インスタンスを作成し、前手順で作成したSecurityGroupをアタッチする
  9. IAMロールを作成し、AdministratorAccess ポリシーをアタッチする
  10. EC2インスタンスに、前手順で作成したロールをアタッチする

以上の手順で作成した EC2 インスタンスに対し、
ログインできること、インターネット接続ができることを確認しておきます。

Terraform のインストール

Terraform インストールに入ります。
大まかな手順は以下です。

  1. Terraform 用ディレクトリ作成
  2. Terraform インストールモジュール取得
  3. モジュール解凍

以下、順を追って説明していきます。

Terraform 用ディレクトリ作成

まず先ほど作成した EC2 インスタンスに Teraterm などでログインし、
適当なディレクトリ配下で以下のコマンドを実行し、terraform ディレクトリを作成します。

ここで作成した terraform 用ディレクトリを、ワークスペースとして使います。

ディレクトリ名は何でも良いですが、Terraform 用ディレクトリであることが
一目でわかるようにしておくと良いです。

Terraform インストールモジュール取得

以下のコマンドを実行し、Terraform の公式サイトから
Terraform のモジュールを Ec2 インスタンス上へダウンロードします。

terraform のバージョンについては、随時更新がはいっているようなので
適宜変更してからコマンド実行してください。

(2020/03/28 時点で v0.12.24 が最新バージョンのようです。: Terraform 公式 ダウンロードページ)

以下は実行ログです。

ダウンロードできたことを確認したら、zip を解凍していきます。

モジュール解凍

以下のコマンドを実行し、先ほどダウンロードしたファイルを解凍します。
解凍したファイルを直接 /usr/local/bin/ 配下へ設置することで、
Terraform コマンドとして登録します。

※コマンド内のバージョン記載部分は、便宜書き換えてください。

以下は実行ログです。

unzip が完了したら、Terraform コマンドが使用できることを確認するため、
以下のコマンドを実行します。

以下は実行ログです。

スポンサーリンク

main.tf ファイルを設置

Terraform をインストールし終わったら、初期設定を行っていきます。

Terraform 用ディレクトリ内へ移動後、以下のコマンドを実行し、
main.tf ファイルを作成します。

ファイル名は何でも良いですが、拡張子は必ず “.tf” としてください。


作成したファイルを vim コマンドなどで開き、以下をコピペして保存してください。
(東京リージョンの場合)

(アクセスキーとシークレットキーの値は、
Terraform 実行用EC2に Administrator ポリシーがアタッチされていれば記載は不要です。

ローカルマシン上から Terraform を実行する場合は、
別途 IAM のアクセスキーを発行し、上記パラメータに設定してください。)

Terraform は AWS 以外にも Azure や GPC などのクラウドサービスに対応しているため、
この main.tf ファイルの記載によって、 AWS を使用するということをTerraform に教えてあげています。

Terraform の初期化

Terraform 用ディレクトリ内で、以下のコマンドを実行し、Terraform を初期化します。

このコマンドにより、ワークスペース(今回でいえば Terraform ディレクトリ内)を
初期化し、.tf ファイルで利用している各種プラグインがダウンロードされます。

この処理は必須なので、忘れずに実施します。

初期化が完了すると、.terraform という隠しディレクトリが作成され、
その中に各種ダウンロードされたファイル群が設置されます。

以上で初期化は完了です。
長くなってしまうため、Terraform の主な使用方法や変数の使用方法については
別記事で上げることにします。

感想

僕自身、クラウドを触り始めてまだ日数が立っていないこともあり、
IaC のイメージがあまりついていなかったのですが、
Terraform を導入して少しいじったことで、ある程度イメージをつかむことができました。


個人的には、AWS Cloudformation よりも、Terraform の方が
使い勝手がよく、構築時の負担も少ない
ように思いました。

今後は積極的に利用し、インフラ構築の時間を短縮していきたいですね。
(対応していない AWS サービスも少なからずあるので、そこら辺は臨機応変にする必要ありますが。。。)

コメント