Skip to content

Commit

Permalink
Migrate from Terraform v0.12.x to v0.13.x
Browse files Browse the repository at this point in the history
* Recommend Terraform v0.13.x
* Support automatic install of poseidon's provider plugins
* Update tutorial docs for Terraform v0.13.x
* Add migration guide for Terraform v0.13.x (best-effort)
* Require Terraform v0.12.26+ (migration compatibility)
* Require `terraform-provider-ct` v0.6.1
* Require `terraform-provider-matchbox` v0.4.1
* Require `terraform-provider-digitalocean` v1.20+

Related:

* https://www.hashicorp.com/blog/announcing-hashicorp-terraform-0-13/
* https://www.terraform.io/upgrade-guides/0-13.html
* https://registry.terraform.io/providers/poseidon/ct/latest
* https://registry.terraform.io/providers/poseidon/matchbox/latest
  • Loading branch information
dghubble committed Aug 12, 2020
1 parent aab0713 commit 5e70d7e
Show file tree
Hide file tree
Showing 39 changed files with 421 additions and 212 deletions.
13 changes: 13 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ Notable changes between versions.

## Latest

* Migrate from Terraform v0.12.x to v0.13.x (action required)
* Recommend Terraform v0.13.x ([migration guide](https://github.com/poseidon/typhoon/blob/260033e978f03d068b79e553e7c428a64b22a475/docs/topics/maintenance.md#terraform-versions))
* Support automatic install of poseidon's provider plugins
* [poseidon/ct](https://registry.terraform.io/providers/poseidon/ct/latest)
* [poseidon/matchbox](https://registry.terraform.io/providers/poseidon/matchbox/latest)
* Require Terraform v0.12.26+ (migration compatibility)
* Require `terraform-provider-ct` v0.6.1
* Require `terraform-provider-matchbox` v0.4.1
* Update etcd from v3.4.9 to [v3.4.10](https://github.com/etcd-io/etcd/releases/tag/v3.4.10)
* Update CoreDNS from v1.6.7 to [v1.7.0](https://coredns.io/2020/06/15/coredns-1.7.0-release/)
* Update Cilium from v1.8.1 to [v1.8.2](https://github.com/cilium/cilium/releases/tag/v1.8.2)
Expand All @@ -17,6 +25,11 @@ Notable changes between versions.
* Recommend updating `terraform-provider-aws` to v3.0+
* Continue to allow v2.23+, no v3.x specific features are used

### DigitalOcean

* Require `terraform-provider-digitalocean` v1.21+ for Terraform v0.13.x (unenforced)
* Require `terraform-provider-digitalocean` v1.20+ for Terraform v0.12.x

### Fedora CoreOS

* Fix support for Flannel with Fedora CoreOS ([#795](https://github.com/poseidon/typhoon/pull/795))
Expand Down
2 changes: 1 addition & 1 deletion aws/container-linux/kubernetes/bootstrap.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes assets (kubeconfig, manifests)
module "bootstrap" {
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=3675b3a539efd8d341277f0c03322883f97fd992"
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=60540868e070ea95da05fc5a6a5c9a55ce68c58d"

cluster_name = var.cluster_name
api_servers = [format("%s.%s", var.cluster_name, var.dns_zone)]
Expand Down
8 changes: 6 additions & 2 deletions aws/container-linux/kubernetes/versions.tf
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
# Terraform version and plugin versions

terraform {
required_version = "~> 0.12.6"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
aws = ">= 2.23, <= 4.0"
ct = "~> 0.4"
template = "~> 2.1"
null = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}
}
}
9 changes: 7 additions & 2 deletions aws/container-linux/kubernetes/workers/versions.tf
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
# Terraform version and plugin versions

terraform {
required_version = ">= 0.12"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
aws = ">= 2.23, <= 4.0"
ct = "~> 0.4"
template = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}
}
}
2 changes: 1 addition & 1 deletion aws/fedora-coreos/kubernetes/bootstrap.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes assets (kubeconfig, manifests)
module "bootstrap" {
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=3675b3a539efd8d341277f0c03322883f97fd992"
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=60540868e070ea95da05fc5a6a5c9a55ce68c58d"

cluster_name = var.cluster_name
api_servers = [format("%s.%s", var.cluster_name, var.dns_zone)]
Expand Down
8 changes: 6 additions & 2 deletions aws/fedora-coreos/kubernetes/versions.tf
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
# Terraform version and plugin versions

terraform {
required_version = "~> 0.12.6"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
aws = ">= 2.23, <= 4.0"
ct = "~> 0.4"
template = "~> 2.1"
null = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}
}
}
9 changes: 7 additions & 2 deletions aws/fedora-coreos/kubernetes/workers/versions.tf
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
# Terraform version and plugin versions

terraform {
required_version = ">= 0.12"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
aws = ">= 2.23, <= 4.0"
ct = "~> 0.4"
template = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}
}
}
2 changes: 1 addition & 1 deletion azure/container-linux/kubernetes/bootstrap.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes assets (kubeconfig, manifests)
module "bootstrap" {
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=3675b3a539efd8d341277f0c03322883f97fd992"
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=60540868e070ea95da05fc5a6a5c9a55ce68c58d"

cluster_name = var.cluster_name
api_servers = [format("%s.%s", var.cluster_name, var.dns_zone)]
Expand Down
8 changes: 6 additions & 2 deletions azure/container-linux/kubernetes/versions.tf
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# Terraform version and plugin versions

terraform {
required_version = "~> 0.12.6"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
azurerm = "~> 2.8"
ct = "~> 0.4"
template = "~> 2.1"
null = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}
}
}

12 changes: 11 additions & 1 deletion azure/container-linux/kubernetes/workers/versions.tf
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
# Terraform version and plugin versions

terraform {
required_version = ">= 0.12"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
azurerm = "~> 2.8"
template = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}
}
}
2 changes: 1 addition & 1 deletion azure/fedora-coreos/kubernetes/bootstrap.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes assets (kubeconfig, manifests)
module "bootstrap" {
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=3675b3a539efd8d341277f0c03322883f97fd992"
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=60540868e070ea95da05fc5a6a5c9a55ce68c58d"

cluster_name = var.cluster_name
api_servers = [format("%s.%s", var.cluster_name, var.dns_zone)]
Expand Down
8 changes: 6 additions & 2 deletions azure/fedora-coreos/kubernetes/versions.tf
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# Terraform version and plugin versions

terraform {
required_version = "~> 0.12.6"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
azurerm = "~> 2.8"
ct = "~> 0.4"
template = "~> 2.1"
null = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}
}
}

12 changes: 11 additions & 1 deletion azure/fedora-coreos/kubernetes/workers/versions.tf
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
# Terraform version and plugin versions

terraform {
required_version = ">= 0.12"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
azurerm = "~> 2.8"
template = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}
}
}
2 changes: 1 addition & 1 deletion bare-metal/container-linux/kubernetes/bootstrap.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes assets (kubeconfig, manifests)
module "bootstrap" {
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=3675b3a539efd8d341277f0c03322883f97fd992"
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=60540868e070ea95da05fc5a6a5c9a55ce68c58d"

cluster_name = var.cluster_name
api_servers = [var.k8s_domain_name]
Expand Down
14 changes: 11 additions & 3 deletions bare-metal/container-linux/kubernetes/versions.tf
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
# Terraform version and plugin versions

terraform {
required_version = "~> 0.12.6"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
matchbox = "~> 0.3"
ct = "~> 0.4"
template = "~> 2.1"
null = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}

matchbox = {
source = "poseidon/matchbox"
version = "~> 0.4.1"
}
}
}

2 changes: 1 addition & 1 deletion bare-metal/fedora-coreos/kubernetes/bootstrap.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes assets (kubeconfig, manifests)
module "bootstrap" {
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=3675b3a539efd8d341277f0c03322883f97fd992"
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=60540868e070ea95da05fc5a6a5c9a55ce68c58d"

cluster_name = var.cluster_name
api_servers = [var.k8s_domain_name]
Expand Down
14 changes: 11 additions & 3 deletions bare-metal/fedora-coreos/kubernetes/versions.tf
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
# Terraform version and plugin versions

terraform {
required_version = "~> 0.12.6"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
matchbox = "~> 0.3"
ct = "~> 0.4"
template = "~> 2.1"
null = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}

matchbox = {
source = "poseidon/matchbox"
version = "~> 0.4.1"
}
}
}
2 changes: 1 addition & 1 deletion digital-ocean/container-linux/kubernetes/bootstrap.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes assets (kubeconfig, manifests)
module "bootstrap" {
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=3675b3a539efd8d341277f0c03322883f97fd992"
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=60540868e070ea95da05fc5a6a5c9a55ce68c58d"

cluster_name = var.cluster_name
api_servers = [format("%s.%s", var.cluster_name, var.dns_zone)]
Expand Down
18 changes: 13 additions & 5 deletions digital-ocean/container-linux/kubernetes/versions.tf
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
# Terraform version and plugin versions

terraform {
required_version = "~> 0.12.6"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
digitalocean = "~> 1.16"
ct = "~> 0.4"
template = "~> 2.1"
null = "~> 2.1"
template = "~> 2.1"
null = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}

digitalocean = {
source = "digitalocean/digitalocean"
version = "~> 1.20"
}
}
}

2 changes: 1 addition & 1 deletion digital-ocean/fedora-coreos/kubernetes/bootstrap.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes assets (kubeconfig, manifests)
module "bootstrap" {
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=3675b3a539efd8d341277f0c03322883f97fd992"
source = "git::https://github.com/poseidon/terraform-render-bootstrap.git?ref=60540868e070ea95da05fc5a6a5c9a55ce68c58d"

cluster_name = var.cluster_name
api_servers = [format("%s.%s", var.cluster_name, var.dns_zone)]
Expand Down
18 changes: 13 additions & 5 deletions digital-ocean/fedora-coreos/kubernetes/versions.tf
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
# Terraform version and plugin versions

terraform {
required_version = "~> 0.12.6"
required_version = ">= 0.12.26, < 0.14.0"
required_providers {
digitalocean = "~> 1.16"
ct = "~> 0.4"
template = "~> 2.1"
null = "~> 2.1"
template = "~> 2.1"
null = "~> 2.1"

ct = {
source = "poseidon/ct"
version = "~> 0.6.1"
}

digitalocean = {
source = "digitalocean/digitalocean"
version = "~> 1.20"
}
}
}

30 changes: 16 additions & 14 deletions docs/fedora-coreos/aws.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,15 @@ Controller hosts are provisioned to run an `etcd-member` peer and a `kubelet` se

* AWS Account and IAM credentials
* AWS Route53 DNS Zone (registered Domain Name or delegated subdomain)
* Terraform v0.12.6+ and [terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) installed locally
* Terraform v0.13.0+

## Terraform Setup

Install [Terraform](https://www.terraform.io/downloads.html) v0.12.6+ on your system.
Install [Terraform](https://www.terraform.io/downloads.html) v0.13.0+ on your system.

```sh
$ terraform version
Terraform v0.12.21
```

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.5.0-linux-amd64.tar.gz
tar xzf terraform-provider-ct-v0.5.0-linux-amd64.tar.gz
mv terraform-provider-ct-v0.5.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.5.0
Terraform v0.13.0
```

Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`).
Expand All @@ -49,13 +41,23 @@ Configure the AWS provider to use your access key credentials in a `providers.tf

```tf
provider "aws" {
version = "3.1.0"
region = "eu-central-1"
shared_credentials_file = "/home/user/.config/aws/credentials"
}
provider "ct" {
version = "0.5.0"
provider "ct" {}
terraform {
required_providers {
ct = {
source = "poseidon/ct"
version = "0.6.1"
}
aws = {
source = "hashicorp/aws"
version = "3.1.0"
}
}
}
```

Expand Down
Loading

0 comments on commit 5e70d7e

Please sign in to comment.