初めてのTerraform

AWS運用自動化サービス「Cloud Automator」

こんにちは。技術4課を福島です。

先日、同じ課のメンバーからTerraformに関するお話をしてもらったので、
その内容をブログにまとめたいと思います。

IaCとは

まず、Terraformのお話をする前にInfrastructure as Code(以下、IaC)についてです。

IaCとは、簡単に言うと
 インフラをコードで扱い、プログラムと同じようにコードで管理・更新を行うこと
です。

IaCのメリット

Iacを利用するメリットを手作業と比較して、以下に記載しました。

 ・作成/変更履歴
  手作業:作業ログを見れば分かる…?
  IaC:Gitを併用することでそのコミットログを見れば分かります。
 
 ・再現性
  手作業:作業ログや手順書を使ってできる…?
  IaC:同じコードを再利用できるので、再現性があります。
 
 ・構成管理
  手作業:資料は、ちゃんと更新されている…?
  IaC:コードを基に構築しているため、しっかり構成管理もできます。
  

IaCを運用する心構え

 ここまで、同じ課のメンバーの話を聞いていて、
 やっぱり、IaCって、便利だなーと思ってました。
 
 が、
 
 IaCを本気で運用する場合、「覚悟」が必要なるみたいです。
 
 というのも、IaCを利用する場合、以下の点を考慮する必要があります。
 
 ①IaCで構築したインフラを絶対に直接、構成変更しない。
  →直接、構成変更してしまうと、IaCのコードと差分がでてしまい、
   コードと実機で不整合が起きてしまうためです。
   そのため、構成変更をする場合、IaCを使って行う必要があります。
  
 ②ステートファイルを保持し続ける。
  →ステートファイルがなくなるとインフラを管理することができなくなります。

※ステートファイルとは、Terraformが管理しているリソースの状態を把握するためのファイルです。

Terraformとは

 前置きが長くなりましたが、ここからTerraformについてのお話になります。
 
 まず、Terraformは、IaCを実現するツールで、以下の特徴があります。
 
 ◆特徴
  ・HashiCorp(はしこーぷ)社がオープンソースで開発しているプロビジョニングツール
  ・AWS以外に、GCP、Azure、OpenStack、Vmware、他、に対応
  ・書式はDSL(domain-specific language/ドメイン固有言語)で記載
  ・複数のプロバイダに同時にプロビジョニングも可能

Terraformを使ってみた

 Terraformの使い方についても、お話してもらったので、実際にやってみました。
 私は、WSLにTerraformを導入して、使ってみました。 

Terraformのインストール

以下の流れでインストールをしました。

無事にインストール完了!

 

Terraformの初期設定

メインファイルを作成します。

 →クレデンシャル情報は、セキュリティ的に直接、コードに記載しない方が良いため、
  profile変数を使って、AWSCLIのプロファイル情報を参照させています。

プロジェクトの初期化

 

Terraformを使って、VPCの作成

次にTerraformを使って、VPCを作成したいと思います。
まずは、VPCを作成するためのコードを書きます。

コードの内容が問題ないことを確認します。

コードの内容が問題なければ、実行します。

作成できたことを確認します。

作成できたら、今度は、削除もしてみます。

 

他のリソースを参照してみよう

次は、他のリソースを参照してみようと言うことで、
今回は、IGWをアタッチするVPCのIDを参照してみたいと思います。

VPCの作成と同じようにplan→apply→showの順に実行し、
showでIGWが作成できたことを確認できればOKです。

確認できたら、削除します。

 

まとめ

今回初めて、Terraformを使ってみましたが、Terraformコマンドは、
CloudFormationのCLIコマンドより、分かりやすく使いやすいなーと感じました。

以上です。

AWS運用自動化サービス「Cloud Automator」