Перейти до вмісту
NimbusNexus

Образи VM

Образ VM — це шаблон ОС, з якого завантажується кореневий диск нової VM. NimbusNexus надає публічні образи для основних дистрибутивів Linux і Windows Server; також можна завантажити свої власні образи, зібрані за допомогою інструментів на кшталт Packer або створені зі снапшота налаштованої VM.

Публічні образи

Публічний каталог оновлюється щомісяця патчами безпеки. Slug-и стабільні між патчами: якщо взяти ubuntu-24.04 сьогодні й ще раз через 6 місяців, ви отримаєте ту саму основу з патчами за 6 місяців. Якщо потрібні побайтово відтворювані завантаження, закріпіть slug з датою (напр., ubuntu-24.04-20260301).

Наразі опубліковані slug-и:

  • ubuntu-24.04, ubuntu-22.04, ubuntu-20.04
  • debian-12, debian-11
  • fedora-40, fedora-39
  • rocky-9, rocky-8
  • almalinux-9, almalinux-8
  • windows-2022, windows-2019

Кожен публічний образ містить нашу мінімальну конфігурацію cloud-init: SSH-ключі, додані із зареєстрованих ключів проєкту (див. сторінку SSH-ключі), apt-get update або аналог під час першого завантаження і сервіс метаданих, закріплений за адресою 169.254.169.254.

Власні образи

Власні образи приймаються як файли raw, qcow2 або vmdk розміром до 128 GB у нестиснутому вигляді. Під час завантаження образ конвертується в наш внутрішній формат (~1–3 хвилини на GB), а потім стає звичайним завантажувальним образом для будь-якої VM у тому самому регіоні.

Зберігання власних образів тарифікується за $0,013/GB·міс (тариф Standard в обʼєктному сховищі). Окремого рівня «сховище образів» немає.

Регіони

Публічні образи доступні в кожному активному регіоні. Власні образи привʼязані до регіону: образ, завантажений у us-east-1, не можна використати для завантаження VM в eu-central-1 без копіювання. Для реплікації використовуйте POST /v1/vm-images/{id}/copy (у довіднику нижче його ще немає — незабаром).

Що далі

  • Віртуальні машини — розгорніть VM з одним із цих образів.
  • Розміри VM — обчислювальна конфігурація, у якій завантажується образ.
  • Снапшоти — зробіть снапшот наявної VM, а потім перетворіть його на власний образ.

Reference

GET/api/v1/image/

Images List

Lists images visible to the caller, applying the supplied filters and pagination.

Parameters

NameInTypeDescription
limitqueryinteger | null—
markerquerystring | null—
namequerystring | null—
ownerquerystring | null—
protectedqueryboolean | null—
statusquerystring | null—
tagquerystring | null—
visibilityquery"public" | "private" | "community" | "shared" | "all" | null—
os_hiddenqueryboolean | null—
member_statusquery"accepted" | "pending" | "rejected" | "all" | null—
size_maxquerystring | null—
size_minquerystring | null—
created_atquerystring | null—
updated_atquerystring | null—
sort_dirquerystring | null—
sort_keyquerystring | null—
sortquerystring | null—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

Example

curl -X GET "https://api.nimbusnexus.net/api/v1/image/" \
  -H "Authorization: Bearer $NIMBUS_KEY"
POST/api/v1/image/

Image Create

Creates a new image record and resolves its billing product for the calling project.

Request body

FieldTypeDescription
name*string—
descriptionstring | null—
disk_format*string—
container_format*string—
visibilitystring—
product_categorystringProduct category for billing
subscriptionobjectSubscription plan type

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 409Conflict
  • 422Validation error
  • 500Internal Server Error

Example

curl -X POST "https://api.nimbusnexus.net/api/v1/image/" \
  -H "Authorization: Bearer $NIMBUS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Example",
    "disk_format": "example",
    "container_format": "example"
  }'
DELETE/api/v1/image/

Images Delete

admin_domain, admin_project are only for admin

Request body

FieldTypeDescription
admin_domainstring | null—
admin_projectstring | null—
projectstring | null—
ids*array of string—

Responses

  • 204Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

Example

curl -X DELETE "https://api.nimbusnexus.net/api/v1/image/" \
  -H "Authorization: Bearer $NIMBUS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [
      "example"
    ]
  }'
POST/api/v1/image/file

Image Upload

Uploads the binary contents of a previously created image from the supplied file.

Request body

JSON body required.

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

Example

curl -X POST "https://api.nimbusnexus.net/api/v1/image/file" \
  -H "Authorization: Bearer $NIMBUS_KEY"
POST/api/v1/image/import

Image Import

Imports an image into the catalog by fetching its contents from a remote URL.

Request body

FieldTypeDescription
id*string—
url*string—

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

Example

curl -X POST "https://api.nimbusnexus.net/api/v1/image/import" \
  -H "Authorization: Bearer $NIMBUS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "example",
    "url": "https://example.com/webhooks"
  }'
PATCH/api/v1/image/{image_id}

Image Update

Updates the editable fields of an image owned by the caller's project.

Parameters

NameInTypeDescription
image_id*pathstring—

Request body

FieldTypeDescription
namestring | null—
descriptionstring | null—
metadataobject | null—

Responses

  • 200Successful Response
  • 422Validation Error

Example

curl -X PATCH "https://api.nimbusnexus.net/api/v1/image/<image_id>" \
  -H "Authorization: Bearer $NIMBUS_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Need to make a real call? Try these endpoints in the live Swagger UI →