
In this article, I will explain how to launch a virtual machine instance on Chameleon Cloud. In my case, my machine is the Nvidia K80 GPU.
What is Chameleon Cloud?
Chameleon Cloud is a Cloud Computing platform like IBM, Alibaba, Google, AWS, and Azure Cloud. The main difference with Chameleon is that it is free to use if you have permission to use it.
Unlike traditional cloud computing platforms, Chameleon is primarily used for research purposes, and it is funded by the National Science Foundation. All members who have access and permission to use Chameleon can use its machines for free. Only faculty at academic institutions, Federal agencies such as national labs R&D centers and institutes, and International research institutions are eligible to create projects on chameleon. This does not mean that only anyone under that criteria can use chameleon. That means that anyone under that criteria can create a project, and they can add anyone else to that project. So if you are doing research under a person who fits any of the above criteria, then you can request them to create a chameleon project, you can get added to that project, and you can begin using the chameleon machines for free.
Getting Started
After you are added to a project, you can begin using the machines on chameleon. The machines on chameleon are physically distributed between 2 main locations: the Texas Advanced Computing Center(TACC) and the University of Chicago(UC). You can explore and use the machines on either location. In this article, I will be using the Nvidia K80 from the TACC.
To select the location, login to your account, go to chameleoncloud.org, and go to Experiment -> CHI@TACC (or the CHI@UC, whichever one you are using).

Once you are there, it should look like this:

Reservations
Unlike traditional cloud computing platforms, you cannot immediately launch an instance whenever you want to. Chameleon uses a reservation system, where users must reserve machines beforehand. You can view the Host Calendar(basically a calendar showing who is using instances and when) by going to Reservations -> Leases and then selecting Host Calender. You will have to look at the host calendar to see when which resources are available when. It will look like this.

To view which specific machines are available select Node Type and choose your machine type, in my case the Nvidia K80 GPU.

And you can view when each machine is available, or if a machine is currently available. The important thing to remember is that you cannot reserve a node if it is already currently being used, or you cannot reserve it in advance when someone else has already reserved it.
You can reserve a machine by going to Reservations -> Leases and selecting Create Lease. A window will pop up and it will look like this

The lease name can be whatever you want it to be. If you would like to start your lease as soon as possible, you may leave the start time blank and Chameleon will attempt to reserve your nodes to begin immediately with a default Lease duration of 1 day. Leases are limited to a duration of 7 days. However, an active lease within 48 hours of its end time can be prolonged by up to 7 days from the moment of request if resources are available. Chameleon will send an email reminder to you 48 hours before your lease ends.
Creating Key Pair and Associating an IP address
Before/When you launch your instance, you will have to create a key pair and associate an IP address to properly launch your machine. To create a Key pair, go to Compute -> Key Pairs and select Create Key Pair. A window will pop up that will look like this.

Your key pair name can be anything, and choose your key type to SSH key. Once you have finished creating your key pair, a key file should be generated and downloaded called .pem.
Before/After you Launch an Instance(it really doesn’t matter when), you should create a Floating IP address and you will need to assign it to the instance after you have launched your instance.
To create a Floating IP address, go to Network -> Floating IPs and select Allocate IP to Project. A window will pop up that will look like this:

The Description is optional and can be anything you want. Select Allocate IP. After you launch your instance, I will show how to allocate the IP to your instance.
Launching an Instance
Once the reservation starts, you can launch a bare metal instance on the node that has been leased to you.
Go to Compute -> Instances and select Launch Instance. A window will pop up and it will look like this:

The instance name can be whatever you want it to be, and the same thing applies to the description. For the reservation, select the reservation you created.
The next step before you launch your instance is to go to Source.

At this point you will have to select the image you want. You will have to scroll down through the list of images and select the one you want. I am using the Nvidia K80 GPU so I will select CC-Ubuntu18.04-CUDA10.

The next step is to go to Flavor and select the type of the node/instance you want. Select baremetal.

The next step is to go to Key pair and select the Key Pair you created in the previous section. Go to Key Pair and find the key pair that you created in the previous step and select it. I named my key pair i_extraction, so this is what my window looks like

Once you have done all of this, you can finally Launch your instance. Click Launch Instance in the bottom right corner of the window. Your instance will take approximately 10 minutes to load up. You can see if it has finished loading up and is running by looking at the Compute -> Instance tab.
Once your instance has loaded, you must associate the Floating IP address created earlier. Go to Network -> Floating IPs. On the right side of the panel underneath Actions, select Associate. A window will pop up, and associate your IP address with your Instance.
Accessing your Instance
I am using Windows 10, so [this](https://www.youtube.com/watch?v=MDK5D2ptJiQ) guide will follow how to access your instance on Windows 10. For any other systems, follow this guide to access your instance. Note, for windows users, you can also follow this video to login via SSH and access your instance.
If you are on Windows that does not have the Linux subsystem installed, you have to use an SSH client. I personally find this method relatively easy to do to login via SSH to your instance. Download an SSH client like Bitvise or Putty(I am using Bitvise), and your screen should look something like this.

Go to Client Key manager -> Import, and import the downloaded Key Pair pem file. You will have to change the file type to all Files to do so. In the space next to Host, type in the 12 digit IP address you associated with your instance. Next to port, type in 22. In the space next to username, type in cc. This is the default username for most chameleon instances. In the dropdown next to Initial method, select public key. Once you have done this, a new dropdown should appear called Client Key. In this dropdown, select the client key that you just attached, and for me, this is Global 1. Select Log In. You have now logged into your instance via SSH. At this point, you may run into a couple different types of errors. If you do, check that your instance has actually started, your key pair is correct, and you filled in the right IP address. In some cases, you also may have done everything right but chameleon just does not associate the key pair with the instance and it may be unable to launch the instance. In this case, I recommend that you just delete the instance and relaunch it. You can kill the instance by going to Compute -> Instances and under actions for your instance, in the dropdown select delete instance.
In bitvise, if you have successfully logged into your instance, in the left side of your window, you will see something like this:

New terminal console is where you can access your terminal and run code, and New SFTP window is where you can upload files from your computer.
I hope you found this article easy to understand and informative. If you have any questions leave them in the comments below.