Forum Linux.redhat Virtualbox, Kickstart & hostnamectl : hostname ne survit pas au reboot

Posté par . Licence CC by-sa
0
20
mar.
2015

Bonjour à tous,

J'essaie de me monter lab local avec Virtualbox et du centos 7:

  • Les VMs sont créées via VBoxManage
  • J'utilise le TFTP que propose VBox avec le réseau NATté
  • Un fichier Kickstart est proposé en NFS par une VM à ip fixe, les autres étant en DHCP (celui de VBox) sur un 2nd réseau interne

A la fin de la section %post (chrootée) de mon kickstart, j'essaie de configurer l'hostname en utilisant donc la commande hostnamectl:

# Set hostname given VBox properties
HOSTNAME=$(/usr/bin/VBoxControl --nologo guestproperty get hostname | awk '{print $2}')
hostnamectl set-hostname "$HOSTNAME"

Seulement voilà, après le premier reboot, la VMs est toujours en "localhost".

En ajoutant un echo "$HOSTNAME" >/etc/hostname plus de soucis, mais je serais curieux de savoir si quelqu'un à une idée sur la question.

  • # et avant le reboot

    Posté par . Évalué à 2.

    et avant le reboot, la VM prend bien le bon hostname ?

    les fichiers modifiés devraient etre :

    /etc/hostname
    /etc/hosts
    • [^] # Re: et avant le reboot

      Posté par . Évalué à 1.

      Je viens de faire le test en ajoutant

      hostname
      cat /etc/hostname
      cat /etc/hosts

      à la fin du kickstart.

      et le résultat est:

      + hostname
      neptune
      + cat /etc/hostname
      + cat /etc/hosts
      127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
      ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
      • [^] # Re: et avant le reboot

        Posté par . Évalué à 3.

        ben voila
        hostname-ctl doit definir une variable d'environnement et pas changer le contenu des fichiers

        du coup au demarrage suivant, ta machine se base sur les fichiers, et redeveient localhost

        et en cherchant vite fait sur le net, on trouve un piste ici
        http://forums.fedoraforum.org/showthread.php?t=285238

        qui consiste à parametrer le hostname dans une seule ligne avec les infos reseaux

        network --onboot yes --device p33p1 --noipv6 --nameserver 192.168.1.254 --hostname tower20.home

        • [^] # Re: et avant le reboot

          Posté par . Évalué à 0.

          Ouais, c'est pas très grave mais moi qui pensais ne plus avoir à utiliser des commandes de l'ère pre-systemd…

          Par contre vu que je récupère ma variable HOSTNAME via les guestproperty de VirtualBox, j'ai besoin de compiler les GuestAdditions dans la section %post et ensuite de configurer le nom d'hôte. Du coup, même si la commande que tu pointes est effectivement la solution à utiliser en pratique, dans ma situation ça ne convient pas.

          • [^] # Re: et avant le reboot

            Posté par . Évalué à 1.

            Je précise: idéalement il faudrait une solution qui me génère une fiche kickstart par VM à créer… Mais je ne suis pas parti pour le faire, vu que c'est juste pour moi.

  • # network --hostname ?

    Posté par (page perso) . Évalué à 2.

    /!\ Je n'ai pas testé directement ce que je propose, je me contente de le déduire de fichier Kickstart que j'utilise.

    Le hostname, tu peux le définir dans l'une des options de la directive network :

    network --bootproto=static --ip=1.2.3.4 […] --hostname=NOMSTATION_

    On peut imaginer dans le %pre de ton kickstart la partie suivante :

    MonSuperHostname=$(/usr/bin/VBoxControl --nologo guestproperty get hostname | awk '{print $2}')
    cat << EOF > /tmp/define
    network
    network --bootproto=static --ip=1.2.3.4 […] --hostname=$MonSuperHostname
    EOF

    Et dans tes directives au début de ton kickstart, en lieu et place de la ligne où tu définies ton réseau, la ligne :
    %include /tmp/definenetwork_

    J'utilise avec succès un principe similaire pour définir mes partitionnements.

    Mon inconnue dans l'histoire : tu dis utiliser VBoxControl dans le %post, je ne sais pas si ça fonctionne en %pre (je ne suis pas utilisateur de virtualbox).

    • [^] # Re: network --hostname ?

      Posté par . Évalué à 1.

      Je compile les "guest additions"(donc VBoxControl) dans la section %post après avoir récupéré les packages nécessaires (headers, gcc, make, etc..) donc ça me paraît compromis. Même si effectivement l'utilisation de la commande network de kickstart serait définitivement une solution.

      J'ai aussi testé de redémarrer le service systemd-hostnamed mais sans succès.

      En fait il semble que l'environnement chrooté soit le soucis (Setting Locale and Hostname on New Installation Fails). Mais si on en sort avec le --nochroot dans %post le contexte n'est plus le bon…

      Je vais voir si je peux pas fournir le binaire de VBoxControl pour l'utiliser dans la section %pre comme tu préconises

      • [^] # Re: network --hostname ?

        Posté par (page perso) . Évalué à 2.

        En relisant en diagonal, je me demande : et pourquoi ne pas tout simplement définir le hostname avec un HOSTNAME=CeQuiVaBien dans le fichier etc/sysconfig/network ?

Suivre le flux des commentaires

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