Debian / Ubuntu setzen die voreingestellte Spiegelvariable über den Early / Run-Befehl

7

Ich muss wissen, wie ich dies über di früh / Befehl oder di preseed / run zur Voreinstellung hinzufügen kann, um meinen Spiegel preseed.cfgaus dem /proc/cmdlineArgument heraus zu setzen.

Wenn ich mache:

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

es schlägt fehl.

Es funktioniert gut in der CentOS Kickstart- %preSektion, aber ich habe keine Ahnung, wie es über Debian / Ubuntu Preseeding gemacht werden soll.

Manga
quelle

Antworten:

6

Nach einigen Recherchen zu Debconf habe ich diese Lösung gefunden:

In Ihrer preseed.cfg rufen Sie das Skript auf über:

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

Inhalt von 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

funktioniert gut @ 12.04.2 LTS!

Manga
quelle
Sie können auch d-i preseed/early_commandanstelle von verwenden run.
Dragon788
Wo die runtatsächliche Ausführung zur Debatte steht, kann dies preseed/late_commandeinigen offenen Fehlern entsprechen. Wenn es also in 16.04 / 18.04 nicht richtig funktioniert, versuchen Sie es mit preseed/early_command.
Dragon788
0

Es hört sich so an, als würden Sie versuchen, während eines (PXE?) - Starts einen beliebigen Wert an den Kernel zu übergeben und ihn dann während des Voreinstellens zu erkennen und darauf zu reagieren. Ich denke, es gibt vielleicht bessere Möglichkeiten, dies zu erreichen, aber ich müsste mehr über Ihr spezifisches Szenario wissen. Das Cobbler-Projekt fällt mir allerdings ein.

Unabhängig davon kann eine andere Möglichkeit, dies zu erreichen, darin bestehen, ein bedingtes Include zu verwenden, das auf dem Hostnamen oder der Cmdline basiert und eine Konfigurationsdatei mit den entsprechenden Spiegeleinstellungen enthält, da Include-Dateien Werte aus früheren Dateien überschreiben.

# 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
dragon788
quelle