Relax terraform-provider-ct version constraint

* Allow terraform-provider-ct versions v0.6+ (e.g. v0.7.1)
Before, only v0.6.x point updates were allowed
* Update terraform-provider-ct to v0.7.1 in docs
* READ the docs before updating terraform-provider-ct,
as changing worker user-data is handled differently
by different cloud platforms
This commit is contained in:
Dalton Hubble 2020-11-25 14:48:08 -08:00
parent 22565e57e0
commit fa3184fb9c
28 changed files with 41 additions and 52 deletions

View File

@ -10,6 +10,8 @@ Notable changes between versions.
* Update Calico from v3.16.5 to v3.17.0 ([#890](https://github.com/poseidon/typhoon/pull/890)) * Update Calico from v3.16.5 to v3.17.0 ([#890](https://github.com/poseidon/typhoon/pull/890))
* Enable Calico MTU auto-detection * Enable Calico MTU auto-detection
* Remove [workaround](https://github.com/poseidon/typhoon/pull/724) to Calico cni-plugin [issue](https://github.com/projectcalico/cni-plugin/issues/874) * Remove [workaround](https://github.com/poseidon/typhoon/pull/724) to Calico cni-plugin [issue](https://github.com/projectcalico/cni-plugin/issues/874)
* Relax `terraform-provider-ct` version constraint to v0.6+ ([#893](https://github.com/poseidon/typhoon/pull/893))
* Allow upgrading `terraform-provider-ct` to v0.7.x ([warn](https://typhoon.psdn.io/topics/maintenance/#upgrade-terraform-provider-ct))
### AWS ### AWS

View File

@ -9,7 +9,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -9,7 +9,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -9,7 +9,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -9,7 +9,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
matchbox = { matchbox = {

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
matchbox = { matchbox = {

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
digitalocean = { digitalocean = {

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
digitalocean = { digitalocean = {

View File

@ -51,7 +51,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"

View File

@ -48,7 +48,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
azurerm = { azurerm = {
source = "hashicorp/azurerm" source = "hashicorp/azurerm"

View File

@ -138,7 +138,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
matchbox = { matchbox = {
source = "poseidon/matchbox" source = "poseidon/matchbox"

View File

@ -51,7 +51,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
digitalocean = { digitalocean = {
source = "digitalocean/digitalocean" source = "digitalocean/digitalocean"

View File

@ -52,7 +52,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
google = { google = {
source = "hashicorp/google" source = "hashicorp/google"

View File

@ -51,7 +51,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"

View File

@ -48,7 +48,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
azurerm = { azurerm = {
source = "hashicorp/azurerm" source = "hashicorp/azurerm"

View File

@ -138,7 +138,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
matchbox = { matchbox = {
source = "poseidon/matchbox" source = "poseidon/matchbox"

View File

@ -51,7 +51,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
digitalocean = { digitalocean = {
source = "digitalocean/digitalocean" source = "digitalocean/digitalocean"

View File

@ -52,7 +52,7 @@ terraform {
required_providers { required_providers {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "0.6.1" version = "0.7.1"
} }
google = { google = {
source = "hashicorp/google" source = "hashicorp/google"

View File

@ -129,34 +129,22 @@ Typhoon supports multi-controller clusters, so it is possible to upgrade a clust
### Upgrade terraform-provider-ct ### Upgrade terraform-provider-ct
The [terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) plugin parses, validates, and converts Container Linux Configs into Ignition user-data for provisioning instances. Since Typhoon v1.12.2+, the plugin can be updated in-place so that on apply, only workers will be replaced. The [terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) plugin parses, validates, and converts Fedora CoreOS or Flatcar Linux Configs into Ignition user-data for provisioning instances. Since Typhoon v1.12.2+, the plugin can be updated in-place so that on apply, only workers will be replaced.
Add the [terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) plugin binary for your system to `~/.terraform.d/plugins/`, noting the final name.
```sh
wget https://github.com/poseidon/terraform-provider-ct/releases/download/v0.5.0/terraform-provider-ct-v0.6.1-linux-amd64.tar.gz
tar xzf terraform-provider-ct-v0.6.1-linux-amd64.tar.gz
mv terraform-provider-ct-v0.6.1-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.6.1
```
Binary names are versioned. This enables the ability to upgrade different plugins and have clusters pin different versions.
```
$ tree ~/.terraform.d/
/home/user/.terraform.d/
└── plugins
├── terraform-provider-ct_v0.2.1
├── terraform-provider-ct_v0.3.0
├── terraform-provider-ct_v0.6.1
└── terraform-provider-matchbox_v0.4.1
```
Update the version of the `ct` plugin in each Terraform working directory. Typhoon clusters managed in the working directory **must** be v1.12.2 or higher. Update the version of the `ct` plugin in each Terraform working directory. Typhoon clusters managed in the working directory **must** be v1.12.2 or higher.
```tf ```diff
provider "ct" { provider "ct" {}
version = "0.6.1"
terraform {
required_providers {
ct = {
source = "poseidon/ct"
- version = "0.6.1"
+ version = "0.7.1"
}
...
}
} }
``` ```
@ -169,7 +157,6 @@ terraform plan
Apply the change. Worker nodes' user-data will be changed and workers will be replaced. Rollout happens slightly differently on each platform: Apply the change. Worker nodes' user-data will be changed and workers will be replaced. Rollout happens slightly differently on each platform:
#### AWS #### AWS
AWS creates a new worker ASG, then removes the old ASG. New workers join the cluster and old workers disappear. `terraform apply` will hang during this process. AWS creates a new worker ASG, then removes the old ASG. New workers join the cluster and old workers disappear. `terraform apply` will hang during this process.

View File

@ -9,7 +9,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -9,7 +9,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }

View File

@ -8,7 +8,7 @@ terraform {
ct = { ct = {
source = "poseidon/ct" source = "poseidon/ct"
version = "~> 0.6.1" version = "~> 0.6"
} }
} }
} }