XenServer 自动化布署 (关键词: PXE ANSWER SCRIPT)
XenServer 6.x PXE自动化布署:
测试环境:win10 + Tiny pxe server 1.0.2,采用gpxelinux.0
时间:2017.1.10
PXE远程安装:
1)default文件:从光盘的/boot/isolinux下,取得isolinux.cfg文件,做为default文件的蓝本,然后,修改下面几项
。文件路径:按照实际情况修改
。修改第一行default选项(默认是DEFAULT install),改为menu.c32,以便可以看到菜单,否则看不到。当然不改也不影响。
。如果要实现自动化布署,需要在console后面,增加两项:一项是脚本地址,另一个是关键词 install(如果漏了这个,安装时,你会看到读取到了http指定的脚本,但是就不自动执行)
。有些第三方分支系统,可能要放弃gpt模式,也在这里增加。root_size有些也需要由2G改为4G(改不改好象都是4G)
DEFAULT menu.c32
PROMPT
TIMEOUT
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=- dom0_mem=752M,max:752M com1=,8n1 console=com1,vga --- /xen/boot/vmlinuz xencons=hvc console=hvc0 console=tty0 disable-gpt root_size= answerfile=http://192.168.200.1/answerfile install --- /xen/install.img
2)启动后,PXE CLIENT读取default文件,就开始安装,并读取自动应答文件answerfile,功能与kisckstart一样,但语法完全不同。
<?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. touch $/tmp/post-executed
rm -f $/tmp/first-boot-script.sh
rm -f $/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 $/tmp/first-boot-script.sh
ln -s /tmp/first-boot-script.sh $/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 .x,xenserver .x
#
# By Peter Hu, QQ
# 2017.1.
#
# You should change following parameters:
# ) MGMTDEV="eth0" ; your management NIC name
# ) 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-
192.168.200.244 name-
以上文件,实验时,除了default外,全部采用unix格式,好象utf-8或ansi都可以。
XenServer 自动化布署 (关键词: PXE ANSWER SCRIPT)的更多相关文章
- Dokuwiki布署小记
最近个人写作风格全面转向Markdown模式,但之前使用的Mediawiki并未原生支持,且本人在布署时为了实现其所见即所得的方案和别的一些个性化需求,添加了太多插件和自定义设置,两年多过去了,很多设 ...
- 通过Jenkins在IIS上布署站点
当需要在多台服务器的IIS上布署站点时,如果纯粹靠人工手动完成此任务的话,过于低效,而借助Jenkins之类的自动化工具,则可以极大提升工作效率. 以下便是Jenkins Pipeline所使用的脚本 ...
- openstack私有云布署实践【9.3 主从controller单向同步glance-image目录】
采用Rysnc单向同步,而不用双方实时同步,原因是在历史的运行过程中,我们发现,有些镜像包太大,当在主用的glance将镜像保存时,并不是一时半会就把镜像保存好,当主用在保存时,备用节点又在实时同步那 ...
- 布署配置管理中心apollo
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景. 服 ...
- Ubuntu16.04下KeepAlived+Nginx 布署
前言 网上已经有很多相关文章,对各种概念介绍的比较清楚,也有各种详细的步骤,这里主要记录本要在ubuntu16.04下的布署过程,主要记录编译安装keepalived时遇到的坑及解决办 ...
- 第一篇【Zabbix服务端的完整布署】
1.环境准备 服务器版本: [root@filestore-v2 ~]# cat /etc/redhat-release CentOS Linux release (Core) 内核版本: [root ...
- 第二篇【Zabbix客户端的完整布署】
关于Zabbix服务端布署请查看 1.上传zabbix安装包(源码包默认(Server和Agent是一起的)) [root@sms-v2 ~]# ll /root/ -rw-r--r-- root r ...
- Ubuntu 16.04环境布署小记
本系列文章记录了升级Ubuntu 16.04的布署过程 回到目录 10. 安装Mono, Xsp 当前版本16.04.1的系统源的Mono版本为4.2.1,如需使用最新版本(本文书写时稳定版本为4.6 ...
- Ubuntu 16.04系统布署小记
前段时间趁着双11打折,又将阿里云主机续费了3年.之前布署的系统是Ubuntu 12.04,从系统发布到现在也有四年半了,其官方支持的生命周期也将止于明年春,且这在几年里出现了很多新的事物,我也需要跟 ...
随机推荐
- linux awk用法
awk是一个强大的文本分析工具,在对数据进行分析并生成报告时显得尤为强大. 使用方法:awk [options] 'BEGIN{ commands } pattern{ commands } END ...
- Derivative of Softmax Loss Function
Derivative of Softmax Loss Function A softmax classifier: \[ p_j = \frac{\exp{o_j}}{\sum_{k}\exp{o_k ...
- js三种弹出框的用法
https://blog.csdn.net/cui_angel/article/details/7784211 js中prompt()的用法
- 彻底清除 Windows 服务
如果服务已经停止, 或从注册表中删除, 但是在任务管理器中仍能看到服务躺在列表里面. 只需要找到服务的PID, 然后运行命令: taskkill /PID 服务的PID /f 即可.
- jenkins 配置
配置: echo " aliyun.oss.access.key=LTAIz4Koeff8sCr8 " > ./src/main/resources/oss.dev.prop ...
- .Net dependent configuration
error info: 解决方案:在.exe.config文件中配置Newtonsoft.Json所用版本 <runtime> <assemblyBinding xmlns=&quo ...
- dao层、service和action的运用和区别
DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,对于数据库的操作,具体到对于某个表的增删改查, 也就是说某个DAO一定是和数据库的某一张表一一对应的 ...
- vue-router 中踏过的坑
1.做完页面滚动,然后再加上路由,发现路由一直跳转不了,经历千辛万苦才发现是BScroll没有配置click:true,当看过文档时心里一万只草泥马奔腾而过,我预感到成长道路上还有多少坑在等着我. 2 ...
- Python入门(一)数据类型、循环语句
脚本语言类型: 1.编译型语言:写完代码不能执行,需要先编译 eg:c.c++.c# 2.解释性语言:不需要编译 直接执行 eg:python.jav ...
- 使用js写简易的倒计时
步骤 1.获取span标签2.获取现在的时间戳 3.获取未来的时间戳 4.将未来时间戳减去现在的时间戳等于相差的秒数 5.输出到页面 直接上代码 <span name="os" ...