Menu

#2281 Vpshere Datacollector et instance private cloud OVH

3.2.0
new
Xtophe38
None
Extension
Medium
2.6.0
enhancement
2025-01-27
2024-10-03
No

Bonjour,
Je souhaite faire fonctionner l'extension Vpshere datacollector d'ITOP pour un environnement OVH depuis un site distant. Sur le serveur ou se trouve l'extension j'arrive a intérrogé l'instance ovh via la commande curl -X GET '[URL du serveur Vsphere] -H 'vmware-api-session-id: [ID].
Est-ce qu'il existe dans les fichiers php ou du collecteur un paramètre ou je peux renseigner le "vmware-api-session-id" sans utiliser le login/mot de passe?
Cdt

Discussion

  • Mathieu Barret

    Mathieu Barret - 2024-10-03

    De plus je dois passer via un proxy d'entreprise et je ne vois pas de paramètres pour configurer un proxy. Est-ce qu'il faut que fasse une variable d'environnement pour curl ?

     
  • Xtophe38

    Xtophe38 - 2024-12-09

    Bonjour,
    A ce jour, le collecteur vSphere utilise la librairie vmwarephp de Vadim Comanescu pour se connecter à vSphere et récupérer les informations pertinentes pour iTop. La doc ne mentionne pas ce point et nous n'avons pas invetigué s'il était possible de l'utiliser dans votre contexte et si oui comment...

     
  • Xtophe38

    Xtophe38 - 2025-01-17
    • assigned_to: Xtophe38
     
  • Mathieu Barret

    Mathieu Barret - 2025-01-23

    Bonjour, petit retour d'expérience :

    Au préalable, je me connecte sur mon instance OVH pour obtenir le vmware-api-session-id.

    En curl via la commande suivante :
    curl -x "monproxy:8002" -X GET 'https://instance_ov/api/vcenter/vm?vms=id-vm' -H 'vmware-api-session-id: xxxxxx',
    --> ça fonctionne très bien

    En utilisant stream_context dans un script php avec en paramètre le proxy et le vmware-api-session-id dans le header :

    Array("method" => "GET", "timeout" => 20, "header" => "vmware-api-session-id: XXXXXXXXXXXXXXXXXX", "proxy" => "tcp://xxxxxxxxxxxxxxxx:8002", 'request_fulluri' => True /* without this option we get an HTTP error! */ ))); if ( $fp = fopen("https://xxxxxxx/api/vcenter/vm?vms=vm-154", 'r', false, $stream) ) { print "well done"; } ?>

    --> ça fonctionne bien aussi c'est ce qui est utiliser dans la libraire Vmwarephp.

    J'ai donc modifier le code la libairie Vmwarephp pour prendre en compte les paramètres de proxy et de header (fichier /Vmwarephp/Factory/SoapClient.php) :
    function make(\Vmwarephp\Vhost $vhost, $useExceptions = 1, $trace = 1) {
    //$context = stream_context_get_default();
    $stream_context = [
    'http' => [
    'proxy' => 'tcp://xxxxxxxxxxxxxxxxx:8002',
    'request_fulluri' => true,
    'header' => 'vmware-api-session-id: xxxxxxxxxxxxxxx'
    ],
    'ssl' => [
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true
    ]
    ]
    ;
    $options = array(
    'trace' => $trace,
    'location' => $this->makeRequestsLocation($vhost),
    'exceptions' => $useExceptions,
    'connection_timeout' => 10,
    'classmap' => $this->wsdlClassMapper->getClassMap(),
    'features' => SOAP_SINGLE_ELEMENT_ARRAYS + SOAP_USE_XSI_ARRAY_TYPE,
    //'stream_context' => $context,
    'stream_context' => stream_context_create($stream_context)
    );

    Et ensuite, j'ai fait un test avec un simple script PHP :

    register(); // Informations de connexion $host = 'xxxxxx.ovh.com'; $username = 'xxxx@xxx'; $password = 'xxx'; // Créer une instance de Vhost $vhost = new \Vmwarephp\Vhost($host, $username, $password); // Récupérer la liste des VM $vms = $vhost->findAllManagedObjects('VirtualMachine', 'all'); foreach ($vms as $vm) { echo "Nom de la VM: " . $vm->name . "\n"; echo "État de la VM: " . $vm->runtime->powerState . "\n"; echo "IP de la VM: " . $vm->guest->ipAddress . "\n"; echo "-------------------------\n"; } ?>

    --> ne fonctionne pas.

    J'en conclus que le problème ne vient pas du collecteur ITOP, mais de l'instance OVH qui bloque l'URL (/sdk?) que doit utiliser la libraire Vmwarephp.
    Je vais faire autrement, tant pis.

     
  • Xtophe38

    Xtophe38 - 2025-01-27

    Bonjour,

    Un grand merci pour ce retour ! Nous allons ajouter un mot à noter doc vSphere sur ce sujet.

     

Log in to post a comment.

MongoDB Logo MongoDB