From 5272497173cd15bced9c268ac69407bd57625868 Mon Sep 17 00:00:00 2001 From: Dalton Hubble Date: Sat, 28 Mar 2020 16:11:06 -0700 Subject: [PATCH] Add support for Fedora CoreOS snippets * Refresh snippets customization docs * Requires terraform-provider-ct v0.5+ --- CHANGES.md | 6 + .../fedora-coreos/kubernetes/profiles.tf | 2 + .../fedora-coreos/kubernetes/variables.tf | 4 +- docs/advanced/customization.md | 129 +++++++++++------- docs/cl/aws.md | 8 +- docs/cl/azure.md | 8 +- docs/cl/bare-metal.md | 8 +- docs/cl/digital-ocean.md | 8 +- docs/cl/google-cloud.md | 8 +- docs/fedora-coreos/aws.md | 12 +- docs/fedora-coreos/bare-metal.md | 10 +- docs/fedora-coreos/google-cloud.md | 12 +- 12 files changed, 124 insertions(+), 91 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index cc2e337cf..87254351e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -18,6 +18,8 @@ Notable changes between versions. * Use a `fedora-coreos` module for Fedora CoreOS * Use a `container-linux` module with OS set for Flatcar Linux (varies, see docs) * CoreOS Container Linux [won't receive updates](https://coreos.com/os/eol/) after May 2020 +* Add support for Fedora CoreOS snippets (`terraform-provider-ct` v0.5+) +* Recommend updating `terraform-provider-ct` plugin from v0.4.0 to [v0.5.0](https://github.com/poseidon/terraform-provider-ct/releases/tag/v0.5.0) * Set Fedora CoreOS log driver back to the default `journald` ([#681](https://github.com/poseidon/typhoon/pull/681)) * Deprecate `asset_dir` variable and remove docs ([#678](https://github.com/poseidon/typhoon/pull/678)) * Deprecate support for [gitRepo](https://kubernetes.io/docs/concepts/storage/volumes/#gitrepo) volumes. A future release will drop support. @@ -27,6 +29,10 @@ Notable changes between versions. * Fix Fedora CoreOS AMI to filter for stable images ([#685](https://github.com/poseidon/typhoon/pull/685)) * Latest Fedora CoreOS `testing` or `bodhi-update` images could be chosen depending on the region +#### Bare-Metal + +* Update default `os_stream` from testing to stable + #### DigitalOcean * Rename `image` variable to `os_image` for consistency ([#677](https://github.com/poseidon/typhoon/pull/677)) (action required) diff --git a/bare-metal/fedora-coreos/kubernetes/profiles.tf b/bare-metal/fedora-coreos/kubernetes/profiles.tf index 8d75b8307..8a3cfdb16 100644 --- a/bare-metal/fedora-coreos/kubernetes/profiles.tf +++ b/bare-metal/fedora-coreos/kubernetes/profiles.tf @@ -50,6 +50,7 @@ data "ct_config" "controller-ignitions" { content = data.template_file.controller-configs.*.rendered[count.index] strict = true + snippets = lookup(var.snippets, var.controllers.*.name[count.index], []) } data "template_file" "controller-configs" { @@ -85,6 +86,7 @@ data "ct_config" "worker-ignitions" { content = data.template_file.worker-configs.*.rendered[count.index] strict = true + snippets = lookup(var.snippets, var.workers.*.name[count.index], []) } data "template_file" "worker-configs" { diff --git a/bare-metal/fedora-coreos/kubernetes/variables.tf b/bare-metal/fedora-coreos/kubernetes/variables.tf index 45fc0341c..26b1cf655 100644 --- a/bare-metal/fedora-coreos/kubernetes/variables.tf +++ b/bare-metal/fedora-coreos/kubernetes/variables.tf @@ -13,12 +13,12 @@ variable "matchbox_http_endpoint" { variable "os_stream" { type = string description = "Fedora CoreOS release stream (e.g. testing, stable)" - default = "testing" + default = "stable" } variable "os_version" { type = string - description = "Fedora CoreOS version to PXE and install (e.g. 30.20190712.0)" + description = "Fedora CoreOS version to PXE and install (e.g. 31.20200310.3.0)" } # machines diff --git a/docs/advanced/customization.md b/docs/advanced/customization.md index 2fd3373fb..496352c49 100644 --- a/docs/advanced/customization.md +++ b/docs/advanced/customization.md @@ -8,24 +8,88 @@ Typhoon modules accept Terraform input variables for customizing clusters in mer ## Addons -Clusters are kept to a minimal Kubernetes control plane by offering components like Nginx Ingress Controller, Prometheus, Grafana, and Heapster as optional post-install [addons](https://github.com/poseidon/typhoon/tree/master/addons). Customize addons by modifying a copy of our addon manifests. +Clusters are kept to a minimal Kubernetes control plane by offering components like Nginx Ingress Controller, Prometheus, and Grafana as optional post-install [addons](https://github.com/poseidon/typhoon/tree/master/addons). Customize addons by modifying a copy of our addon manifests. ## Hosts -### Container Linux +Typhoon uses the [Ignition](https://github.com/coreos/ignition) system of Fedora CoreOS and Flatcar Linux to immutably declare a system via first-boot disk provisioning. Fedora CoreOS uses a [Fedora CoreOS Config](https://docs.fedoraproject.org/en-US/fedora-coreos/fcct-config/) (FCC) and Flatcar Linux uses a [Container Linux Config](https://github.com/coreos/container-linux-config-transpiler/blob/master/doc/examples.md) (CLC). These define disk partitions, filesystems, systemd units, dropins, config files, mount units, raid arrays, and users. + +Controller and worker instances form a minimal and secure Kubernetes cluster on each platform. Typhoon provides the **snippets** feature to accept Fedora CoreOS Configs or Container Linux Configs to validate and additively merge into instance declarations. This allows advanced host customization and experimentation. + +!!! note + Snippets cannot be used to modify an already existing instance, the antithesis of immutable provisioning. Ignition fully declares a system on first boot only. + +!!! danger + Snippets provide the powerful host customization abilities of Ignition. You are responsible for additional units, configs, files, and conflicts. !!! danger - Container Linux Configs provide powerful host customization abilities. You are responsible for the additional configs defined for hosts. + Edits to snippets for controller instances can (correctly) cause Terraform to observe a diff (if not otherwise suppressed) and propose destroying and recreating controller(s). Recognize that this is destructive since controllers run etcd and are stateful. See [blue/green](/topics/maintenance/#upgrades) clusters. -Container Linux Configs (CLCs) declare how a Container Linux instance's disk should be provisioned on first boot from disk. CLCs define disk partitions, filesystems, files, systemd units, dropins, networkd configs, mount units, raid arrays, and users. Typhoon creates controller and worker instances with base Container Linux Configs to create a minimal, secure Kubernetes cluster on each platform. +### Fedora CoreOS -Typhoon AWS, Azure, bare-metal, DigitalOcean, and Google Cloud support CLC *snippets* - valid Container Linux Configs that are validated and additively merged into the Typhoon base config during `terraform plan`. This allows advanced host customizations and experimentation. +!!! note + Fedora CoreOS snippets require `terraform-provider-ct` v0.5+ -#### Examples +Define a Fedora CoreOS Config (FCC) ([docs](https://docs.fedoraproject.org/en-US/fedora-coreos/fcct-config/), [config](https://github.com/coreos/fcct/blob/master/docs/configuration-v1_0.md), [examples](https://github.com/coreos/fcct/blob/master/docs/examples.md)) in version control near your Terraform workspace directory (e.g. perhaps in a `snippets` subdirectory). You may organize snippets into multiple files, if desired. + +For example, ensure an `/opt/hello` file is created with permissions 0644. + +```yaml +# custom-files +variant: fcos +version: 1.0.0 +storage: + files: + - path: /opt/hello + contents: + inline: | + Hello World + mode: 0644 +``` -Container Linux [docs](https://coreos.com/os/docs/latest/clc-examples.html) show many simple config examples. Ensure a file `/opt/hello` is created with permissions 0644. +Reference the FCC contents by location (e.g. `file("./custom-units.yaml")`). On [AWS](/fedora-coreos/aws/#cluster) or [Google Cloud](/fedora-coreos/google-cloud/#cluster) extend the `controller_snippets` or `worker_snippets` list variables. +```tf +module "nemo" { + ... + + controller_count = 1 + worker_count = 2 + controller_snippets = [ + file("./custom-files"), + file("./custom-units"), + ] + worker_snippets = [ + file("./custom-files"), + file("./custom-units")", + ] + ... +} +``` + +On [Bare-Metal](/fedora-coreos/bare-metal/#cluster), different FCCs may be used for each node (since hardware may be heterogeneous). Extend the `snippets` map variable by mapping a controller or worker name key to a list of snippets. + +```tf +module "mercury" { + ... + snippets = { + "node2" = [file("./units/hello.yaml")] + "node3" = [ + file("./units/world.yaml"), + file("./units/hello.yaml"), + ] + } + ... +} ``` + +### Container Linux + +Define a Container Linux Config (CLC) ([config](https://github.com/coreos/container-linux-config-transpiler/blob/master/doc/configuration.md), [examples](https://github.com/coreos/container-linux-config-transpiler/blob/master/doc/examples.md)) in version control near your Terraform workspace directory (e.g. perhaps in a `snippets` subdirectory). You may organize snippets into multiple files, if desired. + +For example, ensure an `/opt/hello` file is created with permissions 0644. + +```yaml # custom-files storage: files: @@ -37,9 +101,9 @@ storage: mode: 0644 ``` -Ensure a systemd unit `hello.service` is created and a dropin `50-etcd-cluster.conf` is added for `etcd-member.service`. +Or ensure a systemd unit `hello.service` is created and a dropin `50-etcd-cluster.conf` is added for `etcd-member.service`. -``` +```yaml # custom-units systemd: units: @@ -61,17 +125,9 @@ systemd: Environment="ETCD_LOG_PACKAGE_LEVELS=etcdserver=WARNING,security=DEBUG" ``` -#### Specification - -View the Container Linux Config [format](https://coreos.com/os/docs/1576.4.0/configuration.html) to read about each field. +Reference the CLC contents by location (e.g. `file("./custom-units.yaml")`). On [AWS](/cl/aws/#cluster), [Azure](/cl/azure/#cluster), [DigitalOcean](/cl/digital-ocean/#cluster), or [Google Cloud](/cl/google-cloud/#cluster) extend the `controller_clc_snippets` or `worker_clc_snippets` list variables. -#### Usage - -Write Container Linux Configs *snippets* as files in the repository where you keep Terraform configs for clusters (perhaps in a `clc` or `snippets` subdirectory). You may organize snippets in multiple files as desired, provided they are each valid. - -[AWS](/cl/aws/#cluster), [Azure](/cl/azure/#cluster), [DigitalOcean](/cl/digital-ocean/#cluster), and [Google Cloud](/cl/google-cloud/#cluster) clusters allow populating a list of `controller_clc_snippets` or `worker_clc_snippets`. - -``` +```tf module "nemo" { ... @@ -89,16 +145,11 @@ module "nemo" { } ``` -[Bare-Metal](/cl/bare-metal/#cluster) clusters allow different Container Linux snippets to be used for each node (since hardware may be heterogeneous). Populate the optional `clc_snippets` map variable with any controller or worker name keys and lists of snippets. +On [Bare-Metal](/cl/bare-metal/#cluster), different CLCs may be used for each node (since hardware may be heterogeneous). Extend the `clc_snippets` map variable by mapping a controller or worker name key to a list of snippets. -``` +```tf module "mercury" { ... - controller_names = ["node1"] - worker_names = [ - "node2", - "node3", - ] clc_snippets = { "node2" = [file("./units/hello.yaml")] "node3" = [ @@ -110,32 +161,6 @@ module "mercury" { } ``` -Plan the resources to be created. - -``` -$ terraform plan -Plan: 54 to add, 0 to change, 0 to destroy. -``` - -Most syntax errors in CLCs can be caught during planning. For example, mangle the indentation in one of the CLC files: - -``` -$ terraform plan -... -error parsing Container Linux Config: error: yaml: line 3: did not find expected '-' indicator -``` - -Undo the mangle. Apply the changes to create the cluster per the tutorial. - -``` -$ terraform apply -``` - -Container Linux Configs (and the CoreOS Ignition system) create immutable infrastructure. Disk provisioning is performed only on first boot from disk. That means if you change a snippet used by an instance, Terraform will (correctly) try to destroy and recreate that instance. Be careful! - -!!! danger - Destroying and recreating controller instances is destructive! etcd runs on controller instances and stores data there. Do not modify controller snippets. See [blue/green](/topics/maintenance/#upgrades) clusters. - ## Architecture Typhoon chooses variables to expose with purpose. If you must customize clusters in ways that aren't supported by input variables, fork Typhoon and maintain a repository with customizations. Reference the repository by changing the username. diff --git a/docs/cl/aws.md b/docs/cl/aws.md index db588b615..c5f98aaf1 100644 --- a/docs/cl/aws.md +++ b/docs/cl/aws.md @@ -24,9 +24,9 @@ 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.4.0/terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -mv terraform-provider-ct-v0.4.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.4.0 +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 ``` Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`). @@ -55,7 +55,7 @@ provider "aws" { } provider "ct" { - version = "0.4.0" + version = "0.5.0" } ``` diff --git a/docs/cl/azure.md b/docs/cl/azure.md index e3c9dca48..02e70e0b6 100644 --- a/docs/cl/azure.md +++ b/docs/cl/azure.md @@ -27,9 +27,9 @@ 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.4.0/terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -mv terraform-provider-ct-v0.4.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.4.0 +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 ``` Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`). @@ -54,7 +54,7 @@ provider "azurerm" { } provider "ct" { - version = "0.4.0" + version = "0.5.0" } ``` diff --git a/docs/cl/bare-metal.md b/docs/cl/bare-metal.md index 177ecd96f..4f41ba64c 100644 --- a/docs/cl/bare-metal.md +++ b/docs/cl/bare-metal.md @@ -125,9 +125,9 @@ mv terraform-provider-matchbox-v0.3.0-linux-amd64/terraform-provider-matchbox ~/ 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.4.0/terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -mv terraform-provider-ct-v0.4.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.4.0 +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 ``` Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`). @@ -150,7 +150,7 @@ provider "matchbox" { } provider "ct" { - version = "0.4.0" + version = "0.5.0" } ``` diff --git a/docs/cl/digital-ocean.md b/docs/cl/digital-ocean.md index fd4a5bc73..3104b802a 100644 --- a/docs/cl/digital-ocean.md +++ b/docs/cl/digital-ocean.md @@ -24,9 +24,9 @@ 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.4.0/terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -mv terraform-provider-ct-v0.4.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.4.0 +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 ``` Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`). @@ -55,7 +55,7 @@ provider "digitalocean" { } provider "ct" { - version = "0.4.0" + version = "0.5.0" } ``` diff --git a/docs/cl/google-cloud.md b/docs/cl/google-cloud.md index 9f2bb03ce..aaa9e1dc1 100644 --- a/docs/cl/google-cloud.md +++ b/docs/cl/google-cloud.md @@ -24,9 +24,9 @@ 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.4.0/terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -mv terraform-provider-ct-v0.4.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.4.0 +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 ``` Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`). @@ -56,7 +56,7 @@ provider "google" { } provider "ct" { - version = "0.4.0" + version = "0.5.0" } ``` diff --git a/docs/fedora-coreos/aws.md b/docs/fedora-coreos/aws.md index da5ce5267..825856c67 100644 --- a/docs/fedora-coreos/aws.md +++ b/docs/fedora-coreos/aws.md @@ -24,9 +24,9 @@ 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.4.0/terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -mv terraform-provider-ct-v0.4.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.4.0 +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 ``` Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`). @@ -55,7 +55,7 @@ provider "aws" { } provider "ct" { - version = "0.4.0" + version = "0.5.0" } ``` @@ -214,8 +214,8 @@ Reference the DNS zone id with `aws_route53_zone.zone-for-clusters.zone_id`. | disk_iops | IOPS of the EBS volume | 0 (i.e. auto) | 400 | | worker_target_groups | Target group ARNs to which worker instances should be added | [] | [aws_lb_target_group.app.id] | | worker_price | Spot price in USD for worker instances or 0 to use on-demand instances | 0 | 0.10 | -| controller_snippets | Controller Fedora CoreOS Config snippets | [] | UNSUPPORTED | -| worker_clc_snippets | Worker Fedora CoreOS Config snippets | [] | UNSUPPORTED | +| controller_snippets | Controller Fedora CoreOS Config snippets | [] | [examples](/advanced/customization/) | +| worker_snippets | Worker Fedora CoreOS Config snippets | [] | [examples](/advanced/customization/) | | networking | Choice of networking provider | "calico" | "calico" or "flannel" | | network_mtu | CNI interface MTU (calico only) | 1480 | 8981 | | host_cidr | CIDR IPv4 range to assign to EC2 instances | "10.0.0.0/16" | "10.1.0.0/16" | diff --git a/docs/fedora-coreos/bare-metal.md b/docs/fedora-coreos/bare-metal.md index 31ae83831..05ca82597 100644 --- a/docs/fedora-coreos/bare-metal.md +++ b/docs/fedora-coreos/bare-metal.md @@ -125,9 +125,9 @@ mv terraform-provider-matchbox-v0.3.0-linux-amd64/terraform-provider-matchbox ~/ 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.4.0/terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -mv terraform-provider-ct-v0.4.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.4.0 +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 ``` Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`). @@ -150,7 +150,7 @@ provider "matchbox" { } provider "ct" { - version = "0.4.0" + version = "0.5.0" } ``` @@ -341,7 +341,7 @@ Check the [variables.tf](https://github.com/poseidon/typhoon/blob/master/bare-me | install_disk | Disk device where Fedora CoreOS should be installed | "sda" (not "/dev/sda" like Container Linux) | "sdb" | | networking | Choice of networking provider | "calico" | "calico" or "flannel" | | network_mtu | CNI interface MTU (calico-only) | 1480 | - | -| snippets | Map from machine names to lists of Fedora CoreOS Config snippets | {} | UNSUPPORTED | +| snippets | Map from machine names to lists of Fedora CoreOS Config snippets | {} | [examples](/advanced/customization/) | | network_ip_autodetection_method | Method to detect host IPv4 address (calico-only) | "first-found" | "can-reach=10.0.0.1" | | pod_cidr | CIDR IPv4 range to assign to Kubernetes pods | "10.2.0.0/16" | "10.22.0.0/16" | | service_cidr | CIDR IPv4 range to assign to Kubernetes services | "10.3.0.0/16" | "10.3.0.0/24" | diff --git a/docs/fedora-coreos/google-cloud.md b/docs/fedora-coreos/google-cloud.md index 9d84b2313..1f0bfd7ad 100644 --- a/docs/fedora-coreos/google-cloud.md +++ b/docs/fedora-coreos/google-cloud.md @@ -27,9 +27,9 @@ 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.4.0/terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.4.0-linux-amd64.tar.gz -mv terraform-provider-ct-v0.4.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.4.0 +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 ``` Read [concepts](/architecture/concepts/) to learn about Terraform, modules, and organizing resources. Change to your infrastructure repository (e.g. `infra`). @@ -59,7 +59,7 @@ provider "google" { } provider "ct" { - version = "0.4.0" + version = "0.5.0" } ``` @@ -239,8 +239,8 @@ resource "google_dns_managed_zone" "zone-for-clusters" { | os_image | Fedora CoreOS image for compute instances | "" | "fedora-coreos-31-20200113-3-1" | | disk_size | Size of the disk in GB | 40 | 100 | | worker_preemptible | If enabled, Compute Engine will terminate workers randomly within 24 hours | false | true | -| controller_snippets | Controller Fedora CoreOS Config snippets | [] | UNSUPPORTED | -| worker_snippets | Worker Fedora CoreOS Config snippets | [] | UNSUPPORTED | +| controller_snippets | Controller Fedora CoreOS Config snippets | [] | [examples](/advanced/customization/) | +| worker_snippets | Worker Fedora CoreOS Config snippets | [] | [examples](/advanced/customization/) | | networking | Choice of networking provider | "calico" | "calico" or "flannel" | | pod_cidr | CIDR IPv4 range to assign to Kubernetes pods | "10.2.0.0/16" | "10.22.0.0/16" | | service_cidr | CIDR IPv4 range to assign to Kubernetes services | "10.3.0.0/16" | "10.3.0.0/24" |