OVH API - teris/Server-Management-Framework GitHub Wiki
OVH API Integration
Die OVH API Integration ermöglicht die Verwaltung von Cloud-Services, Domains und Virtual MAC-Adressen über die OVH Cloud API.
🔧 Konfiguration
1. OVH API-Zugangsdaten einrichten
Fügen Sie folgende Konfiguration in config/config.inc.php
hinzu:
// ===== OVH KONFIGURATION =====
const OVH_USEING = true;
const OVH_APPLICATION_KEY = 'your_ovh_app_key';
const OVH_APPLICATION_SECRET = 'your_ovh_app_secret';
const OVH_CONSUMER_KEY = 'your_ovh_consumer_key';
const OVH_ENDPOINT = 'https://eu.api.ovh.com/1.0'; // eu, ca, us
2. OVH API-Anwendung erstellen
- Gehen Sie zu OVH API Keys
- Erstellen Sie eine neue API-Anwendung
- Notieren Sie sich Application Key, Secret und Consumer Key
- Wählen Sie den richtigen Endpoint (eu, ca, us)
📚 API-Klassen
OVHGet Klasse
Lese-Operationen für OVH.
getDomains()
Holt alle Domains.
$ovh = new OVHGet();
$domains = $ovh->getDomains();
foreach ($domains as $domain) {
echo "Domain: {$domain}\n";
}
getVPSList()
Holt alle VPS-Instanzen.
$ovh = new OVHGet();
$vpsList = $ovh->getVPSList();
foreach ($vpsList as $vps) {
echo "VPS: {$vps['name']} - Status: {$vps['state']}\n";
echo "IP: {$vps['ip']}\n";
echo "---\n";
}
getVirtualMacAddresses($serviceName)
Holt alle Virtual MAC-Adressen für einen Service.
$ovh = new OVHGet();
$serviceName = 'mein-server';
$virtualMacs = $ovh->getVirtualMacAddresses($serviceName);
foreach ($virtualMacs as $mac) {
echo "MAC: {$mac->macAddress}\n";
echo "Service: {$mac->serviceName}\n";
echo "Interface: {$mac->virtualNetworkInterface}\n";
echo "Type: {$mac->type}\n";
if (!empty($mac->ips)) {
echo "Zugewiesene IPs:\n";
foreach ($mac->ips as $ip) {
echo " - {$ip['ipAddress']}\n";
}
}
echo "---\n";
}
getDedicatedServers()
Holt alle Dedicated Server.
$ovh = new OVHGet();
$servers = $ovh->getDedicatedServers();
foreach ($servers as $server) {
echo "Server: {$server['name']}\n";
echo "Status: {$server['state']}\n";
echo "---\n";
}
OVHPost Klasse
Schreib-Operationen für OVH.
createVirtualMac($serviceName, $virtualNetworkInterface, $type = 'ovh')
Erstellt eine neue Virtual MAC-Adresse.
Parameter:
$serviceName
(string) - Name des OVH Dedicated Servers$virtualNetworkInterface
(string) - Netzwerk-Interface (z.B. 'eth0')$type
(string) - MAC-Typ (Standard: 'ovh')
$ovh = new OVHPost();
$serviceName = 'mein-server';
$result = $ovh->createVirtualMac($serviceName, 'eth0', 'ovh');
if ($result) {
echo "Virtual MAC erfolgreich erstellt!\n";
echo "MAC-Adresse: {$result['macAddress']}\n";
} else {
echo "Fehler beim Erstellen der Virtual MAC\n";
}
addVirtualMacIP($serviceName, $macAddress, $ipAddress, $virtualNetworkInterface)
Fügt eine IP-Adresse zu einer Virtual MAC hinzu.
Parameter:
$serviceName
(string) - Name des OVH Dedicated Servers$macAddress
(string) - MAC-Adresse im Format '00:1a:2b:3c:4d:5e'$ipAddress
(string) - IP-Adresse die zugewiesen werden soll$virtualNetworkInterface
(string) - Netzwerk-Interface
$ovh = new OVHPost();
$result = $ovh->addVirtualMacIP(
'mein-server',
'00:1a:2b:3c:4d:5e',
'192.168.1.100',
'eth0'
);
if ($result) {
echo "IP erfolgreich zu Virtual MAC hinzugefügt!\n";
} else {
echo "Fehler beim Hinzufügen der IP\n";
}
createDNSRecord($domain, $recordData)
Erstellt einen DNS-Record.
$ovh = new OVHPost();
$domain = 'example.com';
$recordData = [
'fieldType' => 'A',
'subDomain' => 'www',
'target' => '192.168.1.100',
'ttl' => 3600
];
$result = $ovh->createDNSRecord($domain, $recordData);
if ($result) {
echo "DNS-Record erfolgreich erstellt!\n";
}
🔧 ServiceManager Integration
getVirtualMacAddresses($serviceName)
Holt alle Virtual MAC-Adressen über den ServiceManager.
$serviceManager = new ServiceManager();
$serviceName = 'mein-server';
$virtualMacs = $serviceManager->getVirtualMacAddresses($serviceName);
foreach ($virtualMacs as $mac) {
echo "MAC: {$mac->macAddress} - Service: {$mac->serviceName}\n";
}
createVirtualMac($serviceName, $virtualNetworkInterface, $type)
Erstellt eine Virtual MAC über den ServiceManager.
$serviceManager = new ServiceManager();
$result = $serviceManager->createVirtualMac('mein-server', 'eth0', 'ovh');
if ($result) {
echo "Virtual MAC erfolgreich erstellt!\n";
}
addIPToVirtualMac($serviceName, $macAddress, $ipAddress, $virtualNetworkInterface)
Fügt eine IP zu einer Virtual MAC über den ServiceManager hinzu.
$serviceManager = new ServiceManager();
$result = $serviceManager->addIPToVirtualMac(
'mein-server',
'00:1a:2b:3c:4d:5e',
'192.168.1.100',
'eth0'
);
OvhAPI($type, $url, $code = null)
Generische OVH API-Funktion für direkten Zugriff.
$serviceManager = new ServiceManager();
// Alle Domains abrufen
$domains = $serviceManager->OvhAPI('get', '/domain');
// DNS-Record erstellen
$dnsData = [
'fieldType' => 'A',
'target' => '192.168.1.100',
'ttl' => 3600
];
$result = $serviceManager->OvhAPI('post', '/domain/zone/example.com/record', $dnsData);
// VPS-Status abrufen
$vpsStatus = $serviceManager->OvhAPI('get', '/vps/vps123/status');
📊 Datenmodelle
VirtualMac Klasse
class VirtualMac {
public $macAddress; // MAC Address
public $serviceName; // OVH Service Name
public $ipAddress; // IP Address
public $virtualNetworkInterface; // Network Interface
public $type; // MAC Type
public $reverse; // Reverse DNS
public $ips; // Associated IPs
public $reverseEntries; // Reverse DNS Entries
}
🔍 Fehlerbehandlung
API-Status prüfen
$serviceManager = new ServiceManager();
// OVH API-Status prüfen
$apiCheck = $serviceManager->checkAPIEnabled('ovh');
if ($apiCheck !== true) {
echo "OVH API Fehler: " . $apiCheck['message'] . "\n";
echo "Lösung: " . $apiCheck['solution'] . "\n";
exit;
}
Try-Catch Fehlerbehandlung
try {
$ovh = new OVHGet();
$domains = $ovh->getDomains();
if (is_array($domains)) {
foreach ($domains as $domain) {
echo "Domain: {$domain}\n";
}
} else {
echo "Fehler beim Abrufen der Domains: " . $domains['message'] . "\n";
}
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
error_log("OVH Error: " . $e->getMessage());
}
📝 Praktische Beispiele
1. Virtual MAC-Management
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== OVH Virtual MAC-Management ===\n\n";
// Service-Name (OVH Dedicated Server)
$serviceName = 'mein-server';
// Alle Virtual MAC-Adressen abrufen
$virtualMacs = $serviceManager->getVirtualMacAddresses($serviceName);
if (empty($virtualMacs)) {
echo "Keine Virtual MAC-Adressen gefunden.\n";
} else {
foreach ($virtualMacs as $mac) {
echo "MAC: {$mac->macAddress}\n";
echo "Service: {$mac->serviceName}\n";
echo "Interface: {$mac->virtualNetworkInterface}\n";
echo "Type: {$mac->type}\n";
if (!empty($mac->ips)) {
echo "Zugewiesene IPs:\n";
foreach ($mac->ips as $ip) {
echo " - {$ip['ipAddress']}\n";
}
}
echo "---\n";
}
}
// Neue Virtual MAC erstellen
echo "Erstelle neue Virtual MAC...\n";
$result = $serviceManager->createVirtualMac($serviceName, 'eth0', 'ovh');
if ($result) {
echo "✅ Virtual MAC erfolgreich erstellt\n";
// IP zu Virtual MAC hinzufügen
$macAddress = $result['macAddress']; // Angenommen, die API gibt die MAC zurück
$ipAddress = '192.168.1.100';
$ipResult = $serviceManager->addIPToVirtualMac($serviceName, $macAddress, $ipAddress, 'eth0');
if ($ipResult) {
echo "✅ IP {$ipAddress} zu Virtual MAC hinzugefügt\n";
} else {
echo "❌ Fehler beim Hinzufügen der IP\n";
}
} else {
echo "❌ Fehler beim Erstellen der Virtual MAC\n";
}
?>
2. Domain-Management
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== OVH Domain-Management ===\n\n";
// Alle Domains abrufen
$domains = $serviceManager->OvhAPI('get', '/domain');
if (is_array($domains)) {
foreach ($domains as $domain) {
echo "Domain: {$domain}\n";
// DNS-Records abrufen
$dnsRecords = $serviceManager->OvhAPI('get', "/domain/zone/{$domain}/record");
if (is_array($dnsRecords)) {
echo "DNS-Records:\n";
foreach ($dnsRecords as $record) {
echo " - {$record['fieldType']} {$record['subDomain']} {$record['target']}\n";
}
}
echo "---\n";
}
}
// Neuen DNS-Record erstellen
$domain = 'example.com';
$dnsData = [
'fieldType' => 'A',
'subDomain' => 'www',
'target' => '192.168.1.100',
'ttl' => 3600
];
echo "Erstelle DNS-Record für {$domain}...\n";
$result = $serviceManager->OvhAPI('post', "/domain/zone/{$domain}/record", $dnsData);
if ($result) {
echo "✅ DNS-Record erfolgreich erstellt\n";
} else {
echo "❌ Fehler beim Erstellen des DNS-Records\n";
}
?>
3. VPS-Management
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== OVH VPS-Management ===\n\n";
// Alle VPS-Instanzen abrufen
$vpsList = $serviceManager->OvhAPI('get', '/vps');
if (is_array($vpsList)) {
foreach ($vpsList as $vpsId) {
// VPS-Details abrufen
$vpsDetails = $serviceManager->OvhAPI('get', "/vps/{$vpsId}");
if (is_array($vpsDetails)) {
echo "VPS: {$vpsDetails['name']}\n";
echo "Status: {$vpsDetails['state']}\n";
echo "IP: {$vpsDetails['ip']}\n";
echo "Region: {$vpsDetails['zone']}\n";
echo "---\n";
}
}
}
// VPS starten (Beispiel)
$vpsId = 'vps123';
echo "Starte VPS {$vpsId}...\n";
$result = $serviceManager->OvhAPI('post', "/vps/{$vpsId}/start");
if ($result) {
echo "✅ VPS gestartet\n";
} else {
echo "❌ Fehler beim Starten der VPS\n";
}
?>
4. Automatisches IP-Management
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== Automatisches IP-Management ===\n\n";
// Service-Name
$serviceName = 'mein-server';
// IP-Pool definieren
$ipPool = [
'192.168.1.100',
'192.168.1.101',
'192.168.1.102',
'192.168.1.103',
'192.168.1.104'
];
// Alle Virtual MAC-Adressen abrufen
$virtualMacs = $serviceManager->getVirtualMacAddresses($serviceName);
// Verfügbare IPs finden
$usedIPs = [];
foreach ($virtualMacs as $mac) {
if (!empty($mac->ips)) {
foreach ($mac->ips as $ip) {
$usedIPs[] = $ip['ipAddress'];
}
}
}
$availableIPs = array_diff($ipPool, $usedIPs);
echo "Verfügbare IPs: " . implode(', ', $availableIPs) . "\n";
// Neue Virtual MAC mit verfügbarer IP erstellen
if (!empty($availableIPs)) {
$newIP = array_shift($availableIPs);
echo "Erstelle Virtual MAC mit IP {$newIP}...\n";
$result = $serviceManager->createVirtualMac($serviceName, 'eth0', 'ovh');
if ($result) {
$macAddress = $result['macAddress'];
// IP zuweisen
$ipResult = $serviceManager->addIPToVirtualMac($serviceName, $macAddress, $newIP, 'eth0');
if ($ipResult) {
echo "✅ Virtual MAC mit IP {$newIP} erstellt\n";
} else {
echo "❌ Fehler beim Zuweisen der IP\n";
}
} else {
echo "❌ Fehler beim Erstellen der Virtual MAC\n";
}
} else {
echo "❌ Keine verfügbaren IPs im Pool\n";
}
?>
5. DNS-Bulk-Operationen
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== DNS-Bulk-Operationen ===\n\n";
// Domain
$domain = 'example.com';
// DNS-Records die erstellt werden sollen
$dnsRecords = [
[
'fieldType' => 'A',
'subDomain' => 'www',
'target' => '192.168.1.100',
'ttl' => 3600
],
[
'fieldType' => 'A',
'subDomain' => 'api',
'target' => '192.168.1.101',
'ttl' => 3600
],
[
'fieldType' => 'CNAME',
'subDomain' => 'mail',
'target' => 'mail.example.com',
'ttl' => 3600
],
[
'fieldType' => 'MX',
'subDomain' => '@',
'target' => 'mail.example.com',
'ttl' => 3600,
'priority' => 10
]
];
foreach ($dnsRecords as $record) {
echo "Erstelle DNS-Record: {$record['fieldType']} {$record['subDomain']} {$record['target']}\n";
$result = $serviceManager->OvhAPI('post', "/domain/zone/{$domain}/record", $record);
if ($result) {
echo "✅ DNS-Record erstellt\n";
} else {
echo "❌ Fehler beim Erstellen des DNS-Records\n";
}
echo "---\n";
}
echo "DNS-Bulk-Operationen abgeschlossen!\n";
?>
🔗 Nützliche Links
❗ Wichtige Hinweise
- API-Keys: Verwenden Sie sichere API-Keys und rotieren Sie diese regelmäßig
- Endpoints: Wählen Sie den richtigen Endpoint (eu, ca, us) für Ihre Region
- Rate Limiting: Beachten Sie die OVH API Rate Limits
- Virtual MAC: Virtual MAC-Adressen ermöglichen flexible IP-Zuweisung
- DNS: DNS-Änderungen können einige Zeit zur Verbreitung benötigen
- Sicherheit: Verwenden Sie HTTPS für alle API-Verbindungen