News

Introducing OpenVDC

Since late 2016 we have been working on OpenVDC, the successor to Wakame-vdc. This new project is written in go and runs on top of an Apache Mesos architecture. OpenVDC is written with a strong focus on scripting and automating the datacenter.

You’ll find a list of OpenVDC’s current features below.

  • Support for LXC and KVM hypervisors

  • Support for Linux bridge and Open vSwitch

  • Support for custom user created machine images

  • Crash recovery

  • Multiple network interfaces per instance

  • Several command line interfaces to make scripting as easy as possible

    • openvdc console <instance-id> Get console access to an instance
    • openvdc copy /path/to/local/file <instance-id>:/path/to/remote/destination Copy a file to an instance
    • openvdc copy <instance-id>:/path/to/remote/file /path/to/local/destination Copy a file from an instance
    • openvdc wait <instance-id> running Waits until the instance reaches the state RUNNING. This can be any other state too.
    • openvdc console <instance-id> "cat ~/.bashrc" Runs a command on an instance. Displays the contents of the file ~/.bashrc on the instance in this case.
    • echo "cat ~/.bashrc" | openvdc console <instance-id> Same as the above but works by piping commands to the openvdc console command. This can also be done with multi line strings
      cat <<EOS | openvdc console <instance-id>
        echo 'running command one'
    
        echo 'running command two'
        echo 'running command three'
        echo 'running command four'
      EOS
    
    
  • Support for terraform and integration with OpenVNet

    resource "openvdc_instance" "my_instance" {
    template = "centos/7/lxc"
    
    interfaces  = [
        {
          type = "veth"
          bridge = "ovs"
          ipv4addr = "172.27.70.100"
          macaddr = "10:54:ff:aa:00:01"
        },
        {
          type = "veth"
          bridge = "ovs"
          ipv4addr = "192.168.210.50"
          macaddr = "10:54:ff:bb:00:01"
        },
      ]
    }
    
    resource "openvnet_interface" "my_instance-00" {
      display_name        = "my_instance_eth0"
      port_name           = "${openvdc_instance.my_instance.id}_00"
      segment_uuid        = "seg-myseg1"
      mac_address         = "${openvdc_instance.my_instance.interfaces.0.macaddr}"
      mode                = "vif"
    }
    
    resource "openvnet_interface" "my_instance-01" {
      display_name        = "my_instance_eth1"
      port_name           = "${openvdc_instance.my_instance.id}_01"
      segment_uuid        = "seg-myseg2"
      mac_address         = "${openvdc_instance.my_instance.interfaces.1.macaddr}"
      mode                = "vif"
    }
    
Tuesday February 27, 2018