as part of the installation user experience of WSO2 products, we are intending to provide the users with an option to run WSO2 products within a few minutes and evaluate its features using Vagrant . Vagrant will allow users to evaluate our products within virtual machine environments.
The constructed Vagrant resources are to be categorized into two categories, as follows:
Standalone product deployment using Vagrantfiles : deployment of the product distribution using Vagrant in Ubuntu LTS operating system with Oracle JDK installed.
Product pattern deployment using Vagrantfiles: deployment of any product deployment pattern in the form of Vagrant multi-machine  environments.
Standalone product evaluation:
When installing and running a WSO2 product, the following basic steps are followed within any Vagrantfile.
Step 1: Install the latest Ubuntu Long Term Support (LTS) operating system version.
Step 2: Update packages and install necessary utility software.
Step 3: Install Oracle Java SE Development Kit (JDK).
Step 4: Install the WSO2 product pack.
Step 5: Exposing ports.
[Step 1]: The Ubuntu LTS version is used as it is constantly updated, secure and stable. Please see this link for detailed information . For this purpose, the official Vagrant box  corresponding to Ubuntu LTS 16.04 (ubuntu/xenial64 ) has been used.
[Step 2]: Install required software packages which are required for WSO2 product installation process (e.g. ‘unzip’ is required to extract the WSO2 product distribution), troubleshooting purposes and etc.
[Steps 3 and 4]: The user is expected to mount the product pack and the Oracle JDK distribution to the guest machine. For this purpose, Vagrant's synced folders  are used to allow the user to mount these files. In this case, Vagrant’s default behavior of sharing the project directory (directory containing the Vagrantfile) to /vagrant is used.
[Step 5]: For this purpose, Vagrant’s port forwarding  is used. This technique is adopted due to its simplicity, as an evaluating user will be able to easily access the service using loopback address.
Note: Vagrant's Shell Provisioner  is used to execute these commands.
Product pattern deployment:
For product pattern deployment using Vagrant, multi-machine environments are used. The previously discussed steps have been used to setup the product. Apart from that, for communication between multiple virtual machines, Vagrant private networks  are used.
Any ideas and suggestions on this topic and the discussed details are highly appreciated.