79
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Terraform Cloud、個人で使ってもめちゃくちゃ便利

Posted at

はじめに

9月の上旬にTerraform Cloudの完全版リリース発表がありました。

これまではEnterprise版でしか利用できなかったようなチーム開発に便利な機能の一部が
最大5ユーザーまで無料で使えるようになったものです。
参考: 価格/機能一覧表

複数人での開発における利便性向上が主なアピールポイントのようですが
1人で学習用などにTerraformを使う上でも嬉しいことがあったので
もっと広まればいいなーと思い紹介します。
https://app.terraform.io/

1. Backendの提供

従来は自分で用意しなくてはいけなかったtfstateファイルの置き場を
無料・無制限で提供してくれます。

backendブロックの書式はこうなります
terraform {
  backend "remote" {
    hostname     = "app.terraform.io" //Terraform Cloudのホスト上に保存
    organization = "<Your Organization Name>"
    workspaces {
      name = "my-sample-app"
    }
  }
}

デフォルトで「tfstateのバージョン管理機能 & ロック機能付き」のBackendが無料!!

特にこれまでバージョン管理有効にしたS3+ロック用のDynamoDB を作ってた方は
嬉しいんじゃないでしょうか。。
(個人利用だとDynamoDBまで用意する方は少なそうですが)

地味に、Backendアクセスのためだけの認証情報を持たせなくてよくなるのも楽でした。
Terraform Cloudの認証情報はコードに持たせない作りになっています。

2. Remote Runs & Applies

terraform (plan|apply|destroy)のコマンドが
ローカル端末ではなくTerraform Cloudのサーバーで走るようになります。
サーバー上には実行ログが残ります。

Workspace(tfstateファイル1つが対応) my-sample-app の実行履歴一覧
スクリーンショット 2019-09-28 21.21.44.png

開くとそれぞれ実行時のログが見える
スクリーンショット 2019-09-28 21.13.13.png

これまではローカルのターミナル上で
儚く埋もれ散りゆくのみだった実行結果が、いつでも確認できます…

各tfstateごとに最新の実行結果が確認できるので、
リソースのお片付け(削除)漏れがわかりやすくなるのも助かります。
destroy失敗したまま忘れちゃって、忘れちゃったことすら忘れちゃってリソース残しっぱ…とかが防げるかも。
忘れちゃったことくらいは思い出せる。

3. Private Module Registry

効率いいやり方はあるかもですが、
例えばちょっとAWSで検証したいなーってときに
本質じゃないNW構成を毎回記述するのが結構めんどくさいです。。
AWS.png

私のAWSアカウント内には既存のゴミVPCがたくさん散らばってますが(…)、
構成もわかったもんじゃないし等々、そちらも使いたくない。

そんなとき、Private Module Registryという
TerraformのModuleをTerraform Cloud上に保管してくれる機能が役立ちます。

  • モジュールのソースをGitHub等のVCSにリポジトリを作って配置
  • リポジトリにバージョンタグ(vN.N.N の形)を付ける
  • Terraform CloudとVCSを連携させて、ちょちょっと設定

以降は通常のTerraformのModuleと同じように使えます。
私の場合は今後、上図のNW設定を以下の4行で作成できるようになりました。
(Cidr等はdefault値を設定して、変更したいときだけ記述する形にしています)

sample
module "basic-networks" {
  source  = "app.terraform.io/<Your Organization Name>/basic-networks/aws"
  version = "0.2.0" # タグで指定したバージョン
}

従来の自作Moduleを毎回新規のリポジトリの中に持ってきて管理すると手間なことが多かったですが
そのへんがスッキリして楽になりました。
(もっと良いやり方もあったのかな…)

きれいなものでもないですが上記のNW構成をモジュール化したソースは
サンプルとしてこちらに置いています。

まとめ

いろんなめんどくさいことが解消されるし無料なので
チーム開発じゃなくても試しに使ってみたら良いと思います!
わかりませんが、個人でこれ使ってたら仕事で従来のOSS版使うのが辛くなってしまう感じはあるけどそのへんどうなんだろう。特にRemote Runのログ。

79
55
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
79
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?