From 5756eec6e0e0ab17949b0e3579444ab84f93bcb8 Mon Sep 17 00:00:00 2001 From: Mark A Olson <3232122+markaolson@users.noreply.github.com> Date: Thu, 10 Feb 2022 22:36:49 -0800 Subject: [PATCH] DAOS-9737 Add support for applying labels to instances (#17) Updated modules to allow labels on instances. Updated examples to show how to add labels. Signed-off-by: Mark A. Olson --- terraform/examples/daos_client_mig/README.md | 1 + terraform/examples/daos_client_mig/main.tf | 1 + .../daos_client_mig/terraform.tfvars.example | 3 +++ terraform/examples/daos_client_mig/variables.tf | 6 ++++++ terraform/examples/full_cluster_setup/main.tf | 2 ++ .../full_cluster_setup/terraform.tfvars.example | 6 ++++++ terraform/examples/full_cluster_setup/variables.tf | 13 +++++++++++++ .../examples/simple_daos_server_example/README.md | 1 + .../examples/simple_daos_server_example/main.tf | 1 + .../terraform.tfvars.example | 5 ++++- .../simple_daos_server_example/variables.tf | 6 ++++++ terraform/modules/daos_client/README.md | 1 + terraform/modules/daos_client/main.tf | 1 + terraform/modules/daos_client/variables.tf | 6 ++++++ terraform/modules/daos_server/README.md | 1 + terraform/modules/daos_server/main.tf | 1 + terraform/modules/daos_server/variables.tf | 6 ++++++ 17 files changed, 60 insertions(+), 1 deletion(-) diff --git a/terraform/examples/daos_client_mig/README.md b/terraform/examples/daos_client_mig/README.md index 8e351f0d160..fb69e628a89 100644 --- a/terraform/examples/daos_client_mig/README.md +++ b/terraform/examples/daos_client_mig/README.md @@ -34,6 +34,7 @@ No resources. | [instance\_base\_name](#input\_instance\_base\_name) | MIG instance base names to use | `string` | `"daos-client"` | no | | [machine\_type](#input\_machine\_type) | GCP machine type. ie. e2-medium | `string` | `"n2-highmem-16"` | no | | [mig\_name](#input\_mig\_name) | MIG name | `string` | `"daos-client"` | no | +| [labels](#input\_labels) | Set of key/value label pairs to assign to daos-client instances | `any` | n/a | no | | [network](#input\_network) | GCP network to use | `string` | n/a | yes | | [number\_of\_instances](#input\_number\_of\_instances) | Number of daos clients to bring up | `number` | `2` | no | | [os\_disk\_size\_gb](#input\_os\_disk\_size\_gb) | OS disk size in GB | `number` | `20` | no | diff --git a/terraform/examples/daos_client_mig/main.tf b/terraform/examples/daos_client_mig/main.tf index 92a1c84d34c..b34dd68af7e 100644 --- a/terraform/examples/daos_client_mig/main.tf +++ b/terraform/examples/daos_client_mig/main.tf @@ -26,6 +26,7 @@ module "daos_client" { subnetwork_project = var.subnetwork_project region = var.region zone = var.zone + labels = var.labels number_of_instances = var.number_of_instances diff --git a/terraform/examples/daos_client_mig/terraform.tfvars.example b/terraform/examples/daos_client_mig/terraform.tfvars.example index 953bc430e93..9f4a7ebc346 100644 --- a/terraform/examples/daos_client_mig/terraform.tfvars.example +++ b/terraform/examples/daos_client_mig/terraform.tfvars.example @@ -4,6 +4,9 @@ subnetwork = "" subnetwork_project = "" region = "europe-west4" zone = "europe-west4-a" +labels = { + example="daos_client_mig" +} number_of_instances = 2 diff --git a/terraform/examples/daos_client_mig/variables.tf b/terraform/examples/daos_client_mig/variables.tf index 8e32501d29a..fe91179fc62 100644 --- a/terraform/examples/daos_client_mig/variables.tf +++ b/terraform/examples/daos_client_mig/variables.tf @@ -27,6 +27,12 @@ variable "zone" { type = string } +variable "labels" { + description = "Set of key/value label pairs to assign to daos-client instances" + type = any + default = {} +} + variable "os_family" { description = "OS GCP image family" default = null diff --git a/terraform/examples/full_cluster_setup/main.tf b/terraform/examples/full_cluster_setup/main.tf index 02a3faee864..9721e485317 100644 --- a/terraform/examples/full_cluster_setup/main.tf +++ b/terraform/examples/full_cluster_setup/main.tf @@ -10,6 +10,7 @@ module "daos_server" { subnetwork_project = var.subnetwork_project region = var.region zone = var.zone + labels = var.server_labels number_of_instances = var.server_number_of_instances daos_disk_count = var.server_daos_disk_count @@ -33,6 +34,7 @@ module "daos_client" { subnetwork_project = var.subnetwork_project region = var.region zone = var.zone + labels = var.client_labels number_of_instances = var.client_number_of_instances diff --git a/terraform/examples/full_cluster_setup/terraform.tfvars.example b/terraform/examples/full_cluster_setup/terraform.tfvars.example index de939e43ce8..5471fc57783 100644 --- a/terraform/examples/full_cluster_setup/terraform.tfvars.example +++ b/terraform/examples/full_cluster_setup/terraform.tfvars.example @@ -16,6 +16,9 @@ server_mig_name = "daos-server" server_machine_type = "n2-highmem-32" server_os_project = "" server_os_family = "daos-server-centos-7" +server_labels = { + example = "full_cluster_setup" +} # Client client_number_of_instances = 1 client_instance_base_name = "daos-client" @@ -26,3 +29,6 @@ client_mig_name = "daos-client" client_machine_type = "c2-standard-16" client_os_project = "" client_os_family = "daos-client-hpc-centos-7" +client_labels = { + example = "full_cluster_setup" +} \ No newline at end of file diff --git a/terraform/examples/full_cluster_setup/variables.tf b/terraform/examples/full_cluster_setup/variables.tf index bad98f0700a..11489e53c74 100644 --- a/terraform/examples/full_cluster_setup/variables.tf +++ b/terraform/examples/full_cluster_setup/variables.tf @@ -14,6 +14,19 @@ variable "zone" { default = null } +variable "server_labels" { + description = "Set of key/value label pairs to assign to daos-server instances" + type = any + default = {} +} + +variable "client_labels" { + description = "Set of key/value label pairs to assign to daos-client instances" + type = any + default = {} +} + + variable "server_os_family" { description = "OS GCP image family" default = null diff --git a/terraform/examples/simple_daos_server_example/README.md b/terraform/examples/simple_daos_server_example/README.md index 0272b6bc4b1..e0419e52c67 100644 --- a/terraform/examples/simple_daos_server_example/README.md +++ b/terraform/examples/simple_daos_server_example/README.md @@ -31,6 +31,7 @@ No resources. |------|-------------|------|---------|:--------:| | [daos\_disk\_count](#input\_daos\_disk\_count) | Number of local ssd's to use | `number` | `16` | no | | [instance\_base\_name](#input\_instance\_base\_name) | MIG instance base names to use | `string` | `"daos-server"` | no | +| [labels](#input\_labels) | Set of key/value label pairs to assign to daos-server instances | `any` | n/a | no | | [machine\_type](#input\_machine\_type) | GCP machine type. ie. e2-medium | `string` | `"n2-custom-20-131072"` | no | | [mig\_name](#input\_mig\_name) | MIG name | `string` | `"daos-server"` | no | | [network](#input\_network) | GCP network to use | `string` | n/a | yes | diff --git a/terraform/examples/simple_daos_server_example/main.tf b/terraform/examples/simple_daos_server_example/main.tf index 3dedb3b3b8c..b89a2a9328e 100644 --- a/terraform/examples/simple_daos_server_example/main.tf +++ b/terraform/examples/simple_daos_server_example/main.tf @@ -26,6 +26,7 @@ module "daos_server" { subnetwork_project = var.subnetwork_project region = var.region zone = var.zone + labels = var.labels number_of_instances = var.number_of_instances daos_disk_count = var.daos_disk_count diff --git a/terraform/examples/simple_daos_server_example/terraform.tfvars.example b/terraform/examples/simple_daos_server_example/terraform.tfvars.example index 5e7b2e87d87..502237d71ef 100644 --- a/terraform/examples/simple_daos_server_example/terraform.tfvars.example +++ b/terraform/examples/simple_daos_server_example/terraform.tfvars.example @@ -1,9 +1,12 @@ -project_id="" +project_id = "" network = "" subnetwork = "" subnetwork_project = "" region = "europe-west4" zone = "europe-west4-a" +labels = { + example="simple_daos_server_example" +} number_of_instances = 4 # Allow 3-way replication with extra spare for rebuild daos_disk_count = 16 diff --git a/terraform/examples/simple_daos_server_example/variables.tf b/terraform/examples/simple_daos_server_example/variables.tf index 86369e80f60..2d5f0cf6a3a 100644 --- a/terraform/examples/simple_daos_server_example/variables.tf +++ b/terraform/examples/simple_daos_server_example/variables.tf @@ -27,6 +27,12 @@ variable "zone" { type = string } +variable "labels" { + description = "Set of key/value label pairs to assign to daos-server instances" + type = any + default = {} +} + variable "os_family" { description = "OS GCP image family" default = null diff --git a/terraform/modules/daos_client/README.md b/terraform/modules/daos_client/README.md index 72cdc39381d..a9135cb4268 100644 --- a/terraform/modules/daos_client/README.md +++ b/terraform/modules/daos_client/README.md @@ -40,6 +40,7 @@ No modules. |------|-------------|------|---------|:--------:| | [daos\_service\_account\_scopes](#input\_daos\_service\_account\_scopes) | Scopes for the DAOS client service account | `list(string)` |
[
"userinfo-email",
"compute-ro",
"storage-ro"
]
| no | | [instance\_base\_name](#input\_instance\_base\_name) | MIG instance base names to use | `string` | `null` | no | +| [labels](#input\_labels) | Set of key/value label pairs to assign to daos-client instances | `any` | n/a | no | | [machine\_type](#input\_machine\_type) | GCP machine type. ie. e2-medium | `string` | `null` | no | | [mig\_name](#input\_mig\_name) | MIG name | `string` | `null` | no | | [network](#input\_network) | GCP network to use | `string` | `null` | no | diff --git a/terraform/modules/daos_client/main.tf b/terraform/modules/daos_client/main.tf index d3f3ff2c265..bbd90def52a 100644 --- a/terraform/modules/daos_client/main.tf +++ b/terraform/modules/daos_client/main.tf @@ -26,6 +26,7 @@ resource "google_compute_instance_template" "daos_sig_template" { tags = ["daos-client"] project = var.project_id region = var.region + labels = var.labels disk { source_image = data.google_compute_image.os_image.self_link diff --git a/terraform/modules/daos_client/variables.tf b/terraform/modules/daos_client/variables.tf index 121f9d27d77..8a4445f66ed 100644 --- a/terraform/modules/daos_client/variables.tf +++ b/terraform/modules/daos_client/variables.tf @@ -29,6 +29,12 @@ variable "zone" { default = null } +variable "labels" { + description = "Set of key/value label pairs to assign to daos-client instances" + type = any + default = {} +} + variable "os_family" { description = "OS GCP image family" default = null diff --git a/terraform/modules/daos_server/README.md b/terraform/modules/daos_server/README.md index 13f0368f43c..db640022dc0 100644 --- a/terraform/modules/daos_server/README.md +++ b/terraform/modules/daos_server/README.md @@ -39,6 +39,7 @@ The resources/services/activations/deletions that this module will create/trigge | [daos\_disk\_type](#input\_daos\_disk\_type) | Daos disk type to use. For now only suported one is local-ssd | `string` | `"local-ssd"` | no | | [daos\_service\_account\_scopes](#input\_daos\_service\_account\_scopes) | Scopes for the DAOS server service account | `list(string)` |
[
"userinfo-email",
"compute-ro",
"storage-ro"
]
| no | | [instance\_base\_name](#input\_instance\_base\_name) | MIG instance base names to use | `string` | `"daos-server"` | no | +| [labels](#input\_labels) | Set of key/value label pairs to assign to daos-server instances | `any` | n/a | no | | [machine\_type](#input\_machine\_type) | GCP machine type. ie. e2-medium | `string` | `"n2-custom-20-131072"` | no | | [mig\_name](#input\_mig\_name) | MIG name | `string` | `"daos-server"` | no | | [network](#input\_network) | GCP network to use | `string` | n/a | yes | diff --git a/terraform/modules/daos_server/main.tf b/terraform/modules/daos_server/main.tf index 577b0069097..bdfc5f547d0 100644 --- a/terraform/modules/daos_server/main.tf +++ b/terraform/modules/daos_server/main.tf @@ -26,6 +26,7 @@ resource "google_compute_instance_template" "daos_sig_template" { tags = ["daos-server"] project = var.project_id region = var.region + labels = var.labels disk { source_image = data.google_compute_image.os_image.self_link diff --git a/terraform/modules/daos_server/variables.tf b/terraform/modules/daos_server/variables.tf index 0b136bd52f7..c544f3c56ba 100644 --- a/terraform/modules/daos_server/variables.tf +++ b/terraform/modules/daos_server/variables.tf @@ -29,6 +29,12 @@ variable "zone" { default = null } +variable "labels" { + description = "Set of key/value label pairs to assign to daos-server instances" + type = any + default = {} +} + variable "os_family" { description = "OS GCP image family" default = null