Add Container Linux Config snippets feature

* Introduce the ability to support Container Linux Config
"snippets" for controllers and workers on cloud platforms.
This allows end-users to customize hosts by providing Container
Linux configs that are additively merged into the base configs
defined by Typhoon. Config snippets are validated, merged, and
show any errors during `terraform plan`
* Example uses include adding systemd units, network configs,
mounts, files, raid arrays, or other disk provisioning features
provided by Container Linux Configs (using Ignition low-level)
* Requires terraform-provider-ct v0.2.1 plugin
This commit is contained in:
Dalton Hubble
2018-02-20 08:36:21 -08:00
parent 88aa9a46e5
commit f3730b2bfa
14 changed files with 83 additions and 19 deletions

View File

@ -59,7 +59,7 @@ variable "kubeconfig" {
variable "ssh_authorized_key" {
type = "string"
description = "SSH public key for logging in as user 'core'"
description = "SSH public key for user 'core'"
}
variable "service_cidr" {
@ -78,16 +78,22 @@ variable "cluster_domain_suffix" {
default = "cluster.local"
}
variable "clc_snippets" {
type = "list"
description = "Container Linux Config snippets"
default = []
}
# unofficial, undocumented, unsupported, temporary
variable "accelerator_type" {
type = "string"
default = ""
type = "string"
default = ""
description = "Google Compute Engine accelerator type (e.g. nvidia-tesla-k80, see gcloud compute accelerator-types list)"
}
variable "accelerator_count" {
type = "string"
default = "0"
type = "string"
default = "0"
description = "Number of compute engine accelerators"
}

View File

@ -32,6 +32,7 @@ data "template_file" "worker_config" {
data "ct_config" "worker_ign" {
content = "${data.template_file.worker_config.rendered}"
pretty_print = false
snippets = ["${var.clc_snippets}"]
}
resource "google_compute_instance_template" "worker" {
@ -63,11 +64,11 @@ resource "google_compute_instance_template" "worker" {
}
can_ip_forward = true
tags = ["worker", "${var.cluster_name}-worker", "${var.name}-worker"]
tags = ["worker", "${var.cluster_name}-worker", "${var.name}-worker"]
guest_accelerator {
count = "${var.accelerator_count}"
type = "${var.accelerator_type}"
type = "${var.accelerator_type}"
}
lifecycle {