Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@mochio

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

はじめに

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日に結構頑張って書いたやつが、全然いいねつかないのでもう一本書きました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?