XenServer 自動化佈署 (關鍵詞: PXE ANSWER SCRIPT)

XenServer 6.x PXE自動化佈署:linux

測試環境:win10 + Tiny pxe server 1.0.2,採用gpxelinux.0bash

時間:2017.1.10dom

 

PXE遠程安裝:post

1)default文件:從光盤的/boot/isolinux下,取得isolinux.cfg文件,作爲default文件的藍本,而後,修改下面幾項測試

      。文件路徑:按照實際狀況修改ui

      。修改第一行default選項(默認是DEFAULT install),改成menu.c32,以即可以看到菜單,不然看不到。固然不改也不影響。url

      。若是要實現自動化佈署,須要在console後面,增長兩項:一項是腳本地址,另外一個是關鍵詞 install(若是漏了這個,安裝時,你會看到讀取到了http指定的腳本,可是就不自動執行)spa

      。有些第三方分支系統,可能要放棄gpt模式,也在這裏增長。root_size有些也須要由2G改成4G(改不改好象都是4G)unix

DEFAULT menu.c32
PROMPT 1
TIMEOUT 50
DISPLAY pg_main
F1 pg_main
F2 pg_help

LABEL install
    KERNEL /xen/boot/isolinux/mboot.c32
    APPEND /xen/boot/xen.gz dom0_max_vcpus=1-2 dom0_mem=752M,max:752M com1=115200,8n1 console=com1,vga --- /xen/boot/vmlinuz xencons=hvc console=hvc0 console=tty0 disable-gpt root_size=4096 answerfile=http://192.168.200.1/answerfile install --- /xen/install.img

 

2)啓動後,PXE CLIENT讀取default文件,就開始安裝,並讀取自動應答文件answerfile,功能與kisckstart同樣,但語法徹底不一樣。code

<?xml version="1.0"?>
<installation>
    <keymap>us</keymap>
    <primary-disk gueststorage="no">sda</primary-disk>
    <root-password>123456a?</root-password>
    <source    type="url">http://192.168.200.1/xen/</source>
    <script    stage="filesystem-populated" type="url">http://192.168.200.1/lx0.sh</script>
    <admin-interface name="eth0" proto="dhcp" />
    <timezone>Etc/UTC</timezone>
</installation>

還可能增長不少內容,能夠百度。這個腳本不能象esxi的ks文件同樣,具備pre-install, post-install, firtboot-install幾個階段寫在同一個文件中的功能。所以,須要分開寫。

系統安裝完成後,根系統已經安裝完成,開始啓動以前,執行一個腳本lx0.sh。這是一個標準LINUX腳本,至關於postInstall。網上能夠查到幾個階段的意義:filesystem-populated就是安裝完成後,第一次重啓前執行的。

看一下lx0.sh

#!/bin/sh
#lx.sh--> firstboot-script.sh
#hostlist: ip <---> name , host new name file, firstBootScript will change host name via the file.
#
# By Peter Hu
# 2017.1.10

touch $1/tmp/post-executed
rm -f $1/tmp/first-boot-script.sh
rm -f $1/tmp/hostlist

wget http://192.168.200.1/lx.sh -O $1/tmp/first-boot-script.sh
wget http://192.168.200.1/hostlist -O $1/tmp/hostlist
chmod 777 $1/tmp/first-boot-script.sh
ln -s /tmp/first-boot-script.sh  $1/etc/rc3.d/S99zzpostinstall

這個腳本執行時,目標系統其實被安裝完了,但尚未啓動,還處在虛擬根系統狀態。有些配置須要XEN真正啓動後才能執行。所以,這個腳本的目的,就是將XEN啓動後,須要執行的腳本下載下來,並讓其在機器重啓完成後能執行一次腳本。first-boot-script.sh就是機器啓動後要執行的腳本。(hostlist文件是供lx.sh使用的一個文件)

lx0.sh執行完成後,系統自動啓動,啓動成功後,會執行lx0.sh安裝的lx.sh文件,這個文件就是完成配置的工做。

#!/bin/bash
# 
# This script support inspurCloud 4.x,xenserver 6.x
#
# By Peter Hu, QQ 332694832
# 2017.1.10
#
# You should change following parameters:
# 1) MGMTDEV="eth0" ; your management NIC name 
# 2) It should read new hostname from file /tmp/hostlist
#---------------------------------------------------------

#Set ip address via DHCP
#----------------------------------------------
MGMTDEV="eth0"

MGMTUUID=$(xe pif-list device=$MGMTDEV --minimal)

IPADDR=$(xe pif-param-list uuid=$MGMTUUID | grep "IP ( RO)" | awk -F: '{print $2}' )
NETMASK=$(xe pif-param-list uuid=$MGMTUUID | grep "netmask ( RO)" | awk -F: '{print $2}')
GATEWAY=$(xe pif-param-list uuid=$MGMTUUID | grep "gateway ( RO)" | awk -F: '{print $2}')
IPADDR=$(echo $IPADDR | tr -d '\n')
NETMASK=$(echo $NETMASK | tr -d '\n')
GATEWAY=$(echo $GATEWAY | tr -d '\n')

xe pif-reconfigure-ip mode=static uuid=$MGMTUUID IP=$IPADDR netmask=$NETMASK gateway=$GATEWAY

#Change HOSTNAME
#----------------------------------------------
if [ -f "/tmp/hostlist" ]; then
   HOSTNEWNAME=$( cat /tmp/hostlist | grep $IPADDR | awk '{print $2}' | tr -d '\n')
   HOSTUUID=$(xe host-list --minimal)
   xe host-set-hostname-live host-uuid=$HOSTUUID host-name="$HOSTNEWNAME"
   xe host-param-set  uuid=$HOSTUUID name-label="$HOSTNEWNAME"
fi

#First boot script finished, remove it
#---------------------------------------------
rm -f /etc/rc3.d/S99zzpostinstall

這個腳本的功能是:讀取DHCP獲得的IP地址信息,並設成靜態。動態獲取的DNS不用管,靜態IP後自動轉成靜態。

而後,根據IP地直址,推導出主機名。

hostlist文件內容以下:

192.168.200.1    name1
192.168.200.2    name2
192.168.200.3    name3
192.168.200.144    name-144
192.168.200.244 name-244

以上文件,實驗時,除了default外,所有采用unix格式,好象utf-8或ansi均可以。

相關文章
相關標籤/搜索