Terraformとは

2019.9.24 (火)

Terraform for GCPの目次

Terraformを使ってみていろいろな側面が見えてきたので、Terraformとはを含めて諸々書いてゆきたいと思います。
Terrafromはクラウドサーバー構築のAPIで、いわゆる設定ファイルを読み込んで実行するだけで今までポチポチと管理コンソールで行っていた設定を一気に実行できるという利点がまずあります。とはいえインフラストラクチャーをコマンド上で実行するのは非常に抵抗があるという方は冪等性という概念を一度理解してあげるとそこそこ安心するのではないかと思います。またこの「設定ファイルを読み込んで実行する」というのは、設定ファイルをgitなどで管理できて、その変更履歴を常に保存できるという利点もあります。そしてこれはインフラ構築のパラメータ管理をエクセルなどでやって、それをコンソールで実行…みたいな二重操作がなくなって、パラメータ=設定という実にシンプルな管理を行うことができるのがすごいって話です。
とくにインフラ構築においては規模の大小関わらずTerraformを使わない手はないはずです。
使わなくてもいいという意見としては、現時点(2019-09-24)でのバージョンにはまだまだ課題点が残されているので、むしろ次期バージョンに臨むということはあるかもしれません。次期バージョンでは目まぐるしい進化を遂げている可能性があって、将来的には当然、条件分岐などがもっと複雑に行えるようになるはずです。という意味では今じゃなくても来季、あるいは来年・再来年といったタイミングでも十分価値のあるものになります。
Terraformがよい理由のもう一つは既存のインフラの設定をTerraformに落とすことができるというものです。双方向で設定が可能なので、これも非常なる利点です。(完璧な双方向ではないですが)

Terraformはおそらく今後はクラウド環境のすべてをAPIでコントロールできるようになると思います。今時点2019-09-24はまだ発展途上ですが、後数年すればほとんど完璧になると思います。サーバーやネットワーク環境の構築に限らず、権限設定、プロジェクトの管理、監視やログからのフィードバックでインフラをコントロールするなど、いろいろな可能性を秘めています。

Google cloud plattform でterraformを使う

ここではAWSではなくGCPでの使い方を紹介します。
具体的にどのような方法でTerraformを動かすのかというと、TerraformをインストールしたPCやServerからGCPのクラウド環境を直接操作するような感じです。GCPにログインし、それ相当の権限のCredential(認証キー)を発行して、そのキーを使ってGCP上に作成されたプロジェクトにアクセスします。そのキーはjson形式でかかれていて、アクセス先、アクセスキー、アクセスIDみたいなものがすべてひと揃えになっているので、特に面倒な設定は必要ありません。xxxxxxxx.jsonというキーを設定する場合は、こんな感じになります。

provider "google" {
  credentials = "./credential/xxxxxxxx.json"
  project     = "sample-project"
  region      = "asia-northeast1"
}

という設定で、GCPのプロジェクトにアクセスできるようになります。
この接続ができてしまえば、その他のプロジェクト内でできることはterrformの設定でできるようになります。このできることは、かなり膨大な量ではありますが、学習コストが膨大ということでもありません。比較的自分が使うものを中心に覚えてゆけば事足ります。ドキュメントは今のところ英語しかないのですが、がんばりましょう!

Terraform Documentation

私自身のTerraformを使う目的を含めて、どんなものかというと、こんな感じになります。

  • Chefはいやだ。
  • VMインスタンス(サーバー)を全く同じものを構築したい。
  • インフラ管理をGitで管理したい。トータルでインフラを管理したい。
  • 複数台のサーバーを同時に作成したい。

Terraform for GCPの目次