[API OVH] Reboot d’un VPS via un script PHP

OVH possède une API qui peut s’avérer très pratique pour automatiser des tâches du manager : https://api.ovh.com

J’ai choisi d’utiliser le PHP pour ces scripts car il est déjà installé sur mes machines, je n’ai donc pas besoin de supplément.

Premier test, lister mes VPS

Je commence gentils, je fais un script qui listera simplement les VPS disponible chez OVH.

Télécharger et décompressé la dernière version de « php-ovh » et ces dépendances : https://github.com/ovh/php-ovh/releases

Ensuite on crée un tocken via cette URL : https://api.ovh.com/createToken/?GET=/vps ou on ne va autoriser que le GET sur /vps.

On va obtenir la page suivante, il va falloir conserver Application Key, Application Secret & Consumer Key pour les mettre dans le script :

OVH api keys résulstatOn va pouvoir créer le script suivant (pensez à recopier vos Application Key, Application Secret & Consumer Key dans les variables) :

Lancement du script, voici le résultat :

vks00000.ip-XX-XX-XX.eu c’est le nom de mon VPS (pour l’exemple), ça fonctionne.

Les choses sérieuses :  un reboot

Même script avec action cette fois, pour tester le reboot d’un VPS via un script.

De nouveau la création d’API  avec l’url https://api.ovh.com/createToken/?POST=/vps/vks00000.ip-XX-XX-XX.eu/reboot. Ici on va autoriser le POST sur /vps/vks00000.ip-XX-XX-XX.eu/reboot.

Au lancement on obtient le numéro de la tâche :

Et ça fait bien redémarrer le VPS…

La finalité

De temps en temps mon VPS est inaccessible. C’est très variable (1 à 2 fois par mois environ) et je ne trouve pas la cause (OVH / système  / attaque ?). La seul solution pour le faire repartir c’est un reboot via le manager OVH. En attendant de trouver la cause (je ne désespère pas) j’ai mis en place ce script sur un serveur tiers afin de déclencher un reboot si le serveur est inaccessible.

En tâche planifiée :

 

2 thoughts on “[API OVH] Reboot d’un VPS via un script PHP”

  1. Bonjour,

    J’essaie d’executer ce script et dès le moment ou je liste mes instances VPS, j’ai le message d’erreur suivant :
    Fatal error: Uncaught exception ‘GuzzleHttp\Exception\RequestException’ with message ‘cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)’ in C:\ovhphp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:187 Stack trace: #0 C:\ovhphp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\ovhphp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\ovhphp\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #3 C:\ovhphp\vendor\guzzlehttp\guzzle\src\Handler\Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__inv in C:\ovhphp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 187

     

    De quoi cela pourrait il venir ?

    Merci pour ton aide et pour ce site bien fourni !

    1. Bonjour Julien,

      Aucune idée, visiblement tu es sous Windows (je te conseil de migrer vers un os libre 🙂 )
      Sans boutade, le lien vers curl.haxx donne plus sur l’erreur :

      CURLE_SSL_CACERT (60)
      Peer certificate cannot be authenticated with known CA certificates.

      Donc visiblement c’est le mode SSL qui n’arrive pas à trouver les certificats racine pour certifier que celui d’OVH est ok
      Dans mon moteur de recherche préféré : https://duckduckgo.com/?q=CURLE_SSL_CACERT+windows&ia=web

      Peut être un contournement ici : http://dominiquedecooman.com/blog/solution-curl-webservice-curlesslcacert-60-peer-certificate-cannot-be-authenticated-known-ca-ce

      J’en sais pas plus,

      Belle journée,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *