PXEを使用してLinuxオペレーティングシステムをインストールしており、変数またはファイルを使用してプロセスを自動化したいと思います。他のファイルからIPアドレスを取得し、pxe ksnew.cfgファイルにパラメータとして追加する方法を知る必要があります。たとえば、次のnfsコマンドがあるとします。
nfs --server=10.0.0.110
ksnew.cfgファイルでこれを次に置き換えたいと思います。
nfs --server=$ip
別のファイルから$ ipを取得します(私はサーバーが多く、異なるIPを使用します)。
これを行う方法はありますか?私の問題を解決する他の方法はありますか?
ありがとう
答え1
私のキックスタートは少し錆びましたが、キックスタートで処理できるファイルを生成するいくつかのシェルスクリプトを含めることができるはずです。
次のコードスニペットを考えてみましょう。
%include /tmp/pre_network
firewall --disabled
%include /tmp/install_url
[ ... ]
%pre
#!/bin/sh
exec </dev/tty8 >/dev/tty8
chvt 8
#set the following vars with whatever logic applies in your case, ...
REMOTENFS=10.2.3.4
REMOTEPROXY=10.2.5.4
#//
echo "network --bootproto=dhcp --hostname=pxe.localdomain --noipv6" >/tmp/pre_network
if test "$REMOTENFS"; then
echo "nfs --server $REMOTENFS" >/tmp/pre_network
elif test "$REMOTEPROXY"; then
echo "url --url=http://mirror.centos.org/centos/7/os/x86_64/ --proxy=http://$REMOTE_PROXY:3128
else
echo "url --url=http://mirror.centos.org/centos/7/os/x86_64/
fi >/tmp/install_url
clear
chvt 1
%end
[ ... ]
最終的にファイルを編集して、ローカルIP、DHCPプッシュドメイン名、Webサービスなどを見つけ%pre
てnfsサーバーをリモートで推論することになります。curl
kickstartでsedコマンドを実行する方法を尋ねるので、インストールを完了するためのスクリプトを作成することもできます。
%post
#!/bin/sh
exec </dev/tty8 >/dev/tty8
chvt 8
sed -i 's|.*|myhostname|' /mnt/sysimage/etc/hostname
chvt 1
%end
答え2
sed -i "/nfs/s/=.*//g" ksnew.cfg file ;while read line; do sed "s/$/='$line'/g" ksnew.cfg file ; done <Inputfile_consists_of_ip's
ksnew.cfg ファイル ===> 構成ファイル
Inputfile_consists_of_ip's===> ファイルは IPS リストで構成されます。
Inputfile_consists_of_ip には次の内容が含まれています。
10.10.10.11
11.1.1.2
3.3.3.5
したがって、出力は次のようになります。
nfs --server==10.10.10.11
nfs --server==11.1.1.2
nfs --server==3.3.3.5