Forum général.général [Virtualbox]: passer des commandes à la console via script.

Posté par  . Licence CC By‑SA.
Étiquettes :
2
1
jan.
2020

Hello,

Je tente de faire une installation automatique de centos sur une VM. J'utilise Virtualbox (pas trop le choix dans mon contexte).

J'ai fait mon install à la main, qui m'a généré un fichier kickstart. Ce que j'aimerais, c'est mettre ce fichier sur un repo git, le rendre dispo via http(s), et dire, lorsque l'installation démarre, d'aller chercher ce fichier de paramètres.

Je pars d'une iso minimale pour l'installation. Il est possible lorsqu'on démarre une installation de centos de lui préciser qu'il doit aller chercher le kickstart file sur le réseau, mais ça nécessite d'interagir avec la console de la VM au démarrage.

Connaissez-vous un moyen d'envoyer les commandes adéquates à la console via script ?

Sinon, auriez-vous une idée (autre que refaire l'ISO pour lui passer le chemin du kickstart en paramètre) ?

Merci d'avance.

  • # un début de piste mas ça ressemble à de l'artillerie lourde ....

    Posté par  . Évalué à 2.

    https://pypi.org/project/virtualbox/

    Je vais voir ce que je peux faire avec mais je suis preneur d'alternatives, parce que je ne suis pas sûr de pouvoir installer et faire fonctionner tout ça simplement sous Windows.

  • # J'ai trouvé !!!!

    Posté par  . Évalué à 7.

    On peut le faire avec deux commandes :

    VBoxManage controlvm keyboardputstring "hello" pour envoyer "hello" a la console

    VBoxManage controlvm test_sandbox_centos keyboardputscancode pour envoyer des codes clavier.

    L'aide de virtualbox indique aussi l'option keyboardputfile qui a l'air de prendre les entrées d'un fichier.

    Je vais voir comment me débrouiller avec ça, ça a l'air de répondre à mon besoin.

    • [^] # Re: J'ai trouvé !!!!

      Posté par  . Évalué à 3.

      Au top, merci pour le feedback :)

    • [^] # Re: J'ai trouvé !!!!

      Posté par  . Évalué à 4.

      Packer de HashiCorp propose une option boot_command pour le builder VirtualBox. Cela utilise sans aucun doute la commande VBoxManage que tu as trouvée, mais sans avoir à bricoler pour que ça marche.

      • [^] # Re: J'ai trouvé !!!!

        Posté par  . Évalué à 2.

        J'avais pensé à rechercher du côté de Vagrant, mais pas de packer …. Merci pour l'info. Dans un autre contexte ça me servira mais pas dans celui-ci, le but est pour moi de faire avec le moins d'outils tiers sur l'hôte.

    • [^] # Re: J'ai trouvé !!!!

      Posté par  . Évalué à 3. Dernière modification le 02 janvier 2020 à 12:04.

      En fait j'ai du faire une erreur de saisie (ou le markdown a interprété mon texte comme une balise)

      VBoxManage controlvm [ VM Name ] keyboardputstring "hello" pour envoyer "hello" a la console

      VBoxManage controlvm [ VM_NAME ]  keyboardputscancode pour envoyer des codes clavier.

      Je précise un point, concernant les codes clavier, il faut envoyer le code d'appui et de relachement pour que ça fonctionne (le code de relachement est le même que le code d'appui auquel on ajoute 0x80), ce qui donne par exemple pour simuler un appui de la touche enter (scancode 0x1c ), il faut faire :

      VBoxManage controlvm [ VM_NAME ] keyboardputscancode 1c 9c

      • [^] # Re: J'ai trouvé !!!!

        Posté par  . Évalué à 3.

        Autre chose que j'ai omis de préciser: pour la commande keyboardputstring, j'ai remarqué que lorsque j'envoie "salut" via script, à l'arrivée, je retrouve la chaine "sqlut" à l'écran: il faut donc envoyer les chaines comme si on avait un clavier qwerty: a devient donc q à la console, z devient w, q devient a, w devient z, etc …

  • # plus universel

    Posté par  . Évalué à 2.

    en plus universel, tu peux modifier l'image ISO pour aller prendre le fichier kickstart sur ton serveur…

    ainsi ton image ISO est valide dans VirtualBox (sous reserve d'avoir du réseau) mais aussi sur d'autres hyperviseur, et meme sur des machines réelles, trop cool non ?

    • [^] # Re: plus universel

      Posté par  . Évalué à 2. Dernière modification le 02 janvier 2020 à 13:25.

      en plus universel, tu peux modifier l'image ISO pour aller prendre le fichier kickstart sur ton serveur…

      Je pourrais aussi avboir une iso contenant le kickstart …

      Mais ma contrainte est justement de ne pas avoir à modifier l'iso. Je n'ai pas de serveur ou déposer l'ISO générée. Dans un contexte idéal, j'aurais utilisé PXE/Bootp/dhcp pour démarrer l'installation. Peut-être que si j'arrive à faire ce que je tente de faire, je pourrai obtenir de quoi déposer une iso minimale, mais pour le moment je peux pas.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.