OpenStack + Terraform : Connecter deux routeurs à un réseau

Soit l’architecture suivante, composée de deux routeurs router_interne et router_dmz connectés à un unique réseau network_dmz :

Capture d_écran 2017-12-06 à 10.40.23

Pour déployer ce schéma avec Terraform et OpenStack, on pourrait penser à utiliser simplement des ressources openstack_networking_router_interface_v2 :

resource "openstack_networking_router_interface_v2" "router_interface_dmz" {
  router_id = "${openstack_networking_router_v2.router_dmz.id}"
  subnet_id = "${openstack_networking_subnet_v2.subnet_dmz.id}"
}

resource "openstack_networking_router_interface_v2" "router_interface_dmz_interne" {
  router_id = "${openstack_networking_router_v2.router_interne.id}"
  subnet_id = "${openstack_networking_subnet_v2.subnet_dmz.id}"
}

Seulement voilà, ça ne fonctionnera pas :

* openstack_networking_router_interface_v2.router_interface_dmz: Error creating OpenStack Neutron router interface: Expected HTTP response code [200] when accessing [PUT http://openstack:9696/v2.0/routers/c33fd7ee-43ab-41ea-a12b-2067760540eb/add_router_interface%5D, but got 409 instead
{« NeutronError »: {« message »: « IP address 192.168.0.1 already allocated in subnet 9610ea1a-e9fd-4c63-bedd-da9f80219038 », « type »: « IpAddressAlreadyAllocated », « detail »: «  »}}

En effet, utiliser openstack_networking_router_interface_v2 avec router_id + subnet_id définit automatiquement le routeur comme gateway… et il ne peut y avoir qu’une seule gateway.

Solution, passer par des ports avec des IP fixes (ou pas) :

resource "openstack_networking_port_v2" "port_dmz" {
  network_id = "${openstack_networking_network_v2.network_dmz.id}"
  admin_state_up = "true"
  fixed_ip {
    subnet_id = "${openstack_networking_subnet_v2.subnet_dmz.id}"
    ip_address = "192.168.0.254"
  }
}

resource "openstack_networking_port_v2" "port_dmz_interne" {
  network_id = "${openstack_networking_network_v2.network_dmz.id}"
  admin_state_up = "true"
  fixed_ip {
    subnet_id = "${openstack_networking_subnet_v2.subnet_dmz.id}"
    ip_address = "192.168.0.253"
  }
}

resource "openstack_networking_router_interface_v2" "router_interface_dmz" {
  router_id = "${openstack_networking_router_v2.router_dmz.id}"
  port_id = "${openstack_networking_port_v2.port_dmz.id}"
}

resource "openstack_networking_router_interface_v2" "router_interface_dmz_interne" {
  router_id = "${openstack_networking_router_v2.router_interne.id}"
  port_id = "${openstack_networking_port_v2.port_dmz_interne.id}"
}

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

w

Connexion à %s