module

OvhApi

OvhApi — client Crystal pur (stdlib uniquement) pour l'API OVHcloud v1.

Couvre le strict nécessaire au provisioning de serveurs dédiés :

  • client.ssh_keys — lister / créer / supprimer les clés SSH du compte.
  • client.dedicated_servers — lister les serveurs, lancer une réinstallation, suivre la tâche, renommer (displayName), lister les IPs allouées.
  • client.ips — lire et écrire le DNS inverse des IPs.
  • client.domains — gérer les enregistrements DNS d'une zone (A/AAAA/CNAME/MX…), rafraîchir la zone.
require "ovh-api"

client = OvhApi::Client.new(
  application_key: ENV["OVH_APPLICATION_KEY"],
  application_secret: ENV["OVH_APPLICATION_SECRET"],
  consumer_key: ENV["OVH_CONSUMER_KEY"],
  endpoint: :eu,
)

client.ssh_keys.create(name: "laptop", key: "ssh-ed25519 AAAA...")

task = client.dedicated_servers.reinstall(
  service_name: "ns1234.ip-1-2-3.eu",
  template: "debian12_64",
  hostname: "web01.aloli.fr",
  ssh_key_name: "laptop",
)

loop do
  status = client.dedicated_servers.task(
    service_name: "ns1234.ip-1-2-3.eu",
    task_id: task.id,
  )
  break if status.done?
  sleep 30
end

Constants

ENDPOINTS = {:eu => "https://eu.api.ovh.com/1.0", :ca => "https://ca.api.ovh.com/1.0", :us => "https://api.us.ovhcloud.com/1.0", :kimsufi_eu => "https://eu.api.kimsufi.com/1.0", :kimsufi_ca => "https://ca.api.kimsufi.com/1.0", :soyoustart_eu => "https://eu.api.soyoustart.com/1.0", :soyoustart_ca => "https://ca.api.soyoustart.com/1.0"}

Endpoints OVH officiels.

:eu est la valeur par défaut (Europe continentale, marché principal d'OVHcloud). Les clés API sont liées à un endpoint précis : une clé créée sur eu.api.ovh.com ne fonctionnera pas sur ca.api.ovh.com.

VERSION = {{ (((read_file("/tmp/tmp.FjCkko/src/src/ovh_api/../../shard.yml")) .lines .find(&.starts_with?("version:")) || "version: 0.0.0") .gsub(/^version:\s*/, "")) .chomp }}

Lue au compile-time depuis shard.yml via le macro read_file. Cf. note mémoire feedback_shard_version_macro.md (mémoire ALOLI).

Nested types