Changes in Release 0.3

Selecting a virtualization provider

Release 0.3 added support for multiple virtualization providers. The provider is specified in the provider top-level element in the topology file, or as defaults.provider element. The default provider (specified in system-level topology-defaults.yml) is libvirt.

You’ll find the up-to-date status of virtualization provider support in Supported Platforms

Explicit device images

In release 0.2, the default device images (Vagrant boxes) were hard-coded in device part of Vagrantfile templates.

Those defaults are gone, the default device image is specified in defaults.devices.device.image.provider.

You can override the defaults by specifying topology defaults. To change the default Vagrant box for CSR 1000v in libvirt environment use:

defaults:
  devices:
    csr1000v:
      image:
        libvirt: cisco/csr1000v-16.7

You can also specify device-specific image with the image or box parameter in node data.

Provider Defaults

providers element was added to the defaults data structure. It’s a dictionary listing all valid providers. The absolute minimum you have to specify for a provider is the name of the configuration file (in the config element), for example:

providers:
  libvirt:
    config: Vagrantfile
  virtualbox:
    config: Vagrantfile

Ports Defaults

Topology defaults also contain a ports dictionary mapping protocols (SSH, HTTP, NETCONF) to TCP port numbers. Call me lazy: it was simpler to add a dictionary than to deal with /etc/protocols.

ports:
  ssh: 22
  http: 80
  https: 443
  netconf: 830

Protocol names must match names of forwarded ports in providers.provider.forwarded dictionary.

WARNING: These data structures are not checked. If you’re messing with them you better know what you’re doing.