• [^] # Re: Pourquoi compliqué ?

    Posté par . En réponse au message iPXE: multiple fichiers de configuration ?. Évalué à 1. Dernière modification le 06 février 2023 à 19:44.

    Que cela soit le serveur web distant qui exécute un script dans un langage interprété et qui renvoi une chaîne de caractère qui correspond à l'équivalent d'un script iPXE: je l'ai compris.

    C'est en très gros le même principe que les pages web dynamique (au contraire des statiques).

    Par contre, ce que je ne comprends pas c'est comment est générée la requête Get ?
    Dans l'exemple de la documentation mentionne

    http://192.168.0.1/boot.php?mac=`{mathjax} {net0/mac}&asset=`{asset:uristring}

    which would expand to a URL such as

    http://192.168.0.1/boot.php?mac=52:54:00:12:34:56&asset=BKQ42M1

    Quel mécanisme permet de passer du mac=${net0/mac} à mac=52:54:00:12:34:56 ?

    Dans le cas des pages web dynamique, il me semble que c'est le rôle du javascript (ou autre « technologie front-end » pressente dans le navigateur) qui s'occupe de cela. Mais dans le cas d'un simple script ... je bloque!

    A la limite je comprendrais que la requête soit simplement GET http://192.168.0.1/boot.php et que cela soit le script côté serveur qui avec les librairies qui vont bien
    1) récupère l'adresse MAC de la machine qui à fait la demande
    2) Avec un select dans une base de données ou simplement avec if:

    mastersMacList=[<mac1>,<mac2>]
    workersMacList=[<mac3>,<mac3>]
     if argument1 in mastersMacList: #argument1 étant l'adresse mac récupéré avec "la lib qui va bien"
     print("#!ipxe 
     coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://192.168.0.1/master.ign
     ")
     elif argument1 in workersMacList:
     print("#!ipxe
     coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://192.168.0.1/worker.ign
     ")
     else:
     exit 0