Allow Flatcar Linux os_image on AWS, rename os_channel
* Replace os_channel variable with os_image to align naming across clouds. Users who set this option to stable, beta, or alpha should now set os_image to coreos-stable, coreos-beta, or coreos-alpha. * Default os_image to coreos-stable. This continues to use the most recent image from the stable channel as always. * Allow Container Linux derivative Flatcar Linux by setting os_image to `flatcar-stable`, `flatcar-beta`, `flatcar-alpha`
This commit is contained in:
parent
f2ee75ac98
commit
5eb11f5104
|
@ -9,10 +9,12 @@ Notable changes between versions.
|
||||||
|
|
||||||
#### AWS
|
#### AWS
|
||||||
|
|
||||||
* Allow "preemptible" workers via spot instances ([#202](https://github.com/poseidon/typhoon/pull/202))
|
* Allow preemptible workers via spot instances ([#202](https://github.com/poseidon/typhoon/pull/202))
|
||||||
* Add `worker_price` to allow worker spot instances. Defaults to empty string for the worker autoscaling group to use regular on-demand instances.
|
* Add `worker_price` to allow worker spot instances. Default to empty string for the worker autoscaling group to use regular on-demand instances.
|
||||||
* Add `spot_price` to internal `workers` module for spot [worker pools](https://typhoon.psdn.io/advanced/worker-pools/)
|
* Add `spot_price` to internal `workers` module for spot [worker pools](https://typhoon.psdn.io/advanced/worker-pools/)
|
||||||
* Note: Unlike GCP `preemptible` workers, spot instances require you to pick a bid price.
|
* Allow Container Linux derivative [Flatcar Linux](https://docs.flatcar-linux.org/) by setting `os_image` to `flatcar-stable`, `flatcar-beta`, `flatcar-alpha`.
|
||||||
|
* Replace `os_channel` variable with `os_image` to align naming across clouds
|
||||||
|
* Please change values `stable`, `beta`, or `alpha` to `coreos-stable` (default), `coreos-beta`, `coreos-alpha` (action required!)
|
||||||
|
|
||||||
#### Addons
|
#### Addons
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
locals {
|
||||||
|
# Pick a CoreOS Container Linux derivative
|
||||||
|
# coreos-stable -> Container Linux AMI
|
||||||
|
# flatcar-stable -> Flatcar Linux AMI
|
||||||
|
ami_id = "${local.flavor == "flatcar" ? data.aws_ami.flatcar.image_id : data.aws_ami.coreos.image_id}"
|
||||||
|
flavor = "${element(split("-", var.os_image), 0)}"
|
||||||
|
channel = "${element(split("-", var.os_image), 1)}"
|
||||||
|
}
|
||||||
|
|
||||||
data "aws_ami" "coreos" {
|
data "aws_ami" "coreos" {
|
||||||
most_recent = true
|
most_recent = true
|
||||||
owners = ["595879546273"]
|
owners = ["595879546273"]
|
||||||
|
@ -14,6 +23,27 @@ data "aws_ami" "coreos" {
|
||||||
|
|
||||||
filter {
|
filter {
|
||||||
name = "name"
|
name = "name"
|
||||||
values = ["CoreOS-${var.os_channel}-*"]
|
values = ["CoreOS-${local.channel}-*"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data "aws_ami" "flatcar" {
|
||||||
|
most_recent = true
|
||||||
|
owners = ["075585003325"]
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "architecture"
|
||||||
|
values = ["x86_64"]
|
||||||
|
}
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "virtualization-type"
|
||||||
|
values = ["hvm"]
|
||||||
|
}
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "name"
|
||||||
|
values = ["Flatcar-${local.channel}-*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ resource "aws_instance" "controllers" {
|
||||||
|
|
||||||
instance_type = "${var.controller_type}"
|
instance_type = "${var.controller_type}"
|
||||||
|
|
||||||
ami = "${data.aws_ami.coreos.image_id}"
|
ami = "${local.ami_id}"
|
||||||
user_data = "${element(data.ct_config.controller_ign.*.rendered, count.index)}"
|
user_data = "${element(data.ct_config.controller_ign.*.rendered, count.index)}"
|
||||||
|
|
||||||
# storage
|
# storage
|
||||||
|
|
|
@ -41,10 +41,10 @@ variable "worker_type" {
|
||||||
description = "EC2 instance type for workers"
|
description = "EC2 instance type for workers"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "os_channel" {
|
variable "os_image" {
|
||||||
type = "string"
|
type = "string"
|
||||||
default = "stable"
|
default = "coreos-stable"
|
||||||
description = "Container Linux AMI channel (stable, beta, alpha)"
|
description = "AMI channel for a Container Linux derivative (coreos-stable, coreos-beta, coreos-alpha, flatcar-stable, flatcar-beta, flatcar-alpha)"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "disk_size" {
|
variable "disk_size" {
|
||||||
|
|
|
@ -8,7 +8,7 @@ module "workers" {
|
||||||
security_groups = ["${aws_security_group.worker.id}"]
|
security_groups = ["${aws_security_group.worker.id}"]
|
||||||
count = "${var.worker_count}"
|
count = "${var.worker_count}"
|
||||||
instance_type = "${var.worker_type}"
|
instance_type = "${var.worker_type}"
|
||||||
os_channel = "${var.os_channel}"
|
os_image = "${var.os_image}"
|
||||||
disk_size = "${var.disk_size}"
|
disk_size = "${var.disk_size}"
|
||||||
spot_price = "${var.worker_price}"
|
spot_price = "${var.worker_price}"
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
locals {
|
||||||
|
# Pick a CoreOS Container Linux derivative
|
||||||
|
# coreos-stable -> Container Linux AMI
|
||||||
|
# flatcar-stable -> Flatcar Linux AMI
|
||||||
|
ami_id = "${local.flavor == "flatcar" ? data.aws_ami.flatcar.image_id : data.aws_ami.coreos.image_id}"
|
||||||
|
flavor = "${element(split("-", var.os_image), 0)}"
|
||||||
|
channel = "${element(split("-", var.os_image), 1)}"
|
||||||
|
}
|
||||||
|
|
||||||
data "aws_ami" "coreos" {
|
data "aws_ami" "coreos" {
|
||||||
most_recent = true
|
most_recent = true
|
||||||
owners = ["595879546273"]
|
owners = ["595879546273"]
|
||||||
|
@ -14,6 +23,27 @@ data "aws_ami" "coreos" {
|
||||||
|
|
||||||
filter {
|
filter {
|
||||||
name = "name"
|
name = "name"
|
||||||
values = ["CoreOS-${var.os_channel}-*"]
|
values = ["CoreOS-${local.channel}-*"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data "aws_ami" "flatcar" {
|
||||||
|
most_recent = true
|
||||||
|
owners = ["075585003325"]
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "architecture"
|
||||||
|
values = ["x86_64"]
|
||||||
|
}
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "virtualization-type"
|
||||||
|
values = ["hvm"]
|
||||||
|
}
|
||||||
|
|
||||||
|
filter {
|
||||||
|
name = "name"
|
||||||
|
values = ["Flatcar-${local.channel}-*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,10 @@ variable "instance_type" {
|
||||||
description = "EC2 instance type"
|
description = "EC2 instance type"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "os_channel" {
|
variable "os_image" {
|
||||||
type = "string"
|
type = "string"
|
||||||
default = "stable"
|
default = "coreos-stable"
|
||||||
description = "Container Linux AMI channel (stable, beta, alpha)"
|
description = "AMI channel for a Container Linux derivative (coreos-stable, coreos-beta, coreos-alpha, flatcar-stable, flatcar-beta, flatcar-alpha)"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "disk_size" {
|
variable "disk_size" {
|
||||||
|
|
|
@ -41,7 +41,7 @@ resource "aws_autoscaling_group" "workers" {
|
||||||
|
|
||||||
# Worker template
|
# Worker template
|
||||||
resource "aws_launch_configuration" "worker" {
|
resource "aws_launch_configuration" "worker" {
|
||||||
image_id = "${data.aws_ami.coreos.image_id}"
|
image_id = "${local.ami_id}"
|
||||||
instance_type = "${var.instance_type}"
|
instance_type = "${var.instance_type}"
|
||||||
spot_price = "${var.spot_price}"
|
spot_price = "${var.spot_price}"
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ module "tempest-worker-pool" {
|
||||||
|
|
||||||
count = 2
|
count = 2
|
||||||
instance_type = "m5.large"
|
instance_type = "m5.large"
|
||||||
os_channel = "beta"
|
os_image = "coreos-beta"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ The AWS internal `workers` module supports a number of [variables](https://githu
|
||||||
|:-----|:------------|:--------|:--------|
|
|:-----|:------------|:--------|:--------|
|
||||||
| count | Number of instances | 1 | 3 |
|
| count | Number of instances | 1 | 3 |
|
||||||
| instance_type | EC2 instance type | "t2.small" | "t2.medium" |
|
| instance_type | EC2 instance type | "t2.small" | "t2.medium" |
|
||||||
| os_channel | Container Linux AMI channel | stable| "beta", "alpha" |
|
| os_image | AMI channel for a Container Linux derivative | coreos-stable | coreos-stable, coreos-beta, coreos-alpha, flatcar-stable, flatcar-beta, flatcar-alpha |
|
||||||
| disk_size | Size of the disk in GB | 40 | 100 |
|
| disk_size | Size of the disk in GB | 40 | 100 |
|
||||||
| spot_price | Spot price in USD for workers. Leave as default empty string for regular on-demand instances | "" | "0.10" |
|
| spot_price | Spot price in USD for workers. Leave as default empty string for regular on-demand instances | "" | "0.10" |
|
||||||
| service_cidr | Must match `service_cidr` of cluster | "10.3.0.0/16" | "10.3.0.0/24" |
|
| service_cidr | Must match `service_cidr` of cluster | "10.3.0.0/16" | "10.3.0.0/24" |
|
||||||
|
|
|
@ -241,7 +241,7 @@ Reference the DNS zone id with `"${aws_route53_zone.zone-for-clusters.zone_id}"`
|
||||||
| worker_count | Number of workers | 1 | 3 |
|
| worker_count | Number of workers | 1 | 3 |
|
||||||
| controller_type | EC2 instance type for controllers | "t2.small" | See below |
|
| controller_type | EC2 instance type for controllers | "t2.small" | See below |
|
||||||
| worker_type | EC2 instance type for workers | "t2.small" | See below |
|
| worker_type | EC2 instance type for workers | "t2.small" | See below |
|
||||||
| os_channel | Container Linux AMI channel | stable | stable, beta, alpha |
|
| os_image | AMI channel for a Container Linux derivative | coreos-stable | coreos-stable, coreos-beta, coreos-alpha, flatcar-stable, flatcar-beta, flatcar-alpha |
|
||||||
| disk_size | Size of the EBS volume in GB | "40" | "100" |
|
| disk_size | Size of the EBS volume in GB | "40" | "100" |
|
||||||
| disk_type | Type of the EBS volume | "gp2" | standard, gp2, io1 |
|
| disk_type | Type of the EBS volume | "gp2" | standard, gp2, io1 |
|
||||||
| worker_price | Spot price in USD for workers. Leave as default empty string for regular on-demand instances | "" | "0.10" |
|
| worker_price | Spot price in USD for workers. Leave as default empty string for regular on-demand instances | "" | "0.10" |
|
||||||
|
|
Loading…
Reference in New Issue