Over the past couple of weeks we’ve been very busy preparing to upgrade Hypernode to the latest LTS version Ubuntu 16.04 Xenial. While for Hypernode we highly modify the Ubuntu base, upgrading to this newer version will have many advantages like newer releases of various packages. For Hypernode we build all important parts of the web stack ourselves, which means that for the major components there won’t be much to update since we’ve always run recent versions of all relevant software (PHP, NGINX, etc). But for tooling that we don’t maintain ourselves there will be some newer versions out of the box, which is great.

Upgrading to Xenial gave us the chance to automate some of our external software integration even further by building that infrastructure from scratch again. For example, now whenever Debian tags a new version for their PHP packaging we can automatically integration test freshly compiled builds with our patches all the way up to the Magento application level. This gives us even more control over the stability of Hypernode as a platform. By testing the entire stack we can be even more sure that new software we introduce to the ecosystem doesn’t get in the way of Magento.

To build a testing pipeline like this for Xenial we had to rebuild the hypernode-vagrant image from scratch as well. This release (in combination with vagrant-hypconfigmgmt (0.0.8)) makes that Ubuntu 16.04 image the default for new checkouts of hypernode-vagrant, which means that you can already start testing with a Xenial Hypernode development environment right now.

The vagrant up dialogue now prompts for Ubuntu version if no local.yml is configured. If you already have a local.yml without an ubuntu_version defined your project will be unaffected until your remove the local.yml file and re-run vagrant up to trigger the prompt or manually add ubuntu_version: xenial to the top level of your local.yml like so:

~/code/projects/hypernode-vagrant$ cat local.yml 
---
fs:
  folders:
    magento2:
      host: data/web/magento2
      guest: "/data/web/magento2"
    nginx:
      host: data/web/nginx/
      guest: "/data/web/nginx/"
  type: virtualbox
  disabled_folders:
    magento1:
      host: data/web/public
      guest: "/data/web/public"
hostmanager:
  extra-aliases:
  - my-custom-store-url1.local
  - my-custom-store-url2.local
  default_domain: hypernode.local
magento:
  version: 2
php:
  version: 7.0
varnish:
  state: false
firewall:
  state: false
cgroup:
  state: false
xdebug:
  state: false
vagrant:
  box: hypernode_xenial
  box_url: http://vagrant.hypernode.com/customer/xenial/catalog.json
ubuntu_version: xenial

New clones of hypernode-vagrant will assume the Xenial image as the configured image unless specified otherwise.

~/code/projects/hypernode-vagrant$ vagrant up

    Bringing machine 'hypernode' up with 'virtualbox' provider...
    ...
        hypernode: What Ubuntu version do you want to use? Options: xenial, precise (deprecated) [default xenial]: 
    ==> hypernode: Will use the Xenial version. This is the default.
    ==> hypernode: Your hypernode-vagrant is now configured. Please run "vagrant up" again.

If you want to keep using the Precise image either answer precise to the dialogue, or add ubuntu_version: precise to local.yml instead. Leaving ubuntu_version out of the local.yml will also fall back to Precise at this point in time (for backwards compatibility with previously generated local.yml configurations). Additionally the hypernode-vagrant-runner tool now supports the --xenial flag. If you encounter any problems please let us know.

Also, all production Hypernodes now have mercurial installed due to popular request.