PXE+kickstart自动化部署安装Linux
实验环境:
Host : centos7.2(kvm) with gnome (192.168.64.3)
Guest : centos7.2 minimal (待安装....)
Server : centos7.9(提供 ks, 镜像, pxe启动程序等等) (192.168.64.4)
安装方式:
在Host主机里使用virt-manager & virt-install 两种方式安装centos7.2minimal
PART1 kickstart文件制作
参见教程
ks文件制作完成后 上传到web服务器(192.168.64.4)可以访问的目录中
PART2 使用virt-manager新建空白虚拟机
Host主机cpu要支持虚拟化, 并且安装桌面环境和virtualization环境
Gnome : yum group install "GNOME Desktop"
vortualization : yum install virt-install libvirt-python virt-manager virt-install libvirt-client
关于virtualization的详细文档
-
打开virt-manager
image.png -
file--->new virtual machine--->PXE(NetWork Boot)----->Forward
image.png -
type 根据自己的实际情况
image.png
-
RAM 1024 CPU 1 根据实际情况
image.png -
disk 20GB 根据实际情况
image.png -
network
这里是重点
看下我们的环境:
Server : 提供自动化部署所需要的程序,镜像,启动文件等等,
Host : kvm
我们的虚拟机通过PXE安装在Host的kvm里, 所以,我们要确保Guest可以从Server的DHCP获得有效地址.
所以,这一步的网络我们要选择 Host 的 eth0 模式 private
image.png
配置完成不着急打开我们的虚拟机,接下来配置我们的Server
关于PXE原理之类的这里暂时不提, 后续有时间接着更新
PART3Server端配置 :
服务端采用 DHCP + TFTP + NGINX 的方式提供自动化部署Linux的所需要的程序,文件....
** 下面的配置都是在 Server (192.168.64.4)上进行的 **
关闭SELinux & Firewall
注意, SELinux 一定要 disable, setenforce=0
也不行
vim /etc/selinux/config
SELINUX=enforcing
-----> SELINUX=disabled
systemctl disable firewalld
system stop firewalld
- DHCP
yum install dhcpd
vim /etc/dhcp/dhcpd.conf
文件配置如下:
subnet 192.168.64.0 netmask 255.255.255.0 {
range 192.168.64.10 192.168.64.20;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.64.4;
filename "/pxelinux.0";
}
systemctl enable dhcpd
systemctl start dhcpd
如果有报错
tail /var/log/message
查看日志
- TFTP
yum install tftp-server
vim /etc/xinetd.d/tftp
配置如下:disable yes
------>disable no
image.png
system enable tftpd
system start tftpd
- NGINX (提供web服务, httpd也可以, 不推荐python)
yum install nginx
yum enable nginx
yum start nginx
如果没有packageyum install epel-release
--->yum update && yum install nginx
文件配置 : 加上 autoindex on
不然会有 403错误
将准备好的Linux 镜像文件放到nginx提供web服务的根目录下
只要能通过web访问就行了
我的位置是: /usr/share/nginx/html/centos
upload your 镜像文件
mount -o loop /镜像目录 /挂载点
cp -r /挂载点/* /usr/share/nginx/html/centos
- PXE 配置
yum install syslinux
cp -a /usr/share/nginx/html/centos/centos7.2/isolinux/* /var/lib/tftpboot/
这里是将镜像文件里isolinux目录下的左右文件复制到 tftp的根目录(/var/lib/tftpboot)下
mkdir -p /var/lib/tftpboot/pxelinux.cfg
创建 pxelinux.cfg目录
启动文件配置: pxelinux.cfg
目录下面创建default
文件
vim /var/lib/tftpboot/pxelinux.cfg/default
文件配置如下:
default ks
prompt 0
label ks
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.64.4/centos/ks.cfg-minimal
-------------------------------------server 配置结束---------------------------------------
启动虚拟机 :
看到画圈的两部分基本上就成功了!!!
image.png通过virt-manager安装,发现还是比较繁琐,,下面通过virt-install安装,我们只需要一行命令就行了.
virt-install详细文档
[root@localhost ~]# virt-install \
> --name centos \
> --memory 1024 \
> --vcpus 1 \
> --disk size=8 \
> --network type=dirtct,source=eth0 \
> --pxe