diff --git a/instances.tf b/instances.tf
index c7ef192e99c43a0b381b2f4c6557da98fc5030a9..94babf8f2b59301fc0023b929fc774627ba8cc62 100644
--- a/instances.tf
+++ b/instances.tf
@@ -47,17 +47,6 @@ resource "openstack_compute_instance_v2" "control_nodes" {
     delete_on_termination = true
   }
 }
-locals {
-  all_instances = flatten([
-    for group in var.worker_nodes : [
-      for i in range(group.count) : {
-        name        = "${var.infra_name}-${group.name}-${i + 1}"
-        flavor      = group.flavor
-        volume_size = group.volume_size
-      }
-    ]
-  ])
-}
 
 resource "openstack_compute_instance_v2" "worker_nodes" {
 
diff --git a/locals.tf b/locals.tf
new file mode 100644
index 0000000000000000000000000000000000000000..ec07dff6154ee56761f397aebadec2fb994e24d8
--- /dev/null
+++ b/locals.tf
@@ -0,0 +1,12 @@
+locals {
+  all_instances = flatten([
+    for group in var.worker_nodes : [
+      for i in range(group.count) : {
+        name        = "${var.infra_name}-${group.name}-${i + 1}"
+        flavor      = group.flavor
+        volume_size = group.volume_size
+        ip_address  = format("%s.%d", regex("[0-9]+\\.[0-9]+\\.[0-9]+", var.internal_network_cidr), 21 + i)
+      }
+    ]
+  ])
+}
diff --git a/networks.tf b/networks.tf
index 563c04e8b43f577d0f0889fe7e2d58273d3d87f9..c47160886f1b388642776a0a2014d90a2b95ca32 100644
--- a/networks.tf
+++ b/networks.tf
@@ -77,7 +77,7 @@ resource "openstack_networking_port_v2" "worker_ports" {
   security_group_ids = [openstack_networking_secgroup_v2.secgroup_default.id]
   fixed_ip {
     subnet_id = openstack_networking_subnet_v2.subnet_default[0].id
-    ip_address = format("%s.%d", regex("[0-9]+\\.[0-9]+\\.[0-9]+", var.internal_network_cidr), 21 + count.index)
+    ip_address = each.value.ip_address
   }
   allowed_address_pairs {
     ip_address = var.kube_vip