Seite 1 von 1

ESXi 7.0 U2 - Kickstart Semi-Automatische Installation mit VM-Deploy

Verfasst: 03.05.2021, 10:07
von Rentos
Hallo zusammen,

ich arbeite aktuell an einer Semi-Automatischen ESXi-Installation mittels Kickstarter-File. Es handelt sich hierbei um einen Host, welcher von der Außenwelt komplett abgeschottet ist.

Nun habe ich aktuell zwei "Herausvorderungen"...

Thema 1:
Ich scheitere gerade daran, gespeicherte OVA-Templates und andere Dateien im %post vom Installationsmedium (aktuell über iLO-DVD, soll aber in Zukunft aufgrund der Größe über USB installiert werden) auf den lokalen Datastore zu kopieren. :roll:

Ich habe mal in einer der zich Foren gelesen, dass während der Installationsphase das Installationsmedium unter "/vmfs/volumes/CDROM/" gemountet wird. Deshalbsieht mein Code aktuell so aus.

Code: Alles auswählen

%post --interpreter=busybox

# Create folders for later configurations
mkdir /vmfs/volumes/datastore1/TEMPLATES/
mkdir /vmfs/volumes/datastore1/OVFTOOL/
mkdir /vmfs/volumes/datastore1/CONFIG/

# Copy OVA-Templates and OVFTOOL to local Datastore
cp -R /vmfs/volumes/CDROM/TEMPLATES/* /vmfs/volumes/datastore1/TEMPLATES/
cp -R /vmfs/volumes/CDROM/OVFTOOL/* /vmfs/volumes/datastore1/OVFTOOL/


Leider funktioniert das aber so nicht. Leider habe ich aber hier keine Ahnung wie ich hier vorgehen soll :(


Thema 2:
Um die VMs nicht auf dem Datastore zu installieren auf dem der ESXi läuft, gibt es noch einen separaten lokalen Storage der während der ESXi-Installation ebenfalls automatisch erstellt werden soll.

Um das möglichst "variable" zu handhaben, arbeite ich mit diversen Parametern und lasse für die Partition auch den Endsector der Disk auslesen um die maximale Kapazität nutzen zu können.

Hier der Code (läuft im %firstboot --interpreter=busybox):

Code: Alles auswählen

#Set Variables for Disk-Information
ADAPTER="vmhba0"
CANAL="C0"
TARGET="T1"
LUN="L0"
PARTITION="1"
STARTSECTOR"2048"
PARTGUID="AA31E02A400F11DB9590000C2911D1B8" # VMFS Datastore Partition GUID
ATTRIBUTE="0"

# Set Partition small Table with GPT
partedUtil setptbl "/vmfs/devices/disks/mpx.${ADAPTER}:${CANAL}:${TARGET}:${LUN}" gpt

# Get usable disk sectors from disk and save it to variable $ENDSECTOR
partedUtil getUsableSectors "/vmfs/devices/disks/mpx.${ADAPTER}:${CANAL}:${TARGET}:${LUN}" > TMP_SECTOR_01
awk '{print $2}' ${TMP_SECTOR_01} > TMP_SECTOR_02
LC_ALL=C sed 's/[^[:digit:]]//g' ${TMP_SECTOR_02} > ENDSECTOR

# Create partition on vmhba0 C0:T1:L0 (Second disk (T1) on controller vmhba0) with maximum partition size
partedUtil setptbl "/vmfs/devices/disks/mpx.${ADAPTER}:${CANAL}:${TARGET}:${LUN}" gpt "${PARTITION} ${STARTSECTOR} ${ENDSECTOR} ${PARTGUID} ${ATTRIBUTE}"

# Create datastore on prior created partition
vmkfstools -C vmfs6 -b 1m -S "VM-Datastore" "/vmfs/devices/disks/mpx.${ADAPTER}:${CANAL}:${TARGET}:${LUN}:${PARTITION}"


Ich komme hier so weit, dass ich den Endsector in eine Variable (auch bereits mit extra .txt-Datei getestet) auszulesen. Leider scheint er aber mit der ausgelesenen Variable keine Partition erstellen zu können.

Ich habe mir die Variable mal mit cat -A auslesen lassen und habe bemerkt, dass ab dem Zeitpunkt wo ich den Output des "getUsableSectors" in die Variable "TMP_SECTOR_01" gepackt habe am Ende des Wertes ein "$" stehen habe und er mir eine Newline scheinbar reinhaut...Ich vermute hier liegt der Hund begraben. Allerdings habe ich hier auch keine Ahnung wie ich das beheben soll :?

Ich hoffe mir kann jemand bei meinen zwei Problemen helfen

Beste Grüße
Rentos

Re: ESXi 7.0 U2 - Kickstart Semi-Automatische Installation mit VM-Deploy

Verfasst: 03.05.2021, 13:38
von ~thc
Bei der CD würde ich davon ausgehen, dass sie währen des Post-Installation-Skripts bereits ausgehängt ist.
Hier wirst du fündig: https://www.techcrumble.net/2017/05/how-to-mount-the-host-cd-rom-to-the-esxi-shell/
Nachteil: Die CD muss ein ISO9660-Namespace haben - kein UDF.

Bei der Variable leitest du mit ">" Ausgaben in Variablen um. Diese Umleitungen sind eigentlich für Dateien gedacht - daher vermutlich das EOF. Korrekt wäre etwas in der Form

Code: Alles auswählen

VARIABLE='command /option parameter'

Allerdings unterscheiden sich in der genauen Syntax die Shells - wie es unter der ESXi-busybox sein muss, kann ich nicht sagen.

Re: ESXi 7.0 U2 - Kickstart Semi-Automatische Installation mit VM-Deploy

Verfasst: 04.05.2021, 09:21
von Rentos
Danke für die Antwort,

das habe ich mehr oder minder auch schon befürchtet. Muss mir den Artikel mal genauer anschauen und dann irgendwie noch herausfinden wie ich das möglichst automatisiert wieder mounte etc.. ISO9660 sollte die ISO bereits haben. Muss ich noch mal schauen.

Zwecks variable hat das mit deinem Vorschlag leider nicht hingehauen. Ich lass mir aber mal die Logs, welche während der Installation sind mal auslesen und schau ob ich etwas finde woran es hängt.. :roll:

Re: ESXi 7.0 U2 - Kickstart Semi-Automatische Installation mit VM-Deploy

Verfasst: 04.05.2021, 10:39
von ~thc
Rentos hat geschrieben:Zwecks variable hat das mit deinem Vorschlag leider nicht hingehauen.

Ich hatte extra geschrieben "Etwas in dieser Form" - nicht genau so. Das war nicht als Copy-'n-Paste gedacht!

Re: ESXi 7.0 U2 - Kickstart Semi-Automatische Installation mit VM-Deploy

Verfasst: 11.05.2021, 15:57
von Rentos
Mit folgendem Code funktioniert nun die Laufwerkserstellung 8)

Code: Alles auswählen

#Set Variables for Disk-Information
ADAPTER="vmhba0"
CANAL="C0"
TARGET="T1"
LUN="L0"
PARTITION="1"
STARTSECTOR="2048"
PARTGUID="AA31E02A400F11DB9590000C2911D1B8" # VMFS Datastore Partition GUID; Do not change!
ATTRIBUTE="0"

# Set Partition Table with GPT
partedUtil setptbl "/vmfs/devices/disks/mpx.${ADAPTER}:${CANAL}:${TARGET}:${LUN}" gpt

# Get usable disk sectors from disk and save it to variable $ENDSECTOR
ENDSECTOR=$(partedUtil getUsableSectors "/vmfs/devices/disks/mpx.${ADAPTER}:${CANAL}:${TARGET}:${LUN}" | cut -d ' ' -f2)

# Create partition on vmhba0 C0:T1:L0 (Second disk (T1) on controller vmhba0) with maximum partition size
partedUtil setptbl "/vmfs/devices/disks/mpx.${ADAPTER}:${CANAL}:${TARGET}:${LUN}" gpt "${PARTITION} ${STARTSECTOR} ${ENDSECTOR} ${PARTGUID} ${ATTRIBUTE}"

# Create datastore on prior created partition
vmkfstools -C vmfs6 -b 1m -S "VM-Datastore" "/vmfs/devices/disks/mpx.${ADAPTER}:${CANAL}:${TARGET}:${LUN}:${PARTITION}"


Leider habe ich bis jetzt noch keine Praktikable Lösung gefunden wie ich die daten möglichst automatisiert vom USB-Stick auf den lokalen Datastore bekomme. Im Endeffekt soll das ganze eine "Plug-And-Play" Lösung werden ohne noch an diversen Stellen anfassen zu müssen.