Skip to content

Custom Images

Custom images let you bring your own operating system to GPCORE bare-metal nodes. This is useful when you need a pre-configured base image with your software stack already installed, want to use a distribution or version not available in the public image library, or need specific kernel settings or security hardening applied at the OS level. Images must be uploaded via the API or Terraform provider and must be in qcow2 or raw uncompressed format. It is strongly recommended to include Cloud-Init (Linux) or Cloudbase-Init (Windows) in your image so that GPCORE can configure networking, inject SSH keys, and apply user data at first boot.

Cloud-Init recommended

It's recommended to run Cloud-Init or Cloudbase-Init on your images. This is used to configure the server after it has been created. If you don't use Cloud-Init or Cloudbase-Init you need to take care of the configuration yourself. This includes basics like networking and user management.

Cloud-Init Linux Support

Cloud-Init support for GPCORE is already in the upstream but not released yet. In the meantime please install Cloud-Init from the main branch or use the daily builds in your images.

Uploading images

Currently it's only supported to upload images via the API or via our Terraform provider. We plan to add support for uploading images via the panel in the future.

Supported image formats:

  • qcow2
  • raw (uncompressed)

Cloud-Init configuration

Linux

Please ensure that you have installed Cloud-Init on the latest version from the main branch inside the image.

Configure cloud-init correctly to run on the first boot. For example create the following file /etc/cloud.cfg.d/01-metadata.cfg:

datasource_list: [OpenStack, None]

reporting:
  metadata:
    type: webhook
    endpoint: http://169.254.169.254/reporting/cloud-init
    timeout: 10
    retries: 1

Windows

Configure Cloudbase-Init correctly to run on the first boot. For example create the following file C:\ProgramData\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf:

[DEFAULT]
username=Administrator
groups=Administrators

first_logon_behaviour=no
inject_user_password=true

mtu_use_dhcp_config=true
ntp_use_dhcp_config=true

metadata_services=cloudbaseinit.metadata.services.httpservice.HttpService

bsdtar_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe
mtools_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\

log-dir=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\
log-file=cloudbase-init.log

local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\

default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=INFO
verbose=true
debug=true