Version 2.0.0 released

Release highlights

Upgraded to Ubuntu Bionic Beaver

Ubuntu Bionic Beaver is the latest LTS release of Ubuntu.

The first thing you’ll likely notice is the Gnome desktop has replaced Unity as the standard Ubuntu desktop. We’ve also dropped the option of using the Xfce desktop for your development environment. While you no longer have a choice of desktops you can now configure the placement of the dock.

Apart from that you’ll notice newer versions of popular packages, see the Ubuntu Bionic Beaver release notes for details.

Improved Java support

  • Added SDKMAN! Software Development Kit Manager
  • Java 11 is now the default JDK (Java 8 is still available)
    • Use SDKMAN! to switch Java versions e.g.
      • sdk use java 8
      • sdk use java 11
  • Added new GantSign code style for IntelliJ IDE

    Note: while the new GantSign code style is the default, we recommend you add the code style configuration .idea/codeStyles/* to version control for each of your projects. It’s wise to copy the code style from the IDE to the project so it doesn’t change unintentionally and all developers have the same configuration.

  • Added GantSign inspection profile for IntelliJ IDEA

    Note: while the new GantSign inspection profile is the default, we recommend you add the inspection profile configuration .idea/inspectionProfiles/* to version control for each of your projects. It’s wise to copy the inspection profile from the IDE to the project so it doesn’t change unintentionally and all developers have the same configuration. The GantSign inspection profile is optimized for greenfield projects, for existing projects you may want to use the default IntelliJ inspection profile instead.

  • Added LogSupport2 plugin for IntelliJ IDEA

Improved Python support

  • Added Pyenv Python version manager
  • Added Pipenv Python package manager with Virtualenv support
  • Added Python plugin for IntelliJ IDEA

Improved Kubernetes support

  • Added Minikube for creating a local Kubernetes cluster
  • Added Kops for creating production grade Kubernates clusters
  • Added Helm the Kubernetes package manager
  • Added Kompose for using Docker Compose files with Kubernetes

Improved Zsh support

Improved tab-completion support

  • Ubuntu Bionic Beaver comes with newer package versions, some with improved Zsh support
  • Added tab-completion for more commands
    • bat
    • ctop
    • fd
    • gradle
    • helm
    • httpie
    • hub
    • kompose
    • kops
    • kubeadm
    • kubectl
    • moleculew
    • npm
    • pip
    • pipenv
    • pyenv
    • sdkman
    • yarn

Improved Git support

  • Added hub wrapper for Git with additional features for GitHub
  • Added Git Credential Manager for Mac and Linux
  • Added new Git aliases

    • Checkout an existing branch

      git cogit checkout

    • Create a new branch

      git cbgit checkout -b

    • Amend the last commit and change the commit message

      git cagit commit --amend

    • Amend the last commit without changing the commit message

      git canegit commit --amend --no-edit

    • Rebase the current branch onto origin/develop

      git rodgit rebase origin/develop

    • Push the current branch to origin HEAD

      git pogit push origin HEAD

    • Force push the current branch to origin HEAD

      git pofgit push origin HEAD --force

    • Switch to the master branch pull changes and prune remote branches

      git cmpgit checkout master && git pull -p

    • Switch to the develop branch pull changes and prune remote branches

      git cdpgit checkout develop && git pull -p

    • Pop the most recent stash

      git popgit stash pop

    • Reformat the recent changes as Markdown release notes

      git release-notesgit log --color --pretty=format:'%s%Cred%d%Creset' --decorate | sed -E 's/(.*) \\((\\#[0-9]+)\\)/* \\2: \\1/' | tac -

    • View all Git aliases

  • Added configuration for setting the Git user name and email address during provisioning

More command line tools

  • bat more advanced alternative to cat
  • ctop top like tool for Docker containers
  • fd intuitive alternative to find

Improved credential handling

Version 1 of this development environment was configured to auto-login. The problem with this approach was it prevented the Gnome Keyring from persisting credentials. This meant you had to put in you Git credentials every time you reloaded the VM. It also causes problems for apps such as Google Chrome that expect to be able to store credentials.

Version 2 of this development environment removes the auto-login feature. You now have to enter a password to login the development environment, but most other credentials can be persisted between sessions. For security, you’re forced to change the password on first use.

Improved backup & restore

The original backup mechanism (using Unison file synchronization) was prone to failure. For version 2 we’re using a new backup mechanism using rsync.

Removed software

  • Atom

    These days Visual Studio Code is as good or better for practically everything.

  • Molecule

    We recommend using Molecule Wrapper instead of installing Molecule as a system package.

Changed minimum requirements

You need to upgrade to at least Vagrant 2.1.0 before you can provision a development-environment (follow the upgrade procedure below).

Upgrade procedure

Preparing your existing VM for upgrade

Purge the download cache

While not strictly required, it’s best to clean out all the old Ubuntu Xenial packages before upgrading to free up disk space.

Bring up the development environment by running the following on the host:

vagrant up

From the development environment terminal run:

sudo rm -rf /var/persistent/usr/local/src/ansible/data/*
# Workaround for /bin/rm: cannot execute [Argument list too long]
for f in /var/persistent/var/cache/apt/archives/*.deb; do sudo rm -f "$f"; done

Upgrade to the latest version of Vagrant

Download the latest version of Vagrant from https://www.vagrantup.com. Uninstall your current version of Vagrant then install then reboot. Remove any lingering parts of the old installation under C:\Program Files\HashiCorp\Vagrant. Then reinstall Vagrant. While it should be possible to upgrade Vagrant without uninstalling, it fails when you have the Vagrant Triggers plugin installed (it conflicts with the native triggers feature in recent versions of Vagrant).

Update the provisioning scripts

From the host run:

git fetch && git rebase origin/2.0.0

Re-provision the development environment

From the host run:

vagrant destroy && vagrant up

If there are any problems follow the troubleshooting advice.

Change your password

Once provisioning is complete you need to change your password. Login using the username vagrant and password vagrant. You’ll then be prompted to change your password.

Pick a strong password and don’t reuse another password (e.g. don’t use your Windows password). This password will be used to secure access to saved passwords in your browser, SSH key passwords and Git credentials etc.

The password needs to be at least 16 characters long and you cannot repeat the same character more than 3 times in a row. Prefer long easy to remember phrases over difficult to remember random passwords.

Important: you need to complete this procedure before you stop/reload the VM.

Fix SSH key permissions

The version of SSH that comes with Ubuntu Bionic will not load an SSH key if it’s readable by other users. Run the following command from the terminal in the client VM to fix the file permissions:

chmod 'go-rwx' ~/.ssh/*

After this is complete logout and log back in so your key is loaded.

Full change list

For a full list of changes view the release notes.

Updated: