class

ScalewayApi::Endpoints::Baremetal::Servers

Inherits Reference < Object

Endpoints /baremetal/v1/zones/{zone}/servers.

Contrairement à OVH (où il faut commander le serveur, puis attendre la livraison, puis lancer une réinstallation), Scaleway combine création et installation dans un seul appel POST — l'objet install est embarqué dans le corps de création.

Un serveur existant peut ensuite être réinstallé via POST /servers/{id}/install. Le suivi passe par les événements (GET /servers/{id}/events).

Constructors

Instance methods

create(offer_id : String, install : Install, zone : String | Nil = nil, project_id : String | Nil = nil, name : String | Nil = nil, description : String | Nil = nil, tags : Array(String) | Nil = nil, reverse : String | Nil = nil) : Server

Crée un serveur et lance son installation.

POST /baremetal/v1/zones/{zone}/servers avec offer_id, project_id, install et — optionnellement — name, description, tags, reverse (DNS inverse posé sur l'IP principale).

Source
delete(server_id : String, zone : String | Nil = nil) : Nil

Supprime un serveur.

DELETE /baremetal/v1/zones/{zone}/servers/{server_id}.

Source
events(server_id : String, zone : String | Nil = nil, page : Int32 | Nil = nil, page_size : Int32 | Nil = nil) : Array(Event)

Liste les événements d'un serveur (utilisé pour suivre l'installation).

GET /baremetal/v1/zones/{zone}/servers/{server_id}/events.

Source
find_any_zone(server_id : String) : Server | Nil

Balaye l'ensemble des zones Scaleway connues (ScalewayApi::ZONES) à la recherche d'un serveur Elastic Metal par UUID. Utile quand l'appelant connaît l'UUID mais pas la zone (outillage multi-zones, script d'import, UX path-like).

Retourne le premier Server trouvé (l'UUID est unique côté Scaleway, donc il ne peut y en avoir qu'un). Retourne nil si aucune zone ne reconnaît l'UUID.

Les zones qui répondent 501 unknown_service (pas encore activées pour Elastic Metal) sont silencieusement ignorées. Les autres ApiError sont relayées à l'appelant.

La zone d'appartenance est accessible ensuite via server.zone.

Source
get(server_id : String, zone : String | Nil = nil) : Server

Détail d'un serveur par UUID.

GET /baremetal/v1/zones/{zone}/servers/{server_id}.

Source
install(server_id : String, install : Install, zone : String | Nil = nil) : Server

(Ré)installe un serveur existant.

POST /baremetal/v1/zones/{zone}/servers/{server_id}/install.

Source
list(zone : String | Nil = nil, project_id : String | Nil = nil, page : Int32 | Nil = nil, page_size : Int32 | Nil = nil) : Array(Server)

Liste les serveurs d'une zone (éventuellement filtrée par projet).

GET /baremetal/v1/zones/{zone}/servers{"servers": [...]}.

Source
reboot(server_id : String, boot_type : BootType = BootType::Normal, zone : String | Nil = nil) : Server

Redémarre un serveur, éventuellement en mode rescue.

POST /baremetal/v1/zones/{zone}/servers/{server_id}/reboot avec {"boot_type": "normal"} ou {"boot_type": "rescue"}.

En mode Rescue, Scaleway ré-injecte automatiquement les clés SSH posées à la création du serveur (champ ssh_key_ids de l'install) dans l'environnement rescue. L'IP de management reste la même (pas de NAT spécifique). Le rescue dure environ 1 h avant que Scaleway ne reboote automatiquement sur l'OS installé.

Erreurs usuelles :

  • HTTP 403 (permissions_denied) — la clé IAM n'a pas le droit ElasticMetalFullAccess.
  • HTTP 409 — le serveur n'est pas dans un état compatible (installing, delivering, deleting…). Attendre ready ou stopped avant de relancer.

Retourne l'objet Server mis à jour (status typiquement stopping puis starting, puis ready / rescue selon le mode).

Source
update(server_id : String, zone : String | Nil = nil, name : String | Nil = nil, description : String | Nil = nil, tags : Array(String) | Nil = nil, reverse : String | Nil = nil) : Server

Met à jour un serveur (notamment le DNS inverse, via reverse).

PATCH /baremetal/v1/zones/{zone}/servers/{server_id}.

Le reverse est normalisé par Scaleway : passez "web01.aloli.fr" (sans point final) ou "web01.aloli.fr." indifféremment.

ATTENTION : le reverse posé ici ne s'applique qu'à l'IP PRIMAIRE (l'IPv4). Pour le reverse de l'IPv6 (ou de toute autre IP secondaire), utilisez {#update_ip}.

Source
update_ip(server_id : String, ip_id : String, reverse : String, zone : String | Nil = nil) : ServerIp

Met à jour une IP spécifique d'un serveur (reverse DNS par IP).

PATCH /baremetal/v1/zones/{zone}/servers/{server_id}/ips/{ip_id}.

Utile pour poser le reverse de l'IPv6 (ou de toute IP secondaire). {#update} ne gère que l'IP primaire (IPv4).

Le reverse est normalisé par Scaleway : passez "web01.aloli.fr" ou "web01.aloli.fr." indifféremment.

Source