Closed yamamoto-febc closed 5 years ago
terraform 0.12upgrade
で現在のtfファイルをそのままアップグレード可能にするTerraform v0.12 betaのリリースに合わせてmasterブランチをterraform-v0.12-dev
に切り替える。
v0.11系についてはその時点で新規ブランチを作成する。 v0.11系ブランチについてはv0.12 GAリリースまではバグ修正のみ行い、以降はメンテしない。
v0.12向けprovider SDKはv0.10/v0.11と互換性があり、(場合によっては)共通のHCLを用いることも可能となっている。 しかしこのプロバイダーでは現在acc testがv0.12以降のみに対応する形となっている。
v0.11系とv0.12系でコードを分けると今後のメンテナンスが煩雑になりそうなのでterraform-providers配下のプロバイダーと同じように対応する方針に切り替える。
例:
$ GO111MODULE=on go get github.com/hashicorp/terraform@pluginsdk-v0.12-early6
$ GO111MODULE=on go mod tidy
$ GO111MODULE=on go mod vendor
プロバイダー側は現時点のコードであればv0.11/v0.12で互換性があり、provider SDKを切り替えるだけで対応出来る。
(以下対応は https://github.com/sacloud/terraform-provider-sakuracloud/issues/324#issuecomment-479342477 で不要となった) ~このためmasterを一旦v0.11系に戻し、v0.12対応版の方を別ブランチで対応するようにする。~ ~別ブランチではコードの修正は行わず、provider SDKの切り替えのみを行うようにする。~
github.com/hashicorp/terraform@pluginsdk-v0.12-early6
でのacceptance testが通るようになったため、masterでのprovider SDKをpluginsdk-v0.12-early6
に切り替える。
プロバイダーのコード上インパクトのある変更がほとんどないこと、v0.11/v0.12両方との互換性を保てることからメジャーバージョンアップ(v2.0.0)ではなくマイナーバージョンアップ(v1.x.x)とする。
v1.11にて対応済み。
Terraform v0.12でDynamic Nested Blocksがサポートされる。
これに伴い、parent-child型のリソース(GSLBとGSLB Serverなど)についてはparent側にNested Blockとして子リソースを定義可能とする。
子リソースは互換性維持の他にも親子でライフサイクルが異なる運用を行う場合もあるため(基本的には)従来通り利用可能とする。 親子に重複する定義を記載するのはサポート対象外とする(動作するかもしれないが無保証)。