7 votes

Debian/Ubuntu définissent la variable miroir preseed via la commande early/run

J'ai besoin de savoir comment je peux ajouter ceci au présemis via d-i early/command ou d-i preseed/run pour placer mon miroir à l'intérieur. preseed.cfg de /proc/cmdline argument.

Si c'est le cas :

d-i preseed/run string ws/ubuntu.sh

#!/bin/sh
     for x in `cat /proc/cmdline`; do
             case $x in RPHOST*)
                     eval $x

                     d-i mirror/http/hostname string ${RPHOST}
                     d-i mirror/http/mirror string ${RPHOST}
                     d-i apt-setup/security_host string ${RPHOST}
                     ;;
             esac; 
done

il échoue.

Il fonctionne bien dans le kickstart de CentOS %pre mais je n'ai aucune idée de comment le faire via le preseeding debian/ubuntu.

7voto

manga Points 131

Après quelques recherches sur debconf, j'ai trouvé cette solution :

dans votre preseed.cfg vous appelez le script via :

d-i preseed/run string ws/ubuntu.sh    // subdir from preseed file location

contenu de ubuntu.sh :

#!/bin/sh
echo "Start ubuntu.sh runscript" >> /var/log/syslog
for x in `cat /proc/cmdline`; do
        case $x in RPHOST*)
                eval $x
                HOST=$RPHOST
                echo "d-i mirror/http/hostname string ${HOST}" > /tmp/mirror.cfg
                echo "d-i mirror/http/mirror string ${HOST}" >> /tmp/mirror.cfg
                echo "d-i apt-setup/security_host string ${HOST}" >> /tmp/mirror.cfg
                ;;
        esac;
done
// add´s values to /var/lib/cdebconf/question.dat
debconf-set-selections /tmp/mirror.cfg

fonctionne bien @ 12.04.2 LTS !

0voto

dragon788 Points 706

On dirait que vous essayez de passer une valeur arbitraire au noyau pendant un démarrage (PXE ?), puis de la détecter et d'y réagir pendant la présélection ? Je pense qu'il y a peut-être de meilleures façons d'y parvenir, mais je dois en savoir plus sur votre scénario spécifique. Le Projet Cobbler me vient à l'esprit.

Quoi qu'il en soit, une autre façon d'y parvenir pourrait être d'utiliser un include conditionnel basé sur le nom d'hôte ou la ligne de commande qui inclut un fichier de configuration avec les paramètres appropriés du miroir, car les fichiers include remplacent les valeurs de n'importe quel fichier antérieur.

# More flexibly, this runs a shell command and if it outputs the names of
# preconfiguration files, includes those files. 
#d-i preseed/include_command \
#      string if [ "`hostname`" = bob ]; then echo bob.cfg; fi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X