After my first post about the OpenStack Vagrant provider I decided to play a bit more with the provider and I found it can be combined with an OpenStack Heat stack. Since the provider itself cannot provision any new network resource, just use the existing ones, with this method you can create all the new network resources with Heat and the instances with Vagrant.
To test the integration I created a simple Vagrantfile and a simple Heat stack. In the Vagrantfile, we will define a new setting called os.stacks with the name of the stack and the path to the template file. This is the YAML file that define all our new network configuration. We also define the name of the network in the os.networks setting.
Finally we define the instance to be provisioned and override any additional parameter, like ssh.username.
In the Heat stack we define the creation of the new network, subnet and router resources, in this case labnet05, labsubnet05 and router5 respectively.
As described in the first post execute a simple vagrant up --provider openstack and Vagrant will create the stack, kick off the instance, connect it to the new network and assign a floating IP address.