Stackについて
A stack represents a collection of infrastructure that CDK for Terraform (CDKTF) synthesizes as a dedicated Terraform configuration. Stacks allow you to separate the state management for multiple environments within an application.
Stackごとにstateが分離される模様
ref: https://www.terraform.io/cdktf/concepts/stacks
ベストプラクティスについて
ベストプラクティスはここにある
Terraformを直接使っているときと原則は変わってないと思われ
- state分離 -> Stack分離
- module(再利用可能なコンポーネント)関連 -> Construct
- シークレットはterraform variable使う(TerraformVariable)
TerraformVariableの挙動、環境変数周り
現状、TerraformVariableは直接値を参照できないっぽい。
console.logで中を見たときに参照先を示すような文字列が入っているのみ。
GcsBackendで値を参照したときには正常に動作しなかった。
- process.env.XXXで参照すべきところ
- TerraformVariableで参照すべきところ(sensitive: trueオプション使いたいところ)
があるっぽい。
terraform importやterraform state周りのやり方について
cdktf.out/stacks/${stack_name}以下でやればよいっぽい。 ディレクトリ位置以外は特段変わりなく普通に下記のようにterraformコマンドが使える
|
|
Constrct#idについて
CDKTF infers a unique name for each instance from its Construct#id and parent construct. Instances that share the same parent element are considered to be part of the same scope. If you instantiate multiple constructs within the same scope, you must set a different name for each instance to avoid naming conflicts.
同一スコープにおいてユニークでなければならない ref: https://www.terraform.io/cdktf/concepts/constructs
公式より下記
|
|
ライブラリ
google_project_serviceに依存させてもスルーされる
CDK for Terraform関係ないだろうけど、depends_onでgoogle_project_serviceに依存させてもスルーされる 下記リンク先見る限りは一応は解決されている模様(以前はスクリプト書いて対応していたが…今は不要なはず?) ref: https://github.com/hashicorp/terraform-provider-google/issues/1393