LoginSignup
10
2

More than 3 years have passed since last update.

Terraform Cloudでディレクトリに対してworkspaceをつくる

Last updated at Posted at 2019-12-25

はじめに

Terraform CloudはStateファイルをTerraform Cloud上で管理してくれる最強のツールです。

強いところや基本的な使い方は以下の記事を参考にしてください。

本題

一つのリポジトリで複数のstateを管理することがあるのですが、Terraformではそれをworkspaceという単位で分けます。

イメージ
.
└── services
    ├── common # workspace ここで一つのtfstateを管理する
    │   └── main.tf
    ├── prod # workspace ここで一つのtfstateを管理する
    │   └── main.tf
    ├── stage # workspace ここで一つのtfstateを管理する
    │   └── main.tf
    └── test # workspace ここで一つのtfstateを管理する
        └── main.tf

例えば、commonにはネットワーク周りの共通の構成管理を入れておき、最初にterraform applyしておくことで、コードを改修するたびにapplyされるのを回避することができます。

Terraform Cloudでもその設定を簡単に行うことができます。

image.png

Workspaceを作る際に、リポジトリルートからのpathをTerraform Working Directoryに指定してあげるだけです。

また、Terraform CloudはCIと連携できるのですが、そのトリガーとしてリポジトリの変更だけでなくそのpath以下の変更に絞ることもできます。(Automatic Run Triggering

workspace作成後でも「Settings→General」から変更することができます。
image.png

別のworkspaceのstateファイルからdataを取り出す際もnameを指定してあげるだけで簡単にできます。

data "terraform_remote_state" "foo" {
  backend = "remote"

  config = {
    organization = "hikimochi"

    workspaces = {
      name = "hikimochi-terraform-other-workspace"
    }
  }
}

また、Terraform Cloud上で管理されていればbackendの指定をしなくても自動でstateファイルがそのworkspace上で保存されます。(違ってたら指摘してください)

COOLですね。

おわりに

22日に結構頑張って書いたやつが、全然いいねつかないのでもう一本書きました。

10
2
0

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
10
2