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.oFlhFo/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).