dev/stage/prod環境を管理するためにTerraformをセットアップしたいと思います。インフラストラクチャはすべての環境で同じですが、各環境の変数には違いがあります。理想的なテラフォームワークスペースプロジェクトの構造
Terraform 0.10にワークスペースが導入された今、理想的なTerraformプロジェクト構造はどのようになりますか?インフラストラクチャに名前を付ける/タグ付けするときにワークスペースを参照するにはどうすればよいですか?
dev/stage/prod環境を管理するためにTerraformをセットアップしたいと思います。インフラストラクチャはすべての環境で同じですが、各環境の変数には違いがあります。理想的なテラフォームワークスペースプロジェクトの構造
Terraform 0.10にワークスペースが導入された今、理想的なTerraformプロジェクト構造はどのようになりますか?インフラストラクチャに名前を付ける/タグ付けするときにワークスペースを参照するにはどうすればよいですか?
静的な環境では、ワークスペース(以前は「環境」)を使用しないことをお勧めします。これは、かなり複雑なものを追加し、追跡するのが難しいためです。
すべての環境で単一のフォルダ構造を使用し、ワークスペースを使用して環境を分離し、ワークスペースに基づく条件付き値を使用して差異を設定できます。実際には(特に2つ以上の環境がネストされた三項ステートメントにつながっている)、これを管理するのは難しいでしょう。
代わりに、静的環境ごとに別々のフォルダを使用し、シンボリックリンクを使用して、すべての環境ですべての.tfファイルを同じに保ち、各環境で違いを提供するterraform.tfvarsファイルを使用することを推奨します。
短期間のレビュー/ラボ環境などの動的環境にワークスペースを使用することをお勧めします。これは柔軟性を高めるためです。私は現在、Gitlab CIでレビュー環境を作成するためにそれらを使用しています。したがって、すべてのブランチには、マニュアルでの統合や探索的なテストに使用できる、オプションで配置されたレビュー環境があります。
古い世界では、terraformを実行するときにvar '環境'に入っている可能性があります。これは、.tfファイルで"${var.environment}"
として補間します。
ワークスペースを使用して、環境変数に渡す必要、あなたはちょうどあなたが正しいワークスペースにあることを確認した後、あなたが管理したいかについては"${terraform.workspace}"
であなたの.tfファイル内補間がありません
variable "vpc_cidr" {
type = "map"
default = {
dev = "172.0.0.0/24"
preprod = "172.0.0.0/24"
prod = "172.0.0.0/24"
}
}
これは、その後、ルックアップ
"${lookup(var.vpc_cidr, terraform.workspace)}"
を使用してaws_vpcリソースで参照することになりますので、同様にすべての変数は、私は、varmapを使用してお勧めしますワークスペースを作成し、選択の
プロセスは非常に簡単です:
terraform workspace
Usage: terraform workspace
Create, change and delete Terraform workspaces.
Subcommands:
show Show the current workspace name.
list List workspaces.
select Select a workspace.
new Create a new workspace.
delete Delete an existing workspace.
ので、次の操作を実行したいプリプロダクションのための新しいワークスペースを作成するには: terraform workspace new preprod
、あなたが実行した場合計画があれば、リソースがないはずです。これがバックエンドで行うことは、 'preprod'の状態を管理するための新しいフォルダを作成することです。
以前のプロジェクトでは、フォルダを使用して環境を区別しました。そのため、すべてのモジュールを含むmodulesというフォルダがあり、次にプロバイダのフォルダには、環境ごとに別々のフォルダ(DEV、TEST、PREPRD、...)が作成されました。ワークスペースはこれがもう必要でないことを意味しますか?私の意見では、TFウェブサイトの説明が少し曖昧だからです。 – Bjorn121
@ Bjorn121これは私が見つけようとしていることです、彼らのウェブサイトの文書は、これが私が理解していることからまだ推奨されていると言えます。彼らのベストプラクティスのレポも時代遅れです。あなたはまだそれを見つけましたか? –