# Subnet with snat resource "openstack_networking_network_v2" "Bug-2029722_1" { name = "Bug-2029722_1" } resource "openstack_networking_subnet_v2" "Bug-2029722_s1" { name = "Bug-2029722_1" network_id = openstack_networking_network_v2.Bug-2029722_1.id cidr = "10.20.0.0/24" ip_version = 4 gateway_ip = "10.20.0.1" enable_dhcp = true } # Internal subnet resource "openstack_networking_network_v2" "Bug-2029722_2" { name = "Bug-2029722_2" } resource "openstack_networking_subnet_v2" "Bug-2029722_s2" { name = "Bug-2029722_2" network_id = openstack_networking_network_v2.Bug-2029722_2.id cidr = "10.20.10.0/24" ip_version = 4 gateway_ip = "10.20.10.254" enable_dhcp = true } # Ext_router resource "openstack_networking_router_v2" "Bug-2029722_ext" { name = "Bug-2029722_ext" external_network_id = var.Ext-Net } resource "openstack_networking_router_interface_v2" "Bug-2029722_ext" { router_id = openstack_networking_router_v2.Bug-2029722_ext.id subnet_id = openstack_networking_subnet_v2.Bug-2029722_s1.id } # Lan router resource "openstack_networking_router_v2" "Bug-2029722" { name = "Bug-2029722_lan" } resource "openstack_networking_router_interface_v2" "Bug-2029722_lan" { router_id = openstack_networking_router_v2.Bug-2029722.id subnet_id = openstack_networking_subnet_v2.Bug-2029722_s2.id } resource "openstack_networking_port_v2" "Bug-2029722_port" { name = "Bug-2029722_port" network_id = openstack_networking_network_v2.Bug-2029722_1.id fixed_ip { subnet_id = openstack_networking_subnet_v2.Bug-2029722_s1.id ip_address = "10.20.0.254" } } resource "openstack_networking_router_interface_v2" "Bug-2029722_plan" { router_id = openstack_networking_router_v2.Bug-2029722.id port_id = openstack_networking_port_v2.Bug-2029722_port.id } # Routes resource "openstack_networking_router_route_v2" "route_default" { # Need to add this route after instance init, or cloudinit could fail depends_on = [ openstack_networking_router_interface_v2.Bug-2029722_ext, openstack_compute_instance_v2.test_lan, openstack_compute_instance_v2.test2_fip ] router_id = openstack_networking_router_v2.Bug-2029722.id destination_cidr = "0.0.0.0/0" next_hop = "10.20.0.1" # Need to be modified to centralized snat ip to work } resource "openstack_networking_router_route_v2" "route_to_lan" { depends_on = [ openstack_networking_router_interface_v2.Bug-2029722_plan, openstack_compute_instance_v2.test_lan, openstack_compute_instance_v2.test2_fip ] router_id = openstack_networking_router_v2.Bug-2029722_ext.id destination_cidr = "10.20.10.0/24" next_hop = "10.20.0.254" } resource "openstack_networking_port_v2" "test_fip_port" { depends_on = [ openstack_networking_subnet_v2.Bug-2029722_s1 ] name = "test_fip_port" network_id = openstack_networking_network_v2.Bug-2029722_1.id fixed_ip { subnet_id = openstack_networking_subnet_v2.Bug-2029722_s1.id ip_address = "10.20.0.100" } } resource "openstack_compute_instance_v2" "test2_fip" { name = "test_fip" image_name = "Ubuntu 20.04" flavor_name = "m1.small" key_pair = openstack_compute_keypair_v2.keypair_laptop.id network { port = openstack_networking_port_v2.test_fip_port.id } } resource "openstack_networking_floatingip_v2" "floatip_1" { pool = "Ext-Net" } resource "openstack_networking_floatingip_associate_v2" "fip_1" { floating_ip = openstack_networking_floatingip_v2.floatip_1.address port_id = openstack_networking_port_v2.test_fip_port.id } resource "openstack_compute_instance_v2" "test_nofip" { name = "test_nofip" image_name = "Ubuntu 20.04" flavor_name = "m1.small" key_pair = openstack_compute_keypair_v2.keypair_laptop.id network { uuid = openstack_networking_network_v2.Bug-2029722_1.id } } resource "openstack_compute_instance_v2" "test_lan" { name = "test_lan" image_name = "Ubuntu 20.04" flavor_name = "m1.small" key_pair = openstack_compute_keypair_v2.keypair_laptop.id network { uuid = openstack_networking_network_v2.Bug-2029722_2.id } }