Exoscale provides various Compute Instance templates to choose from, however it is very likely that you might want to customize your systems to fit your needs. In addition to using a cloud-init configuration via an Instance’s User Data or using a configuration management tool such as Puppet or Ansible, you can also create your own customized templates and deploy Instances ready to go with minimal start-up configuration.

Note: a Compute instance that runs a Custom Template cannot be moved from an Organization to another, as Custom Templates are Organization-specific.

Create a Custom Template

Creating Custom Templates is a 2-step process: create a template image (i.e. a disk image), then register it as a template on Exoscale.

Prerequisites

  • The template image must be in the QCOW2 format.
  • The virtual size of the image must be between 10 and 100 GB.
  • We recommend installing cloud-init on Linux-based images. Exoscale uses the CloudStack cloud-init datasource. You can find more informations about cloud-init in our documentation.

Build a template image

To create a template image, we strongly recommend using Packer. Although Exoscale is not (yet) supported natively as a builder, you can use the QEMU builder to create template images.

We provide Packer configuration examples in this Git repository to help you get started.

cloud-init configuration

If you intend to use cloud-init in your templates (e.g. to be able to pass userdata at creation time), please ensure they include a /etc/cloud/cloud.cfg.d/99_exoscale.cfg file containing the following configuration:

datasource:
  CloudStack: {}
  None: {}
datasource_list:
  - CloudStack

Register a Custom Template

Once your template image is ready you must host it on a publicly accessible HTTPS service such as Exoscale Object Storage, as you will need to indicate an URL pointing to it during template registration.

There are 2 ways to register a template: using the exo CLI (the list of available flags can be found by running the command exo vm template register --help), or from the Portal in the Templates section. This step requires providing the following information:

  • The template name
  • The template image file checksum (MD5), to ensure import integrity

Optionally, the following properties can also be set:

  • A template description
  • Whether the template allows user password reset
  • Whether the template allows a SSH key to be copied during Instance creation

Note: a Custom Template is registered per zone: if you want to use it in multiple zones, you have to repeat this step in the zones you’re interested in.

List your templates

You can list your Custom Templates with the exo vm template list --mine command, and from the Portal in the Templates section.

Delete a template

You can delete a Custom Template with the exo vm template delete <template uuid> command, and from the Portal in the Templates section. Note: you cannot delete a Custom Template referenced by an Instance.