Terraform Cloud 無料枠での利用を考える

# Terraform Cloud ５名まで無料で使用可能 / どのような利用が可能か

[HashiConf'19](https://hashiconf.hashicorp.com) で以下の発表が行われました。

* [Announcing Terraform Cloud](https://www.hashicorp.com/blog/announcing-terraform-cloud)  HashiCorp Blog (SEP 10, 2019)

Terraform Cloud は「５名まで無料利用が可能」ということで、この枠内でどのような利用が可能か考えてみました。

まずは、無料版はどのようなことができるのかをみてみます。

## 無料版と有償版との違い（HashiCorp ページ記載内容から）

https://www.hashicorp.com/products/terraform/pricing
上記ページを転記しています。

| Func | Cloud(Free) | Cloud(Team) | Cloud(Team & Governance) | Self-Hosted(Enterprise) |
|:----|:----|:----|:----|:----|
|Price|$0|$20 User/Month|$70 User/Month|Contact|
|VCS / Remote Runs|◯|◯|◯|◯|
|Workspace Management|◯|◯|◯|◯|
|Secure Variable Storage|◯|◯|◯|◯|
|Remote Runs & Applies|◯|◯|◯|◯|
|Full API Coverage|◯|◯|◯|◯|
|Private Module Registry|◯|◯|◯|◯|
|Roles / Team Management||◯|◯|◯|
|Sentinel|||◯|◯|
|Cost Estimation|||◯|◯|
|SAML / SSO||||◯|
|Clustering||||◯|
|Private DC Installation||||◯|
|Private Network Connectivity||||◯|
|Single Tenant||||◯|
|Audit Logs ||||◯|

### Enterprise 版とCloud 版の違い

Enterprise 版は、自身が用意した仮想マシン上に導入して利用します。上記の差分の `Clustering` から `Single Tenant` までは、自身でインフラ管理まで実施する特性になるので、Cloud版との差異にはならないと思います。

Enterprise 版との大きな差異は以下の２点です。

* SAML/SSO
* Audit Logs

### Cloud 無料版とCloud 有償版の違い

* 無料版は５人まで
  * 無料で利用できるユーザ数が5ユーザまで
  * 追加ユーザはエディションごとに月額価格が異なる
* ロールとチーム管理
  * ユーザのロールやグループ管理を行う機能
* Sentinel 連携(Team & Governanceのみ)
  * Sentinelは`Policy as Code` という考え方で、例えばTerraform によって組織として許可していないような操作（TCPポートをすべて解放しているとか）をしようとした際に検知を行うといったようなもの（Web記事などの受け売りです。実際に動作確認は出来ていません）
  * AWS Config Rules と同じようなもの、という記事もあります
* Cost Estimation(Team & Governanceのみ)
  * [［速報」Terraformのインフラ定義から自動的にクラウドの費用を見積もる「Cost Estimation」機能登場。HashiConf '19](https://www.publickey1.jp/blog/19/terraformcost_estimationhashiconf_19.html)

### （補足）OSS版とCloud 版の違い

OSS版とCloud版の差異は、以下になります。

* GUIの有無
* OpenSource プロジェクトの動きにあわせたアップデートをしなければいけない

(参考)OSS版からみたEnterprise 版の意義の書かれているBlog
  * [Why Consider Terraform Enterprise Over Open Source?](https://www.hashicorp.com/resources/why-consider-terraform-enterprise-over-open-source)

ここまで、Terraform Cloud の提供機能差異をみてみました。

## Cloud版の基本構成、アクター

ここからは、Cloud版についてシステム構成やアクターを考えてみます。

### システム構成図

![スクリーンショット 2019-09-15 23.01.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80280/07cfc439-5c70-4e4b-210a-6e90810536e5.png)

すべてクラウドサービスを利用できるため、エンジニアはクライアント端末があれば、Terraform を活用したインフラ管理が可能となります。

### アクター

Terraform のWebページには、アクターが記載されたワークフローが掲載されています。
Cloud 版のワークフロー図 (https://www.hashicorp.com/products/terraform) に筆者が赤字で追記しています。

![スクリーンショット 2019-09-16 14.35.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80280/7dceb628-315d-5ec3-ce3b-6ab97bd00311.png)

公式ページには、アクターは以下のロールで書かれています。

* IaCコードの設計・開発
* プライベートモジュールの開発・登録
* Terraform を使ってシステムプロビジョニング実施

今回は、これらの対応を `SREs` が行うと定義します。

### 対象とするプロセスと対象リソース

![スクリーンショット 2019-09-16 8.20.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80280/b2028f16-f7dd-ed82-aeb8-3979dbe16534.png)

上記図のベースは、「[【図解】フルスタックエンジニアとは？](https://www.it-career-navi.com/entry/fullstack-engineer)」 から引用しています。
赤点線枠で囲った部分が、Terraform Cloud で対応する範囲(上述アクターで使ったワークフロー)と定義します。

ここまで、Cloud版の基本的な考え方をみてみました。

## Terraform Cloud 無料版での運用（ユースケース）

Terraform Cloud 無料版のユースケースを考えてみます。

### ① Terraform 自体を試す

Terraform をシステム運用で使用するかどうか決めていない時点で、その試用に利用できます。

* 上長への進言、提言用の調査
* GUIの試用（これまでTerraformのGUIを使う場合、Enterprise版を借用する必要があった）
* ToBeを見据えた、SREsとしての実験、実証

### ② OSS版からの乗り換え

OSS版で実現できることは、Cloud版でもすべてできるようです。OSS版運用でのデメリットを解消するためにCloud版への移行が考えられると思います。

* GUI を利用できる
* Terraform 自体のメンテナンスを行う必要がない

### ③ 提供機能の範囲で使いこなす

有償版との差異は、チーム・組織やユーザ数およびコスト見積もり・集計が大きな差異となっています。これらの機能を使う必要があるのは、組織として体系立てて（統制を取りながら）利用する際に必要になっています。ですので、ある程度の規模の組織では基本的には有償版を使用することになると思います。

制約があることを理解した上で無料版を使う場合：

* ユーザ数の制約やチーム・組織の定義
  * 開発環境、テスト環境、本番環境ごとにTerraform Cloudのアカウントを作成する
* `Cost Estimation` 
  * 各クラウドが提供するコスト情報を直接見る（なんの解決策でもありませんが。。）

## まとめ

Cloud版 とEnterprise版で大きな機能差がある点として、SSO/SAML 連携ができないことになります。利用者としては、この機能差を改善してもらいたいと思います。
~~その他、Cloud版には保守サポートサービスが付いているのか不明です。今後確認していきたいと思います。~~ 2019/10/2 に開催された[Terraform meetup tokyo#2](https://terraform-jp.connpass.com/event/142041/)で、保守サポートが必要な場合は、Enterprise版を使ってください、という話がありました。

これまでGUIを使うためには、Enterprise版が必要でした。Enterprise版は、それなりのお値段であるので利用するのに躊躇していましたが、今回のサービス提供で一気に敷居が下がったと思います。

インフラ管理をSaaSのみで実現できるようになって、SREsは本当にやりたいことに集中できるようになってきていると思います。ここでは記載できていない、GitHub Actionsとの連携やServiceNowとの連携を行うことで「楽」することができることが増えると思います。

## おまけ

Terraform Gift Package というものHashiCorp さんから頂きました。
![hashicorpgifts.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80280/52797acc-0ac0-b786-3f96-23a301404381.jpeg)


## リンク

* [クラウド管理ツール「12の機能」と全34種を紹介、カオスマップが示すチャンスとは](https://www.sbbit.jp/article/cont1/36527)
* [Announcing ServiceNow Integration for Terraform Enterprise](https://www.hashicorp.com/blog/announcing-servicenow-integration-for-terraform-enterprise)
* [Terraform Cloud を早速使ってみました](https://santak.qrunch.io/entries/kzt9wAfk5Mw3Hfhi)