Ir para o conteúdo
NimbusNexus

Imagens de VM

Uma imagem de VM é o template de SO usado para dar boot no disco raiz de uma nova VM. A NimbusNexus oferece imagens públicas para as principais distribuições Linux e para o Windows Server; você também pode enviar suas próprias imagens personalizadas, criadas com ferramentas como o Packer ou fazendo um snapshot de uma VM configurada.

Imagens públicas

O catálogo público é atualizado mensalmente com patches de segurança. Os slugs são estáveis entre patches; usar ubuntu-24.04 hoje e de novo daqui a 6 meses dá a você 6 meses de patches aplicados à mesma base. Fixe um slug datado (por exemplo, ubuntu-24.04-20260301) se precisar de boots reproduzíveis byte a byte.

Slugs publicados atualmente:

  • 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

Toda imagem pública inclui nossa configuração mínima de cloud-init: chaves SSH injetadas a partir das chaves registradas no projeto (veja Chaves SSH), apt-get update ou equivalente no primeiro boot e o serviço de metadados fixado em 169.254.169.254.

Imagens personalizadas

Imagens próprias são aceitas como arquivos raw, qcow2 ou vmdk de até 128 GB descompactados. A imagem é convertida para o nosso formato interno no upload (~1–3 minutos por GB) e depois vira uma imagem bootável comum para qualquer VM na mesma região.

As imagens personalizadas são cobradas a $0,013/GB·mês (tarifa da classe Standard do armazenamento de objetos) pelo armazenamento. Não existe um tier separado de "armazenamento de imagens".

Regiões

As imagens públicas estão disponíveis em todas as regiões ativas. As imagens personalizadas têm escopo de região — enviar para us-east-1 não torna a imagem bootável em eu-central-1 sem uma cópia. Use POST /v1/vm-images/{id}/copy (fora da referência abaixo — em breve) para replicar.

Próximos passos

  • Máquinas virtuais — provisione uma VM com uma destas imagens.
  • Tamanhos de VM — a configuração de computação em que a imagem dá boot.
  • Snapshots — capture uma VM existente como snapshot e depois converta-o em uma imagem personalizada.

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 →