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.

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!


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.