OS7.9部署CloudBoot的PXE自动化装机环境

技术问题

OS7.9部署CloudBoot的PXE自动化装机环境

2024-09-12 09:43


OS7.9部署CloudBoot的PXE自动化装机环境

                                            




CentOS7.9最小化安装即可(IP设置为192.168.137.254/24)
关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
查看防火墙状态:
firewall-cmd --state
显示not running为未启动
(如果是centos6.x关闭防火墙为:service iptables stop && chkconfig iptables off)
永久关闭selinux(需重启生效)
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
或直接命令
sed -i.bak '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
说明:
/etc/sysconfig/selinux是指向原文件/etc/selinux/config的一个软连接文件,
修改/etc/sysconfig/selinux会破坏连接关系使其变成普通的文件不再是系统认为的selinux的配置文件
建议修改/etc/selinux/config即可
重启服务器后生效

安装方法
参考教材https://idcos.github.io/osinstall-doc/
下载一键安装包
http://www.idcos.com/opensource/cloudboot-open-source
执行安装命令
如果系统上有多个 IP,安装的时候请指定用哪个IP地址来提供装机服务(不准确会影响设备上报):
IP=192.168.137.254 rpm -ivh /root/cloudboot-1.5.1-1.x86_64.rpm
(没有多个IP时为rpm -ivh /root/cloudboot-1.5.1-1.x86_64.rpm)

启动CloudBoot系统
service cloudboot start
这时dhcpd启动可能会报错,这是因为没在web中设置DHCP起始IP和结束IP等信息的原因

通过浏览器访问本机IP即可(推荐使用最新的 Chrome 浏览器,用户名/密码都是 admin)
设置DHCP起始IP192.168.137.1、结束IP192.168.137.253、网关192.168.137.254
如果提交还是报错,就要修改dhcpd.conf文件中的相关配置信息
修改admin密码
修改DHCP配置信息:
vi /opt/cloudboot/etc/dhcp/dhcpd.conf

subnet  netmask  {
修改为
subnet 192.168.137.0 netmask 255.255.255.0 {

设置dhcpd.conf说明:
next-server 192.168.137.254;
option domain-name "192.168.137.254";
option domain-name-servers 192.168.137.254;
option root-path "192.168.137.254:/";
subnet 192.168.137.0 netmask 255.255.255.0 {
    range 192.168.137.1 192.168.137.253;
    option routers 192.168.137.254;
subnet这个是设置ip网段、netmas的子网掩码、range自动分配的ip地址段,option routers为网关
192.168.137.254为cloudboot服务器网卡本身存在的一个IP,我们这里服务IP、DHCP网关、DNS的IP都用192.168.137.254
重启所有服务
service cloudboot restart
这时dhcpd能正常启动了

导入ISO系统安装介质到对应目录(以centos 7.9为例)
上传iso文件到/opt
mount -o loop /opt/CentOS7.9.2207-02Minimal.iso /media
mkdir -p /opt/cloudboot/home/www/centos/7.9/os/x86_64/
rsync -av /media/ /opt/cloudboot/home/www/centos/7.9/os/x86_64/
umount /media
如果是通过虚拟光驱挂载ISO到系统:
先用lsblk命令
看到sr0为rom光驱,并未挂载到任何目录,无法访问光驱中内容:
sr0  11:0 1  988M  0 rom
挂载光驱:
mount /dev/cdrom /media  //或mount /dev/sr0 /media
mkdir -p /opt/cloudboot/home/www/centos/7.9/os/x86_64/
yum -y install rsync //安装rsync命令
rsync -av /media/ /opt/cloudboot/home/www/centos/7.9/os/x86_64/
umount /media //导入后取消挂载
eject //弹出光驱

Web后台设置“应用网段(分配给客户服务器的公网地址)”和“管理网段(客户服务器的IPMI网段)”
修改模板PXE和系统模板
系统模板中的root用户密码rootpw --iscrypted的值用grub-crypt --sha-512命令在Centos6中加密
$6$wYINMKm3ewc7oPb6$UFRyg.zhJ3zHTr19q8DjW6Nx3afjpLfvgOMhaFnp5RhYEWaRYbNJt0xhKog2gXMuzI0rD0MwbJI6bgS7I1Zan0
为qq16764407加密后的数字
修改/opt/cloudboot/home/www/scripts中的三个文件,比如调整分区
另外/opt/cloudboot/home/www/scripts/scripts/centos.sh中缺少GATEWAY=$GATEWAY和DNS1=8.8.4.4要补上

导入Windows Server 2012 R2简体中文版镜像文件:
mount -o loop WIN2012R2_vl_with_update_x64_dvd_4051059.iso /media
rsync -av /media/ /opt/cloudboot/home/samba/windows/2012r2/
umount /media
如果是通过虚拟光驱挂载ISO到系统:
先用lsblk命令
看到sr0为rom光驱,并未挂载到任何目录,无法访问光驱中内容:
sr0  11:0   1  4.4G 0 rom
挂载光驱:
mount /dev/cdrom /media  //或mount /dev/sr0 /media
mkdir -p /opt/cloudboot/home/samba/windows/2012r2/  //该文件夹已经存在不需要操作
yum -y install rsync //安装rsync命令,已经安这里就不需要再安装
rsync -av /media/ /opt/cloudboot/home/samba/windows/2012r2/
umount /media //导入后取消挂载
eject //弹出光驱


一键部署涉及到的配置文件如下,如有需求可以自行修改
/opt/cloudboot/etc/cloudboot-server/cloudboot-server.conf
/opt/cloudboot/etc/dhcp/dhcpd.conf //修改DHCP的配置
/opt/cloudboot/etc/dnsmasq.conf
/opt/cloudboot/etc/dnsmasq.d/hosts.conf
/opt/cloudboot/etc/nginx/conf.d/default.conf
/opt/cloudboot/etc/nginx/nginx.conf
/opt/cloudboot/etc/resolv.conf
/opt/cloudboot/etc/samba/smb.conf
/opt/cloudboot/etc/xinetd.d/tftp
/opt/cloudboot/var/lib/tftpboot/pxelinux.cfg/default
/opt/cloudboot/usr/yunji/cloud-act2/etc/cloud-act2-proxy.yaml
/opt/cloudboot/usr/yunji/cloud-act2/etc/cloud-act2.yaml

一键部署服务管理,使用service命令可以批量启停单个或者全部服务
service cloudboot [dhcpd|dnsmasq|xinetd|nginx|smb|mysqld|cloudboot-server|act2-master|act2-proxy] {start|stop|restart|reload|condrestart|status}
例如,关闭dhcp服务
service cloudboot dhcpd stop
例如,重启所有服务
service cloudboot restart



DHCP的网段在系统网卡文件上必须有一个IP地址,如果第一项dhcpd没运行起来,
需要检查一下cloudboot目录下的dhcp配置文件是否有配置IP段和掩码,
以及系统上是否有该网段的IP地址
/opt/cloudboot/etc/dhcp/dhcpd.conf完整的参考:
allow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 120;
max-lease-time 600;
authoritative;
next-server 192.168.137.254;
option domain-name "192.168.137.254";
option domain-name-servers 192.168.137.254;
option root-path "192.168.137.254:/";
option arch code 93 = unsigned integer 16;

if option arch = 00:07 {
    filename "pxelinux.efi";
} else {
    filename "pxelinux.bios";
}

subnet 192.168.137.0 netmask 255.255.255.0 {
    range 192.168.137.1 192.168.137.253;
    option routers 192.168.137.1;
}
说明:服务器的IP必须要配置一个192.168.137.254的IP才行,否则dhcpd运行不起来



管理网站软件位置/opt/cloudboot/home/www/
修改:/opt/cloudboot/home/www/scripts中的三个文件
系统模板中的root用户密码rootpw --iscrypted的值用grub-crypt --sha-512命令在Centos6中加密
$6$wYINMKm3ewc7oPb6$UFRyg.zhJ3zHTr19q8DjW6Nx3afjpLfvgOMhaFnp5RhYEWaRYbNJt0xhKog2gXMuzI0rD0MwbJI6bgS7I1Zan0
为qq16764407加密后的数字

修改bootos地址:
/opt/cloudboot/var/lib/tftpboot/pxelinux.cfg/default
将osinstall.idcos.com替换为你的地址192.168.137.254
可以在最后POST=http://192.168.137.254/post.py
可以通过调用POST接口执行一些个性化的配置,例如个性化Raid配置,采集更多的系统信息等
/opt/cloudboot/home/www/pre.sh文件里面的osinstall需要修改成192.168.137.254
/opt/cloudboot/var/lib/tftpboot/pxelinux.cfg/default完整的参考:
DEFAULT bootos
PROMPT 0
TIMEOUT 30

LABEL bootos
  MENU LABEL ^BootOS
  MENU DEFAULT
  KERNEL http://192.168.137.254/bootos/bootos.img audit=0 selinux=0 biosdevname=0 net.ifnames=0 rd.retry=1 SERVER_ADDR=http://192.168.137.254DEVELOPER=1 PRE=http://192.168.137.254/pre.sh
  IPAPPEND 2

如果是虚拟机环境启动的话,有可能系统进入bootos之后不会上报系统,需要手动执行
curl http://192.168.137.254/bootos/cloudboot-agent -o agent
chmod 755 agent
./agent
之后就可以在服务端看到状态了,如果还是不行或者报错,
查看cat /proc/cmdline看里面的SERVER_ADDR的值
是在dhcp配置的时候设置的,需要修改成为服务端地址192.168.137.254

allow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 120;
max-lease-time 600;
authoritative;
next-server 192.168.245.180;
filename "undionly.kkpxe";
option domain-name "192.168.245.180";
option domain-name-servers 192.168.245.1;
option root-path "192.168.245.180:/";
 
subnet 192.168.245.0 netmask 255.255.255.0 {
    range 192.168.245.101 192.168.245.200;
    option routers 192.168.245.1;
}
 
EOF

cloudboot中的bootos.img修改:
mkdir bootos
cd bootos
yum -y install wget
wget -O - http://192.168.137.154/bootos/bootos.img | xz -d | cpio -id
cd ../

mv /opt/cloudboot/home/www/bootos/bootos.img /bootos
cd /bootos
cpio -id </opt/cloudboot/home/www/bootos/bootos.img
xz -d bootos.img
cpio -ivmd < bootos.img
mount /opt/cloudboot/home/www/bootos/bootos.img /bootos
umount -v /bootos


label :
  • OS7.9部署CloudBoot的PXE自动化装机环境