@@ -7,6 +7,18 @@ data "openstack_images_image_v2" "control" {
77 name = var. control_node . image
88}
99
10+ data "openstack_images_image_v2" "login" {
11+ for_each = var. login_nodes
12+
13+ name = each. value . image
14+ }
15+
16+ data "openstack_images_image_v2" "compute" {
17+ for_each = var. compute_nodes
18+
19+ name = lookup (var. compute_images , each. key , var. compute_types [each . value ]. image )
20+ }
21+
1022resource "openstack_networking_port_v2" "login" {
1123
1224 for_each = toset (keys (var. login_nodes ))
@@ -68,7 +80,7 @@ resource "openstack_networking_port_v2" "compute" {
6880
6981resource "openstack_compute_instance_v2" "control" {
7082
71- for_each = var . create_nodes ? toset ([" control" ]) : toset ([ ])
83+ for_each = toset ([" control" ])
7284
7385 name = " ${ var . cluster_name } -${ each . key } "
7486 image_name = data. openstack_images_image_v2 . control . name
@@ -79,7 +91,8 @@ resource "openstack_compute_instance_v2" "control" {
7991 block_device {
8092 uuid = data. openstack_images_image_v2 . control . id
8193 source_type = " image"
82- destination_type = " local"
94+ destination_type = var. volume_backed_instances ? " volume" : " local"
95+ volume_size = var. volume_backed_instances ? var. root_volume_size : null
8396 boot_index = 0
8497 delete_on_termination = true
8598 }
@@ -136,12 +149,24 @@ resource "openstack_compute_instance_v2" "control" {
136149
137150resource "openstack_compute_instance_v2" "login" {
138151
139- for_each = var. create_nodes ? var . login_nodes : {}
152+ for_each = var. login_nodes
140153
141154 name = " ${ var . cluster_name } -${ each . key } "
142155 image_name = each. value . image
143156 flavor_name = each. value . flavor
144157 key_pair = var. key_pair
158+
159+ dynamic "block_device" {
160+ for_each = var. volume_backed_instances ? [1 ]: []
161+ content {
162+ uuid = data. openstack_images_image_v2 . login [each . key ]. id
163+ source_type = " image"
164+ destination_type = " volume"
165+ volume_size = var. root_volume_size
166+ boot_index = 0
167+ delete_on_termination = true
168+ }
169+ }
145170
146171 network {
147172 port = openstack_networking_port_v2. login [each . key ]. id
@@ -162,12 +187,24 @@ resource "openstack_compute_instance_v2" "login" {
162187
163188resource "openstack_compute_instance_v2" "compute" {
164189
165- for_each = var. create_nodes ? var . compute_nodes : {}
190+ for_each = var. compute_nodes
166191
167192 name = " ${ var . cluster_name } -${ each . key } "
168193 image_name = lookup (var. compute_images , each. key , var. compute_types [each . value ]. image )
169194 flavor_name = var. compute_types [each . value ]. flavor
170195 key_pair = var. key_pair
196+
197+ dynamic "block_device" {
198+ for_each = var. volume_backed_instances ? [1 ]: []
199+ content {
200+ uuid = data. openstack_images_image_v2 . compute [each . key ]. id
201+ source_type = " image"
202+ destination_type = " volume"
203+ volume_size = var. root_volume_size
204+ boot_index = 0
205+ delete_on_termination = true
206+ }
207+ }
171208
172209 network {
173210 port = openstack_networking_port_v2. compute [each . key ]. id
0 commit comments