diff --git a/environments/site/tofu/additional.tf b/environments/site/tofu/additional.tf index 1f7c48ce5..20e363cf0 100644 --- a/environments/site/tofu/additional.tf +++ b/environments/site/tofu/additional.tf @@ -12,6 +12,7 @@ module "additional" { cluster_domain_suffix = var.cluster_domain_suffix key_pair = var.key_pair environment_root = var.environment_root + config_drive = var.config_drive # can be set for group, defaults to top-level value: image_id = lookup(each.value, "image_id", var.cluster_image_id) diff --git a/environments/site/tofu/compute.tf b/environments/site/tofu/compute.tf index 4e6186e35..a5b5d9010 100644 --- a/environments/site/tofu/compute.tf +++ b/environments/site/tofu/compute.tf @@ -12,6 +12,7 @@ module "compute" { cluster_domain_suffix = var.cluster_domain_suffix key_pair = var.key_pair environment_root = var.environment_root + config_drive = var.config_drive # can be set for group, defaults to top-level value: image_id = lookup(each.value, "image_id", var.cluster_image_id) @@ -60,4 +61,5 @@ module "compute" { "gateway_ip", "nodename_template", ] + } diff --git a/environments/site/tofu/control.tf b/environments/site/tofu/control.tf index 2c7174452..811e781b7 100644 --- a/environments/site/tofu/control.tf +++ b/environments/site/tofu/control.tf @@ -94,4 +94,6 @@ resource "openstack_compute_instance_v2" "control" { %{endif} EOF + config_drive = var.config_drive + } diff --git a/environments/site/tofu/login.tf b/environments/site/tofu/login.tf index 1ab3e6c06..02a017227 100644 --- a/environments/site/tofu/login.tf +++ b/environments/site/tofu/login.tf @@ -12,6 +12,7 @@ module "login" { cluster_domain_suffix = var.cluster_domain_suffix key_pair = var.key_pair environment_root = var.environment_root + config_drive = var.config_drive # can be set for group, defaults to top-level value: image_id = lookup(each.value, "image_id", var.cluster_image_id) @@ -65,4 +66,5 @@ module "login" { "nodename_template", "security_group_ids" ] + } diff --git a/environments/site/tofu/node_group/nodes.tf b/environments/site/tofu/node_group/nodes.tf index 340a6c952..062d979c9 100644 --- a/environments/site/tofu/node_group/nodes.tf +++ b/environments/site/tofu/node_group/nodes.tf @@ -120,6 +120,8 @@ resource "openstack_compute_instance_v2" "compute_fixed_image" { availability_zone = var.match_ironic_node ? "${local.baremetal_az}::${var.baremetal_nodes[each.key]}" : var.availability_zone + config_drive = var.config_drive + lifecycle { ignore_changes = [ image_id, @@ -175,6 +177,8 @@ resource "openstack_compute_instance_v2" "compute" { availability_zone = var.match_ironic_node ? "${local.baremetal_az}::${var.baremetal_nodes[each.key]}" : var.availability_zone + config_drive = var.config_drive + } resource "openstack_networking_floatingip_associate_v2" "fip" { diff --git a/environments/site/tofu/node_group/variables.tf b/environments/site/tofu/node_group/variables.tf index 110ba8115..eed7238ad 100644 --- a/environments/site/tofu/node_group/variables.tf +++ b/environments/site/tofu/node_group/variables.tf @@ -192,3 +192,7 @@ variable "allowed_keys" { type = list # don't provide a default here as allowed keys may depend on module use } + +variable "config_drive" { + type = bool +} diff --git a/environments/site/tofu/variables.tf b/environments/site/tofu/variables.tf index a6a78bcb1..54d750f5d 100644 --- a/environments/site/tofu/variables.tf +++ b/environments/site/tofu/variables.tf @@ -313,3 +313,12 @@ variable "cluster_nodename_template" { type = string default = "$${cluster_name}-$${node}.$${cluster_name}.$${cluster_domain_suffix}" } + +variable "config_drive" { + description = <<-EOT + Whether to enable Nova config drives on all nodes, which will attach a drive containing + information usually provided through the metadata service. + EOT + type = bool + default = null +}