sacloud / terraform-provider-sakuracloud

Terraform provider for SakuraCloud
https://docs.usacloud.jp/terraform
Apache License 2.0
71 stars 22 forks source link

Terraform v0.12対応 #324

Closed yamamoto-febc closed 5 years ago

yamamoto-febc commented 6 years ago

Terraform v0.12でDynamic Nested Blocksがサポートされる。

これに伴い、parent-child型のリソース(GSLBとGSLB Serverなど)についてはparent側にNested Blockとして子リソースを定義可能とする。

子リソースは互換性維持の他にも親子でライフサイクルが異なる運用を行う場合もあるため(基本的には)従来通り利用可能とする。 親子に重複する定義を記載するのはサポート対象外とする(動作するかもしれないが無保証)。

yamamoto-febc commented 5 years ago
yamamoto-febc commented 5 years ago

Terraform v0.12 betaのリリースに合わせてmasterブランチをterraform-v0.12-devに切り替える。

v0.11系についてはその時点で新規ブランチを作成する。 v0.11系ブランチについてはv0.12 GAリリースまではバグ修正のみ行い、以降はメンテしない。

yamamoto-febc commented 5 years ago

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
yamamoto-febc commented 5 years ago

プロバイダー側は現時点のコードであればv0.11/v0.12で互換性があり、provider SDKを切り替えるだけで対応出来る。

(以下対応は https://github.com/sacloud/terraform-provider-sakuracloud/issues/324#issuecomment-479342477 で不要となった) ~このためmasterを一旦v0.11系に戻し、v0.12対応版の方を別ブランチで対応するようにする。~ ~別ブランチではコードの修正は行わず、provider SDKの切り替えのみを行うようにする。~

yamamoto-febc commented 5 years ago

github.com/hashicorp/terraform@pluginsdk-v0.12-early6でのacceptance testが通るようになったため、masterでのprovider SDKをpluginsdk-v0.12-early6に切り替える。

yamamoto-febc commented 5 years ago

プロバイダーのコード上インパクトのある変更がほとんどないこと、v0.11/v0.12両方との互換性を保てることからメジャーバージョンアップ(v2.0.0)ではなくマイナーバージョンアップ(v1.x.x)とする。

yamamoto-febc commented 5 years ago

v1.11にて対応済み。