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,从系统发布到现在也有四年半了,其官方支持的生命周期也将止于明年春,且这在几年里出现了很多新的事物,我也需要跟 ...
随机推荐
- Node.js基础学习四之注册功能
前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...
- vue 引入iconfont字体库
1.登录官网 https://www.iconfont.cn/ 2.选择所需要的图标加入图库 新建项目 选择fontClass 并下载到本地 目录如下 3.项目 assets目录下 新建 ico ...
- kube-liveboard: kubernetes集群可视化工具
kube-liveboard 随着kubernetes 集群的增大,对于集群数据选取恰当的形式进行展示有助于直观反映集群的状态,方便发现集群的短板,了解集群的瓶颈.因此,笔者做了kube-livebo ...
- 前向传播算法(Forward propagation)与反向传播算法(Back propagation)
虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解.因此特意先对深度学习中的相关基础概念做一下总结.先看看前向传播算法(Forward propagation)与 ...
- zeros()和ones()和eye()
python--zeros函数和ones函数 使用numpy.zeros,numpy.ones,numpy.eye等方法可以构造特定的矩阵 >>>from numpy import ...
- Spring Boot 数据库连接池 HikariCP
简介 HikariCP 来源于日语,「光」的意思,意味着它很快!可靠的数据源,spring boot2.0 已经将 HikariCP 做为了默认的数据源链接池. 官网详细地说明了HikariCP所做的 ...
- 跨域获取后台日期-ASP
最近所有的计划都被打乱,生活节奏也有些控制不住,所以在自己还算清醒的时候,把之前一个小功能写下来,对其它人也有些帮助. 需求前景:需要用AJAX跨域获取后台服务器日期. 1.分析需求: 在这个需求中, ...
- springboot自定义starter
1,创建一个空工程 2,new一个Modules ---------------- maven (启动器) : springboottest-spring-boot-starter 3,new一个M ...
- [大数据面试题]hadoop核心知识点
* 面试答案为LZ所写,如需转载请注明出处,谢谢. * 这里不涉及HiveSQL和HBase操作的笔试题,这些东西另有总结. 1.MR意义. MR是一个用于处理大数据的分布式离线计算框架,它采用”分而 ...
- app在admin中显示成我们想要的中文名
在django的开发中,很多时候我们希望app在admin中显示成我们想要的中文名,而不是显示默认的app_label名称. 比如我们有一个blog应用,在我们的blog app目录下面,默认会生成一 ...