Download VM (VHD) from Azure and uploading it to Google cloud and get it working..
In order to Download an Azure Virtual machine and make it possible to upload it and get it to work on Google cloud, I am going to export a working virtual machine with Ubuntu 15.4 server version on it with WordPress installed and functioning.
First I’ll have to have Azure PowerShell installed on my Windows PC before starting, If you don’t have it you can download it from the following link below.
1: Download the VHD from Azure.
Note: The VM that you intend to download must be in Stopped state in order for the download to work in Powershell
First i'll install Azure model from the following link
Launch the azure PowerShell as an administrator use the following cmdlet which will launch an Internet page that will direct you to login to your azure subscription to download a setting file.
The page will look like this and should automatically download the file to your Download folder...
Then when the file is downloaded, Navigate to the download folder and import the subscription using the following cmdlet
Import-AzurePublishSettingsFile '.\Visual Studio Premium with MSDN-10-9-2015-credentials.publishsettings'
Now I will get my Virtual machine's storage blob link from the Azure portal, I'll press on the arrow next to the VM's name
I'll click on Dashboard
Then scroll down to Disks
I'll hover the mouse over the VHD link and copy it
Here's my machine's link
In a script like this I'll add it as a source
Then configure the destination which is going to be a path to my F root disk
$destinationVHD = "F:\ubuntu-downloaded.vhd"
Next I'll start downloading with the following command
Save-AzureVhd -Source $sourceVHD -LocalFilePath $destinationVHD
Here the download has already started
2: Convert AZURE VM from VHD to RAW
Once the file downloading is finished, I'll have to install VirtualBox from the following Link (it works on Windows 10 as well) and it's needed as it has conversion tool.
I'll install Oracle Virtual Box to the default installation path.
Now to convert the machine from VHD To the extension that fits to Google cloud (RAW) I'll have to run the VBOXHDBOX tool as an administrator
The tool comes normally in Spanish language, so I'll transfer it to English
Click on Archivo - Confuracion - > Idioma -> English
Now I will choose the source VHD that I want to convert and the destination file and the type "RAW"
Once you click Clone, the conversion will start but will take some time depending on the size of the VM and the speed of your Disk (SATA or SSD)
When the conversion has finished and the RAW file is ready, we'll have to do the following steps which is also documented In the below Google Link on how to import a virtualbox image
3: Import a VirtualBox image
STEP:1 I'll have to Download, install, and authenticate the Google Cloud SDK:
Since I am running a Windows machine then I won't be able to use some commands in the document by google like Curl and Tar ..etc so I'll have to download the Google cloud SDK from the following link and install it first…
I'll install python as well which is required for the Gcloud SDK
Once the installation is finished I'll let it run the Google SDK shell
Second Step : Authenticate
I'll login and authenticate my Google cloud account (trial account)
The moment you enter this command (gcloud auth login) in Google cloud SDK shell the browser will launch google chrome and ask for authentication from your google account.
So i will go ahead and type the following to authenticate, as soon as you press enter the default browser will launch and redirect your page to google authentication to setup your gcloud trial and get your authentication approval.
> gcloud auth login
I'll let it authenticate and continue
As you can see below we have been authenticated now and next we'll be choosing the project (Like subscription in Azure).
Once authenticated, I'll choose the project in my google cloud account which I want to export the VM to.
Third step : Selecting a Project
I have 3 projects created there but I'll chose one of them only (moh10ly)
I'll have to use the following CMD to choose the project
gcloud config set project PROJECT
If you don't know your Project name or you don't have a project, you can do so from the google cloud console
I'll set the project now
> gcloud config set project as moh10ly
Fourth Step: Creating a storage Bucket
Now I'll need to create a new storage bucket (storage account) where I will upload the VM to
To create new Google cloud Bucket (Storage) called moh10lybucket I'll use the following cmd
> Gsutil mb gs://moh10lybucket
You can see if the bucket was created by navigating to your project's Storage -> Cloud Storage -> Browser window
Now I'll have to compress the RAW Virtual machine to TAR extension which is a must since Google doesn't accept any other format and in order for it to be uploaded to Google Cloud Bucket that I have created.
Since TAR is a linux based tool then I will download and install CYGWIN tool to compress the machine according to the google's documentation
To download Cygwin and install it on Windows use this link
https://www.cygwin.com/setup-x86_64.exe (This works also on Windows 10)
After downloading and installing the tool, I will have to copy the disk.raw to a location where I can easily access it in Cygwin to compress it
$ tar -Sczf vbox-image.tar.gz disk.raw
When you install Cygwin, it gives you the option to choose the installation path which is by default C:\ root directory, however I have chosen a different path for this program which is F:\ root in my case
So in order to access the Disk.raw file I'll copy the file to F:\cygwin64\home
Once the file is copied there, you can launch Cygwin as an administrator and you can view the directory by typing (LS) command and enter
$ LS (the LS should be small letters)
If the file is not there, then you must look in the newly created folder which is typically your Window's User profile name and copy the file again there too.
Once the file is copied and you have access to it via the Terminal then you can start and compress the file to TAR as in the below screenshots.
The command is tar -Sczf vbox-image.tar.gz disk.raw
When the compressing has finished, you will be able to see that the file is there and has its size decreased to 605 MB
Now since the file is ready to be uploaded, I will launch the Google SDK terminal and navigate to the path where the file is located (Or simply copy it to an easier location e.g. C:\) and upload the file to google cloud bucket using the following command line
> Gsutil cp vbox-image.tar.gz gs://moh10lybucket
What the command does is it actually copies the file with the command CP to the cloud storage which is gs://moh10lybucket (Make sure your google sdk terminal is already authenticated to your google cloud account).
Below the file started to upload … it took around 15 minutes for the upload to finish
Now I'll have to import the file into the images store in order for it to be used from the google cloud bucket
Importing the fıle after uploading
I'll use the following command
> Gcloud compute images create vbox-ubuntu --source-uri gs://moh10lybucket/vbox-image.tar.gz
Check in google images in google cloud if the image is imported and it is .. First image imported as in the below snapshot
Now I will deploy it as a VM and see if it works!
It did get imported and it works, You can access the ip below to see if my website is active or not!
Hope this was helpful.