.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 Huawei Technologies Co., Ltd.

Install and Configure Service Orchestrator
==========================================

Get Ubuntu
----------
Get the Ubuntu ISO image from ubuntu.com. The recommended version is 16.04.3 LTS (Long Term Support), desktop edition.

Get VirtualBox and VirtualBox Guest Additions
---------------------------------------------
Make sure you have the VirtualBox Guest Additions ISO for your version of VirtualBox.  I'm using VirtualBox 5.1.28.  Save the Guest Additions ISO on your host computer along with the Ubuntu ISO.  Get the Guest Additions ISO from here:
	http://download.virtualbox.org/virtualbox
*NOTE*: Guest Additions versions prior to 5.1 will not work with Ubuntu 16.04.3.  If you have an earlier version of VirtualBox, you should upgrade to the latest 5.1 version.

Create a new VM in VirtualBox for Ubuntu
----------------------------------------
Type: Linux

Version: Ubuntu (64-bit)

At least 2048 MB memory

At least 40 GB VDI

Network: Attached to: NAT

Create a port-forwarding rule for SSH
-------------------------------------
Create a port-forwarding rule so that you can use PuTTY (or other SSH client) to connect to the VM.

Go to "Network" settings in VirtualBox, add a port forwarding rule:

Name: SSH

Protocol: TCP

Host IP: 127.0.0.1

Host Port: 1022

Guest IP: <leave blank>

Guest Port: 22

.. image:: images/Configure_ubuntu_SO_1.png

.

.. image:: images/Configure_ubuntu_SO_2.png

Create Shared Folder
--------------------
This is oriented to Windows users.  If you're using a MAC or a Linux host computer, the details may be different.  You can share any folder on the host computer with the Ubuntu VM.  On Windows, a practical choice is to share the C:\Users folder, so that your Windows home directory will be accessible from the Ubuntu VM.

Go to "Shared Folders" settings in VirtualBox, add a share:

Folder Path: C:\Users

Folder Name: Users

Auto-mount: <checked>

Read-only: <unchecked>

.. image:: images/Configure_ubuntu_SO_3.png

.

.. image:: images/Configure_ubuntu_SO_4.png

Install Ubuntu in the VM
------------------------
On the "Storage" panel in VirtualBox, click on "[ optical drive ]" and then "Choose Disk Image".  Select your Ubuntu ISO image.

.. image:: images/Configure_ubuntu_SO_5.png

After selecting the ISO image, start the VM.

Follow the prompts to install Ubuntu.

Proxy Configuration (optional)
------------------------------
If you're behind a corporate firewall, configure some proxy settings.  NOTE: your proxy configuration may require username and password credentials, not shown here.
**Ubuntu system proxy setting:**

	System Settings → Network → Network proxy
	
	(Replace "proxyhost" and port with your actual proxy information)

.. image:: images/Configure_ubuntu_SO_6.png
	
**apt proxy setting:**
	Edit /etc/apt/apt.conf and add one line at the top (replace "proxyhost:port" with your actual proxy information):
	
		Acquire::http::Proxy "http://proxyhost:port";
		
	Reboot the VM.
	
Install SSH Server
------------------

.. code-block:: bash

    sudo apt update
    sudo apt install openssh-server

Connect to the VM from your host computer
-----------------------------------------
	The PuTTY SSH client is popular.  A connection to localhost:1022 (or whatever port you have forwarded) will go to the VM.

.. image:: images/Configure_ubuntu_SO_7.png
	
Install VirtualBox Guest Additions
----------------------------------
On the "Storage" panel in VirtualBox, click on "[ optical drive ]" and then "Choose Disk Image".  Select your VirtualBox Guest Additions ISO image.

.. image:: images/Configure_ubuntu_SO_8.png

In a VM terminal window, mount the cdrom:

.. code-block:: bash

	sudo mkdir -p /media/cdrom
	sudo mount /dev/cdrom /media/cdrom
	
Install necessary dependencies:

.. code-block:: bash

    sudo apt update
    sudo apt install gcc g++ dkms
	
Install the guest additions.  NOTE: look for errors in the command output!  If you see an error that says you are missing kernel headers, the most likely cause is that you are using a VirtualBox version that is too old.  The error message is misleading.

.. code-block:: bash

	cd /media/cdrom
	sudo ./VBoxLinuxAdditions.run

.. image:: images/Configure_ubuntu_SO_9.png	
	
Add yourself to the vboxsf user group (replace "userid" with your user ID):
	
.. code-block:: bash	
	
	sudo usermod -a -G vboxsf userid
	
Reboot the VM.

In a VM terminal window, verify that you can access your home directory on the host computer, which should be mounted under here:
	/media/sf_Users
	
Further Reading
----------------------------------------	

.. toctree::
   :maxdepth: 1

   Install_Docker.rst
   Configure_git_and_gerrit.rst
   Workspace_and_Development_Tools.rst