Linux

在 kickstart 中傳遞變數

  • April 5, 2015

我有一個在 %pre 部分中採用主機名的 kickstart 文件。我似乎無法弄清楚如何首先獲得兩個。如您所見,它將伺服器資訊發送到另一個設備,然後該設備基於另一個數據庫自定義伺服器。我需要弄清楚如何在 pre 中獲取主機名參數並將其發送到 post。

%pre
#!/bin/sh
exec < /dev/tty6 > /dev/tty6
chvt 6
clear
echo "################################"
echo "# Running Pre Configuration    #"
echo "################################"
echo -n "Give hostname: "
read hostname
hostname $hostname
echo $hostname > /home/hostname
echo $hostname > /mnt/sysimage/home/hostname
exec < /dev/tty1 > /dev/tty1
chvt 1

%packages
@base
@core

%post
exec < /dev/tty6 > /dev/tty6
chvt 6
ip0=`ifconfig eth0 |grep -e addr:10.0|cut -d':' -f2|awk '{print $1}'`;
ip1=`ifconfig eth1 |grep -e addr:10.0|cut -d':' -f2|awk '{print $1}'`;
mac0=`ifconfig eth0 |grep HWaddr|awk '{print $5}'`;
mac1=`ifconfig eth1 |grep HWaddr|awk '{print $5}'`;
os=`cat /home/hostname` ;
hostname=`cat /home/hostname`;
service sshd start
echo "$ip0^$mac0^$ip1^$mac1^$os^$hostname^none"  >/dev/tcp/10.0.0.1/999
exec < /dev/tty1 > /dev/tty1
chvt 1

在上面的“主機名 $hostname”確實適用於某些作業系統,但不是全部。我想根據 pre 中送出的資訊使其動態化,但沒有運氣。

製作一個 nochroot%post片段並將主機名移到那裡:

%post --nochroot 
echo $hostname > /mnt/sysimage/home/hostname

如果$hostname變數更改,則將$hostnamein回顯%pre到臨時位置,然後將文件移入%post --nochroot

這是因為%pre發生您安裝之前,而您還沒有/mnt/sysimage/home。這就是為什麼你想在安裝作業系統之後%pre發揮你的魔力,並且由於在 chroot 之外工作,並且%post在內部正常工作,你必須在 nochroot 中進行移動%post

引用自:https://serverfault.com/questions/608544