AWSなどを使ってシステム開発を行う際、Terraformというソフトウェアがあります。

Terraformは、AWSやAzureを導入する企業が増えてきていることもあり、注目の言語です。

Terraformは需要が増えてきているものの、あまり認識されていません。

Terraformを知ることは、今後プログラマーにとってもメリットです。

Terraformがどういうものなのか、何に使われているのか、どういうメリットがあるのか、どうやったらTerraformを学習できるのかについて紹介します。

Terraformとは

Terraformとは、Hashi Corpが開発した、オープンソースのソフトウェアです。

インフラストラクチャの定義ツールで、コンフィギュレーション言語は、Hashi Configuration Language、通称HCLとJsonになります。

Terraformは、AWSに採用されていることで有名です。他には、AzureやGoogle Cloud Platformにも採用されいています。


Terraformのニーズ

以前に比べてシステム開発などにクラウド技術やサービスが普及しました。

システムの動作環境は、準備から運用開始まで最短を求められていて、マーケットの変化が早く、時間の勝負が必至です。

ただ、クラウド上にインフラをおくと、インフラの保守や管理が簡単ではありません。

すぐ始めれる恩恵の陰に新たな課題の解決策が必要です。

確実にクラウド上でのシステム開発や運用、保守は、今後減ることなく増える一方なので、Terraformなどのニーズは高くなっていきます。


ベースコマンド

Terraformで使われる主なコマンドがあります。

基本的には、Init、Plan、Applyです。他にもよく使われるコマンドがあるのでまとめました。


Init

Initは、ワークスペースを初期化するコマンドです。

Terraformを実行するために必要なワークスペースを捻出するため、Initによってワークスペースを初期化します。


Plan

Planは、名前の通り、プランを参照するコマンドです。


Apply

Applyは、リソースを作成するためのコマンドです。

.tfファイルの情報を読み込みリソースを作成するためにApplyコマンドを使用します。


Show

Showは、リソースの状況をチェックするためのコマンドです。

Showは、よく使われるコマンドというわけではありませんが、リソース作成には必要なコマンドになります。


Destroy

Destroyは、生成されたリソースを削除するためのコマンドです。

DestoryもShow同様、よくつわれるコマンドではありませんが、リソースの削除に必要になります。


AWSへの準備

AWSでTerraformを使用するためには、事前に準備が必要です。

AWSを利用するためには、まず、アカウントの作成やEC2インスタンス作成が必要になります。

Terraformを使用する前に、AWSで必要な準備について紹介します。


アカウント作成

AWSを利用するためには、ユーザーアカウントやアクセスキー、シークレットアクセスキー作成しなければなりません。

AWSのアカウントやアクセスキー、シークレットアクセスキーを作成するのは無料です。


EC2インスタンス作成

AWSのアカウント作成を行ったらEC2インスタンスを生成します。

EC2インスタンスを生成するためには、EC2のホームへアクセスが必要です。

AWSコンソールのホームからEC2のホームへアクセスするとインスタンス作成ボタンがあります。

インスタンスのAMIを決め、インスタンスタイプの選択や詳細設定が必要です。

細かな設定は可能ですが、無料枠でEC2インスタンスを作成する場合は、機能が限られます。


Terraformインストール手順

Terraformは、オープンソースのため、無料でダウンロード可能です。公式サイトなどからアクセスして使用しているOSへダウンロードします。

メジャーなOSは、Windows、Macですが、Linuxなども対応可能です。

ここでは、Terraformインストールに際して対応しているOSや代表的なOSでのインストール手順を紹介します。


対応OS

Terraformは、色々なOSに対応しているオープンソースです。

WindowsやMacは、もちろんですが、Linux、SolarisやFreeBSDなどにも対応しています。

現在流通している主要なOSは、Terraformの利用が可能です。


Windowsの場合

Terraformをインストールするためには、Terraformの公式HPからWindowsタブのTerraformをクリックしてダウンロードします。

インストール後は、「C:¥Windows」の中にファイルを配置し、解凍が必要です。

解凍後は、コマンドプロントで「$ terraform version」と「Terraform v0.12.6」を入力して開きます。


Macの場合

MacでTerraformをインストールするためには、Terraform version manager、略してtfenvを利用します。

tfevを利用せずに、MacへTerraformをインストールすることは可能です。

ただ、tfenvを利用するとバージョンの切り替えが楽になります。


Terraformメリット

Terraformは、メリット・デメリットがあります。Terraformのメリットは使いやすい・管理しやすいことです。

他にもTerraformのメリットについてまとめました。


ポータビリティーに優れている

クラウドプロバイダーを介して使用するTerraformのメリットは、使いやすさにあります。

どのクラウドプロバイダーを使っても同じ言語・同じツールでTerraformの利用が可能です。


管理が簡素化

Terraformのもう一つのメリットは、管理が簡素化できるところです。

Terraformは、一つのツールで全体を管理できます。

そのため、いちいち色々なところにとばず、一つの管理ツールで全ての管理が可能です。 


Terragruntの有効活用

Terragruntは、Terraformのラッパーツールでコードの重複を軽減します。

Terraformの欠点として、同じコードの入力が必要です。しかし、このTerragruntを活用することで手間を減らすことができます。


キャリアアップ

Terraformは、AWSやMicrosoft Azureなどに採用されいています。

プログラマーとしてキャリアアップするために、Terraformは最適です。

Terraformの知識があれば、今後、システム開発などにAWSやAzureなどが採用されることで大きなプロジェクトの経験のチャンスがもらえます。


転職に有利

現在、システム開発やシステム保守に関して、AWSやAzureを採用している企業は多いため、Terraformの知識がある人材は重宝されます。

また、転職に有利な理由は、システムの管理や保守で、AWSやAzureなどを採用する企業が増える可能性があることです。

Terraformの知識を身につけることで新たなフィールドへチャレンジすることもできます。


Terraformデメリット

Terraformは、メリットもありますが、デメリットもあります。Terraformのデメリットは、時間とコストがかかることです。

Terraformのデメリットについてまとめました。


常に管理更新が必要

Terraformは、プログラムを構築したら終わりではありません。Terraformのインフラの保守や管理は、手間です。

常に管理更新が定期的に必要なため、ほったらかすことができません。また、一度ほったらかしてしまうとリソースの管理が困難です。


コストがかかる

リソース管理が必要ということは、コストもかかります。

Terraformのインフラ保守や管理に継続的に投資が必要となるため、コストが必要です。


結果整合性の不具合

Terraformは、リソース生成において常に待機しているわけではないため、伝搬がうまくいかず、不具合を起こします。

不具合のエラーは、再起動などで時間を要することため、手間です。


再利用がしづらい

Terraformには、最近追加された変数がlocalsです。このlocalsはリソース全体ではなく、属性のみを参照できます。

いい換えると、リソース全体ではないため必要な属性すべてに対して同じコマンドを繰り返すことになり、手間になってしまうのです。


構造上の手間

Terraformを使っているもしくは使ったことがあるユーザーにとって、デメリットは同じコードを入力することではないでしょうか。

先の再利用しづらいことについてもふれましたが、必要な属性すべてに同じコマンドを入力します。

構造上の問題になりますが、Terraformを利用する上で大きなデメリットです。


Terraform構築方法

Terraformの構築でメジャーなのは、AWSになります。ここでは、AWSを用いたTerraformの構築方法の紹介です。

Terraformの構築は、ファイル作成をし、ワークスペースフォルダへ「$ cd terraform/aws」と入力し、移動します。その際、ファイルは、Git管理です。

「$ git init」として、git管理にします。terraform.tfvarsファイルでAdmin権限のあるユーザーのアクセスキーの入力が必要です。


AWS以外の対応プロバイダー

Terraformが採用されているプロバイダーは、AWSが有名なので、AWSしか対応していないと考えてしまいがちです。

しかし実際は、Microsoft Azure、IBM Cloud、Google Cloud、VMwareなど採用されいてるプロバイダーはたくさんあります。


Terraformの学習方法

Terraformを学習する場合、特に初心者やプログラミングに詳しくない人にとって、簡単ではありません。

一から学習するためには、専門用語などを調べる、理解が難しい解釈など困難です。

Terraformを学習するためには、スクール、オンラインやアプリがあります。

Terraform単独のスクールなどはなく、AWSなどと合わせて学ぶことがほとんどです。


プログラミングスクールで学ぶ

通学スクールは、AWSなどの対策講座があります。

通学スクールのメリットは、わからないことをその場で聞けることです。

他には、同じ学習者同士の情報交換や最新の情報を手に入れることができます。


オンラインで学ぶ

オンラインで学ぶには、UdemyやLinkdinなどがあります。

有料のオンライン学習サイトになりますが、動画で何度も見直せるのがメリットです。

スクールに通う時間がなくても隙間時間を使って学習できます。

また、UdemyやLinkdinは、Q&Aセッションが公開されていて、他の学習者の質問や回答を見ることが可能です。

もちろん、わからないことを質問投稿することもできます。


アプリで学ぶ

プログラミングをアプリで学習するためには、ProgateやCodebelleが有名です。

オンラインサイトのUdemyやLinkdinもスマホアプリがあります。

Progateは、初心者が学習するのに人気の高いサイトです。また、ProgateとCodebelleは、共に通学スクールやオンラインで学ぶより低コストで学べます。


まとめ

システム開発やプラットフォームの構築など、クラウドベースが進んでいます。

最短で運用をスタートするためには、クラウドベースは、取り掛かりやすく、作成しやすいことは最大のメリットです。

今後のトレンドとしてクラウドベースの開発やプロジェクトは増えることが想定されます。

Terraformは、AWSやAzureなどのクラウドベースのプロバイダーに多く採用されていて、使いやすいことがメリットです。

今後、プログラマーとしてステップアップやキャリアアップには、Terraformの知識があれば有利に働く可能性があります。

Terraformの学習は、色々な方法で可能です。将来的なキャリアなどのためにTerraformの知識を身につけて役立てて下さい。