Custom VM images
Create custom VM images for use in your sandboxes.
This guide explains how to create a custom Virtual machine (VM) image and use it as a sandbox host in a track.
Advantages of custom VMs
Faster and more reliable
The main benefit of using a custom VM image is that it allows you to pre-install your software and the files needed for a track. Your track will start faster, since software does not need to be installed as part of the track setup script.
Increased image size
Custom images can be have any disk size you like and are not restricted to the default 10GB that ships with the stock Instruqt images.
Create custom VM images
There are two ways to create a custom VM image:
We recommend using Instruqt Host images if you are not familiar with Google Cloud, or want to avoid the complexity of managing a cloud account.
Instruqt Host images
Instruqt Host images allow you to create VM images directly inside your Instruqt team. You create Host images using the Web UI.
Click Settings → Host images.
Click Create image in the upper-right corner.
On the Image details page, enter an image name, and optionally provide a description and disk size (the default disk is 10GB).
Select a base image. You can use an Instruqt preset image, or choose your own.
Custom image names follow a
PROJECT_ID/IMAGE_NAME
format.
At the bottom of the page, click Next.
On the Customize your image page, use the terminal and code editor tabs to edit your image by running install commands, adding files, etc.
Once you've finished customizing your image, click Save in the upper-right corner.
You can now reference your image in your sandboxes.
Instruqt host images follow a
TEAM_NAME/IMAGE_NAME
format.
Need to edit an existing host image? Open the Host images page. Select the image you want to edit. Click Edit in the top right corner, and then follow Step 3-7 again.
Using your own GCP project
Before you begin
You should have a Google Cloud Platform (GCP) project available or have your GCP admin create a GCP project for you.
Importing an existing image? If you are importing an existing image to GCP make sure to install the Google Guest Environment in your image. Instruqt requires the guest environment to bootstrap VMs.
Step 1: Create a VM
Open your browser and navigate to your GCP project on the Google Cloud Platform.
Click Compute Engine → VM instances.
Click [+] CREATE INSTANCE.
In the Name field, enter a name of your liking (ex: my-build-instance).
Click Change under Boot disk.
In the Operating system list, select your desired OS (ex: Ubuntu).
In the Version list, select the desired OS version (ex: Ubuntu 23.04 LTS).
Click Select.
Click Create.
Step 2: Customize the VM
Click SSH on the VM instance you created in step 1. ↳ This opens a new
SSH-IN-BROWSER
window.Modify your VM by running whatever commands you'd like.
Close the terminal.
Click ••• on your newly created VM instance, followed by Stop. And click Stop to confirm.
Step 3: Create an image
Under Storage, click Images on the navigation menu.
Click [+] Create Image.
In the Name field, enter a name of your liking (ex: ubuntu23-custom).
In the Source Disk list, select the disk from your instance (ex: my-build-instance).
For Location, choose Regional.
In the Select location list, select europe-west1 (Belgium).
Click Create. ↳ The custom image is built for you and shown on the Image page. Your custom image is ready when the Status column shows a green checkmark.
In Google Cloud there are Disk Images and Machine Images. In this guide, we only work with Disk Images. Machine Images will not work in Instruqt.
Step 4: Grant permissions to Instruqt
Click IAM & Admin → IAM on the navigation menu.
Click + Grant access to add a new principal.
In the New principals field, enter the following:
instruqt-track@instruqt-prod.iam.gserviceaccount.com
In the Select a role list, select
Compute Image User
Click Save.
Step 5: Use the custom VM image in your track
You are ready to incorporate the custom VM into your track.
Head over to your Web UI or Instruqt CLI to incorporate the custom VM image into your track:
Open your track from your Content.
In the Sandbox section, click Edit.
Click + Add a host.
Select the Virtual machine host type.
In the Hostname field, enter a name of your liking (ex:
workstation
).Select the Choose your own image type.
In the GCP compute image field, enter
<YOUR-GCPPROJECT-ID>/<YOUR-IMAGE-NAME>
Select a machine type.
Click Show optional settings.
In the Shell field, enter
/bin/bash
Click Save host.
Video tutorial
Watch the video tutorial on how to use your own GCP project to host VM images.
Automate image building
Packer is an open-source tool for creating identical VM images for multiple platforms from a single source configuration. See the Google Cloud documentation for how to build VM images using Packer.
Last updated