diff --git a/README.md b/README.md
index ead5c89bd2b23a6b5f385920ad9a3a5f24605780..4ccd80e857dbfbfd36c485838f55ee1e18e1a2b9 100644
--- a/README.md
+++ b/README.md
@@ -51,8 +51,7 @@ No modules.
 | [openstack_networking_port_v2.control_ports](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_port_v2) | resource |
 | [openstack_networking_port_v2.vip_port](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_port_v2) | resource |
 | [openstack_networking_port_v2.worker_ports](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_port_v2) | resource |
-| [openstack_networking_router_interface_v2.router_available_interface](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_router_interface_v2) | resource |
-| [openstack_networking_router_interface_v2.router_default_interface](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_router_interface_v2) | resource |
+| [openstack_networking_router_interface_v2.router_interface](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_router_interface_v2) | resource |
 | [openstack_networking_router_v2.router_default](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_router_v2) | resource |
 | [openstack_networking_secgroup_rule_v2.secgroup_rules](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_secgroup_rule_v2) | resource |
 | [openstack_networking_secgroup_v2.secgroup_default](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs/resources/networking_secgroup_v2) | resource |
diff --git a/networks.tf b/networks.tf
index ce252aae6d2c8d60c466a03f74329785ec818fc5..13fbe3571c7cf6fc0debd131473618dc4dc1f4b4 100644
--- a/networks.tf
+++ b/networks.tf
@@ -32,15 +32,8 @@ resource "openstack_networking_router_v2" "router_default" {
   external_network_id = data.openstack_networking_network_v2.external_network.id
 }
 
-resource "openstack_networking_router_interface_v2" "router_default_interface" {
-  count     = var.router_creation_enable ? 1 : 0
-  router_id = openstack_networking_router_v2.router_default[0].id
-  subnet_id = openstack_networking_subnet_v2.subnet_default[0].id
-}
-
-resource "openstack_networking_router_interface_v2" "router_available_interface" {
-  count     = var.router_creation_enable ? 0 : 1
-  router_id = data.openstack_networking_router_v2.router_available[0].id
+resource "openstack_networking_router_interface_v2" "router_interface" {
+  router_id = var.router_creation_enable ? openstack_networking_router_v2.router_default[0].id : data.openstack_networking_router_v2.router_available[0].id
   subnet_id = openstack_networking_subnet_v2.subnet_default[0].id
 }
 
@@ -118,6 +111,11 @@ resource "openstack_networking_floatingip_v2" "bastion_fip" {
 resource "openstack_networking_floatingip_associate_v2" "bastion_fip_associate" {
   floating_ip = openstack_networking_floatingip_v2.bastion_fip.address
   port_id     = openstack_networking_port_v2.bastion_port.id
+  # Successful association depends on the external (FIP) network being reachable from the internal network,
+  # in this case via a router.
+  depends_on = [
+    openstack_networking_router_interface_v2.router_interface
+  ]
 }
 
 # Floating VIP IPs
@@ -130,6 +128,11 @@ resource "openstack_networking_floatingip_associate_v2" "res_vip_fip_associate"
   count       = var.kube_fip_create_port && var.kube_fip ? 1 : 0
   floating_ip = openstack_networking_floatingip_v2.vip_fip[count.index].address
   port_id     = openstack_networking_port_v2.vip_port[count.index].id
+  # Successful association depends on the external (FIP) network being reachable from the internal network,
+  # in this case via a router.
+  depends_on = [
+    openstack_networking_router_interface_v2.router_interface
+  ]
 }
 
 # Floating IP for kube-api Loadbalancer
@@ -143,4 +146,9 @@ resource "openstack_networking_floatingip_associate_v2" "lb_kube_api_fip_associa
   count       = var.create_lb_kube_api ? 1 : 0
   floating_ip = openstack_networking_floatingip_v2.lb_kube_api_fip[0].address
   port_id     = openstack_lb_loadbalancer_v2.lb_kube_api[0].vip_port_id
+  # Successful association depends on the external (FIP) network being reachable from the internal network,
+  # in this case via a router.
+  depends_on = [
+    openstack_networking_router_interface_v2.router_interface
+  ]
 }