Help us understand the problem. What is going on with this article?

既存のtfディレクトリをWorkspaces管理に移行する

More than 1 year has passed since last update.

TL;DR

Terraform 0.10から、Workspacesという機能が追加されました。
https://www.terraform.io/docs/state/workspaces.html

0.9で追加された State: Environmentsが名称変更されたものです。

1つのディレクトリで、任意の複数の環境(e.g dev, stg, prod)を切り替えられるようにするものです。

下記を適用する下準備として、既存のtfディレクトリをWorkspaces管理に移行する際にはまったことのメモです。
Terraform Best Practices in 2017

既存のtfディレクトリをWorkspaces管理に移行する。

1. 既存のstateファイルからworkspaceを作る(とincompatible state lineageエラーが出る)

terraform workspace new -state=./terraform.tfstate [workspace名]
$ terraform workspace new -state=terraform.tfstate example
Created and switched to workspace "example"!

You're now on a new, empty workspace. Workspaces isolate their state,
so if you run "terraform plan" Terraform will not see any existing state
for this configuration.
incompatible state lineage; given 3d2aa9e3-198b-400c-a1aa-0a8e15ac44b4 but want 768adb25-938d-45cc-9195-fae815470dd3
$

詳細は確認していませんが、newした時点で作成されるtfstateファイルにはlineageが発行されているのですが、
-stateで指定した既存のtfstateで上書きする際に、既存のtfstateファイルでまるごと上書きしてしまい、lineageが一致しなくなることが問題のようです。

2. stateファイルをs3などのremoteで管理している場合は、stateファイルをremoteとsyncした上で手動マージする

remoteの最新stateファイルをpullし、workspace:example用のtfstateファイルを置き換える

terraform state pull > ./terraform.tfstate.d/example/terraform.tfstate

"modules"を既存のもので差し替え、pushする

terraform state push ./terraform.tfstate.d/example/terraform.tfstate

3. 既存のtfstateファイルを引き継げているかをplanの結果を見て確認する

terraform plan -var-file=./tfvars/example.tfvars -out=path_to_plan.plan

問題なく移行できていれば、planの実行結果に新規作成されるリソースは存在しないはず。

nntsugu
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした