Centos 7 PXE安装、cobbler使用

环境:

虚拟软件:vmware workstation 14 pro
服务器虚拟机A:
	系统:Centos7.3
	IP:192.168.181.10
	网络模式:仅主机
	软件:dhcp-4.2.5
		 tftp-5.2
		 httpd-2.4.6
		 本机系统安装光盘
		 syslinux-4.05
		 system-config-kickstart-2.9.7
客户端虚拟机B:
	新建虚拟机,等待pxe安装系统
	网络模式:仅主机

部署:

服务器端:
1、关闭防火墙或放行相关端口,关闭SElinux:
	# systemctl stop firewalld
	# setenforce 0
2、安装xinetd超级守护进程服务(tftp服务的启动管理会用到)
	# yum install -y xinetd ;安装xinetd服务
	# systemctl enable xinetd ;允许xinetd服务开机启动
	# systemctl start xinetd ;启动xinetd服务
3、安装tftp服务;(简单文件传输服务,用于pxe启动时客户端获取pxe启动
	内核及其他文件)
	# yum install -y tftp-server ;安装tftp-server
	# sed -i '/disable/{s/yes/no/}' /etc/xinetd.d/tftp ;设置tftp服务随xinetd服务启动
	# systemctl reload xinetd ;重载xinetd服务以使配置生效
	该文件服务的文件存储位置为:/var/lib/tftpboot目录,pxe启动所需的相关
	文件会放置在该位置;
	# mkdir /var/lib/tftpboot/pxelinux.cfg ;该目录是pxe启动读取启动配置文件的
	位置
4、部署dhcp服务
	# yum install -y dhcpd; 安装dhcp服务
	# systemctl enable dhcpd ;开机启动
	编辑/etc/dhcp/dhcpd.conf文件,内容如下:
		option domain-name "ijia.com"; 域名
		option domain-name-servers ns1.ijia.com;域名服务器
		default-lease-time 600; 默认租约时间
		max-lease-time 7200; 最大租约时间
		log-facility local7; 日志记录方式
		subnet 192.168.181.0 netmask 255.255.255.0 { 
		  range 192.168.181.100 192.168.181.200; 分派地址范围
		  option domain-name-servers ns1.ijia.com;分派的dns
		  option domain-name "ijia.com"; 分派的域名
		  option routers 192.168.181.10; 分派的网关ip
		  option broadcast-address 192.168.181.255; 分派的广播地址
		  default-lease-time 86400; 默认租约时间
		  max-lease-time 86400; 最大租约时间
		  filename "pxelinux.0"; pxe启动的文件名
		  next-server 192.168.181.10; pxe启动的下一跳服务器地址
		}
	#systemctl start dhcpd ;启动dhcp服务
5、安装httpd服务;(使用httpd服务来提供安装源和kickstart文件)
	# yum install -y httpd ;
	# systemctl enable httpd ;允许开机启动
	# systemctl start httpd ;启动服务
	# mkdir /var/www/html/centos7 ;要安装的系统光盘映像文件会复制到该位置;
	# mkdir /var/www/html/kickstart ;自动应答文件kickstart会放置在该位置;
6、安装syslinux包(该包提供了linux在多种启动方式下所需的启动文件)
	# yum install -y syslinux ;
	# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,pxelinux.0} 
		/var/lib/tftpboot/ ;复制syslinux包中提供的pxe启动文件到tftp服务的文件
		目录位置;
7、挂载安装镜像文件,并复制安装镜像到我们所指定的安装目录位置web站点
	目录下centos7目录
	# mount /dev/cdrom /mnt ;挂载cdrom到临时挂载目录/mnt
	# cp -a /mnt/* /var/www/html/centos7 ;复制安装文件到指定位置;
	# cp /mnt/.treeinfo /var/www/html/centos7 ;redhat官方文档提示inst.repo
		指令指定的位置必须包含此文件,所以复制过去;
	# cp /mnt/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot ;复制linux启动文件
		到tftp服务的文件目录位置;
8、安装system-config-kickstart包图形配置kickstart文件或创建并自定义内容
	kickstart文件或修改/root/anaconda-ks.cfg文件;该文件用于centos7自动
	安装的应答文件;下面介绍图形配置kickstart文件。
	#yum install -y system-config-kickstart ;安装
	# system-config-kickstart ;启动命令,进入kickstart的图形配置界面
		按需选择后,点击保存,存储为/var/www/html/kickstart/ks.cfg文件;
	Tip:
		运行system-config-kickstart命令在选择安装包时,可能会提示无可用
		包,此时编辑/usr/share/system-config-kickstart/packages.py文件,
		在文件161行处修改包组id,添加base(该仓库必须包含在系统当前
		仓库中,并且可用,并且安装包中包含此仓库或者仓库中的包)
9、创建pxe启动默认配置文件/var/lib/tftpboot/pxelinux.cfg/default;
	cat << EOF > /var/lib/tftpboot/pxelinux.cfg/default
	default menu.c32 ;默认菜单程序
	prompt 40 ;提示等待时间
	timeout 60;选择超时时间;
	MENU TITLE Centos7 x86_64 PXE Installation ;菜单标题
	LABEL Centos 7 X86_64 PXE Installation ;选择菜单标记
		MENU LABEL Centos7 x86_64 PXE Installation ;选择菜单名称
		kernel vmlinuz ;启动的内核文件
		APPEND initrd=initrd.img inst.repo=http://192.168.181.10/centos7 
			inst.ks=http://192.168.181.10/kickstart/ks.cfg ;附加的内核启动
			参数;(详见:https://access.redhat.com/documentation/zh-
			cn/red_hat_enterprise_linux/7/html/installation_guide/chap-an
			aconda-boot-options)
		label local	;默认从本地磁盘启动
			menu label Boot from local drive
			menu default
			localboot 0xffff
	EOF
客户端:
	1、开机后进入bios设置pxe网络启动;
	2、系统进入无人值守自动安装

cobbler的部署使用:

cobbler是对pxe安装过程的高级封装,主要包括distro,repo,profile
三个组件,distro包括对应版本的vmlinuz、initrd文件,导入时也会
导入packages,repo是各个版本对应的仓库,profile是安装模板
包括使用的distro,repo,ks文件等等(不指定repo时,使用的是
distro导入时的包仓库)
1、安装cobbler、cobbler-web包;
	yum install -y cobbler cobbler-web pykickstart rsync dhcp tftp httpd
	 debmirror syslinux xinetd;
	 cobbler-web是cobbler的web操作界面
	 pykickstart是cobbler部署时需要用到的工具
	 rsync是cobbler数据同步时用到的工具
	 dhcp、tftp、httpd是网络部署需要的服务
	 syslinux包提供了各种环境的启动引导
	debmirror是进行debian mirror下载和维护的工具
2、配置服务启动状态,启动服务
	依照pxe的设置tftp服务,并配置开机启动,启动xinetd服务;
	启动dhcp服务,并配置开机启动(注意添加filename和next-server两项)
	启动rsync服务,并配置开机启动
	启动httpd服务,并配置开机启动
	启动cobblerd服务,并配置开机启动
	运行cobbler check,并修改提示项:
		#cobbler check ;依结果提示修改以下项:
			1、修改/etc/cobbler/setting配置文件中的server指令为外部ip
				(不能为127.0.0.1)
			2、修改next-server指令为外部ip(不能为127.0.0.1)
			3、已安装syslinux此提示可略过,也可运行cobbler get-loaders
			4、enable和start rsyncd服务;
			5、安装debmirror包;
			6、修改安装时root的默认密码,使用如下命令:
				openssl passwd -1 -salt `openssl rand -base64 2`
				键入密码,得到加密字符串,填入setting配置文件对应位置
			7 、安装fencing 工具:
				yum install cman fence-agents -y
		修改完成后,运行cobbler sync命令,重启cobbler服务:
			#cobbler sync;
			#systemctl restart cobblerd;
3、从安装光盘导入distro,创建profile文件:
	# mount /dev/cdrom /mnt
		挂载安装光盘到/mnt目录
	# cobbler import --name=Centos7.3-x86_64 --path=/mnt
		从目录导入安装文件(包括distro,repo等)
	# cobbler list
		列出当前cobbler资源列表,上一步导入会生成一个distro条目和
		一个profile条目
	# cobbler profile report ;
		列出profile的详细信息,包括默认ks文件
4、启动一个无本地系统的客户机,选择安装条目后会进行系统自动安装
5、设置启动安装选项的密码:
	生成加密密码串:
		openssl passwd -1 -salt `openssl rand -base64 2`
	在/etc/cobbler/pxe/pxedefault.template中MENU TITLE行下添加:
		MENU MASTER PASSWD ****************(密码串)
	在/etc/cobbler/pxe/pxeprofile.template中LABEL行下添加:
		MENU PASSWD
	运行cobbler sync命令:
		# cobbler sync
	此后,我们在执行网络安装时会要求输入密码
6、cobbler_web的密码设置
	cobbler_web的访问地址为https:$IP/cobbler_web,默认访问账户密码
	为:cobbler cobbler
	cobblerweb管理页面的认证模块定义在/etc/cobbler/modules.conf中,
	默认为authn_configfile
	authn_configfile模块使用/etc/cobbler/users.digest文件中的账户进行认证
	对该文件中用户的授权管理在/etc/cobbler/users.conf文件中;删除默认
	账户,并添加用户自己设定账户:
	首先删除cobbler默认账户:
		#sed -i ‘/^cobbler/d’ /etc/cobbler/users.digest;
	使用htdigest命令生成用户:
		#htdigest /etc/cobbler/users.digest Cobbler cbl
		Tip:realm设定为Cobbler,必须为此值,否则创建的用户无法登陆;
			cbl为用户名,命令回车后输入密码即创建成功;
	修改users.conf文件,授权cbl的管理员权限:
		#sed -i -e '$a\cbl = ""' -e '/^cobbler/d' /etc/cobbler/users.conf
	执行cobbler sync操作:
		#cobbler sync
Tip:
	1、在完成安装第一次启动cobblerd时运行cobbler check提示错误如下:
		Traceback (most recent call last):
		 File "/usr/bin/cobbler", line 36, in <module>
		   sys.exit(app.main())
		 。。。。
		  return u.close()
		  File "/usr/lib64/python2.7/xmlrpclib.py", line 794, in close
		   raise Fault(**self._stack[0])
		xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">
	解:google后据说是cobbler的一个bug,重启cobblerd服务再次运行
		cobbler check,正常运行
	疑:在上次命令正常后,再次运行cobbler sync和cobbler check命令均
		提示如上错误
	解:在setting配置文件中,设置了server的值为非本机的地址,修正后
		正常;
	2、cobbler在每次修改后都需要运行cobbler sync命令,配置文件修改时
		修改重启cobblerd服务
	3、对于cobbler repo的使用不太明了,在导入仓库并同步后,在profile中
		指定使用该仓库,但安装时却提示找不到包,例:
			@复制安装目录packages下的所有包到/var/www/html/centos7-base中
				并下载epel源中yad包到该目录中(yad包仅依赖于base源中的某些包)
			@并对centos7-base目录创建仓库文件:
				#createrepo /var/www/html/centos7-base
			@cobbler 添加repo:
				#cobbler repo add --name=centos7-x86_64-base --\
				mirror=/var/www/html/centos7-base
			@同步repo:
				# cobbler reposync
			@添加profile使用仓库“centos7-base”:
				#cobbler profile add --distro=Centos7.3-x86_64 --name=Centos
					7.3-x86_64-yad-test --repos=centos7-base --ks=/var/lib/cobbler\
					/kickstart/centos7-x86_64-yad-test
					ks文件中定义了url --url=$tree
			@cobbler sync
				#cobbler sync
			@重启cobblerd服务:
				# systemctl restart cobblerd
			@客户端选择从网络安装,提示找不到yad包,是否继续

cobbler自动安装Ubuntu、win7、win10、2016:

Ubuntu自动安装:
1、挂载光盘:
	#mount /dev/cdrom /mnt
2、cobbler导入镜像:
	#cobbler import --name=ubuntu16.04 --path=/mnt
3、cobbler导入镜像后,会生成两个distro版本、两个profile版本、两个repo版本
	分别为ubuntu-server-hwe、ubunut-server;默认自动应答文件为/var/lib/
	cobbler/kickstart/sample.seed文件,可以进行简单修改
4、使用自定义应答文件出错,无法自动安装;
	进行桌面版本的部署出错,脑壳一片混乱,暂停!	
Tip:
	ubuntu16.04-desktop导入镜像失败,google说是不支持ubuntu桌面版本
	系统的自动部署,下载了server版的导入成功

win7自动安装:

	使用windows AIK程序中的‘部署工具命令提示工具’创建pe,参考
	‘相关推荐文件’第五条
	安装未成功,自动部署卡在wpeinit,偶尔出现蓝屏现象,问题如下:
出现的问题:
	@在执行imagex /mountrw c:\winpe\winpe.wim 1 c:\winpe\mount
	Error opening file [c:\winpe\winpe.wim]. 系统找不到指定的文件。
	打开目录,发现copype amd64 C:\winpe命令并没有生成此文件
	解:貌似是终端打开错误,程序生成了两个终端,一个是‘部署
	工具命令提示’,‘部署和印象工具环境’,应打开前者
	@在进行自动安装时卡在‘x:\windows\system32\wpeinit’
	解:在制作安装iso时,删除startnet脚本的第一行‘wpeinit’
	@在startnet脚本运行ping测试命令时提示‘无法联系ip驱动程序’
	运行net use z: \\192.168.181.10\share时,提示‘工作站服务没有启动’
	猜:可能是上面wpeinit程序未运行,导致ip驱动程序未装载
	@恢复脚本第一行wpeinit,启动卡在此处,并偶尔蓝屏
	@google搜索wpeinit是一个初始化pe环境,添加和装载你已经包含
	进pe的驱动
	@google后修改wpeinit为wpeinit.exe依然不行
	卡文

win10自动安装:

安装步骤同win7差不多,不过安装对应win10的pe制作工具
参考:
	https://anjia0532.github.io/2019/02/22/cobbler-win10-win-server-2019/
问题:
	同样卡在了wpeinit处;
	需要对winpe的详细启动和制作过程加以学习, 以排查问题所在
自动应答文件生成:
	https://www.windowsafg.com/win10x86_x64.html 
	#该网站提供明了的选择项来帮助生成win10自动应答文件
	https://www.windowscentral.com/how-create-unattended-
	media-do-automated-installation-windows-10
	#该网页记录了【windows系统映像管理器】生成自动应答文件的步骤

UEFI模式pxe安装centos7:

1、uefi模式和legacy模式的pxe安装的区别在于pxe引导所需的文件不同,即dhcp
	中定义的filename的文件不同,所需文件都可在镜像包中找到,过程如下:
		@dhcp中定义pxe引导文件名为‘BOOTX64.EFI’
		@客户端向tftp服务器下载此文件,读取grub.cfg文件,获取引导菜单选项;
		@客户端选择安装项,向tftp服务器下载vmliniuz和initrd文件,并根据启动
			选项启动
		@整个过程同legacy相差无几,主要是引导文件的差别
2、挂载镜像,复制可用文件到tftp服务器目录下:
	镜像文件挂载后复制EFI/BOOT/目录下:
		BOOTX64.EFI ;作用类似于pxelinux.0文件
		grubx64.efi;引导菜单程序
		grub.cfg (稍作修改);引导菜单程序配置项文件;
	isolinux目录下:
		vmlinuz
		initrd
	以上五个文件到/var/lib/tftpboot/目录下;
	修改/etc/dhcp/dhcpd.conf文件中:
		filename “BOOTX64.EFI”;
3、其他步骤雷同legacy pxe安装;

问题:

1、pxe安装提示:
	/sbin/dmsquash-live-root write error no space left on device
	解:
		在虚拟机内存只有1G内存时7.3安装会报错,7.1,7.2可能可以准确安装
		调整虚拟机内存至2G以上
2、设定了ks文件,但安装时却总是进入图形安装界面等待手动选择
	解:在生成kickstart文件时,选择text模式;
		不知道为什么图形界面不能实现自动安装
3、自动安装时,弹出互动提示:
	Erro setting up software source;
	Installation source not set up;
	解:虽然在system-config-kickstart程序中指定了安装源,但生成的ks文件
		中却并没有包含此项,在ks文件中添加安装包url:
			install
			url --url http://192.168.181.10/centos7
4、延续3的问题,原本在安装内核启动参数中有设置inst.repo,但未知也未
		生效;
	析:原本认为是.treeinfo文件在cp时未一起复制到安装源目录,但重新从
		光盘中复制文件过去,启动还是不行,未解
5、在%packages模块,考虑到有可能装图形界面(Oracle)做了一个注释
	%packages
	...
	#@gnome-desktop
	然后就会在安装过程卡住,在#后面增加与一个空格就好了
	# @gnome-desktop
6、由于cobbler导入ubuntu-desktop系统失败,所以尝试pxe部署安装
	坑:
		1、复制icasper目录下vmlinuz和initrd作为网络安装内核,启动安装
			失败,提示no init found
			解:启动内核需加 boot=casper 参数,但之后提示找不到sr0设备
			,应该是该安装内核内设定了安装路径默认为cdrom,装入cdrom
				后,进入系统桌面,需双击安装程序进行安装,放弃;
				查询boot=casper参数是指定cdrom安装,于此处无效;
		2、iso镜像目录下并没有netboot/ubuntu-installer/amd64/目录,所
			以找不到网络安装内核文件
		3、在http://archive.ubuntu.com/上下载网络安装内核文件:vmlinux
			、initrd.gz
		4、将步骤3下载的文件放到tftp服务器文件目录并解压,设置为安装
			内核文件,可以进入安装界面,由于未插入cdrom,也未指定安装
			源,安装会要求选择就近的一个镜像站来下载安装所需文件
		5、步骤3中网站boinic版本目录下之只有一个网络安装内核文件,未
			区分是desktop版本还是server版本,安装程序和iso文件对应才能
			正确安装,安装内核中的安装程序参数和所需文件是不同的;
			(两个版本所安装内核的内核选用特性、内核装载的模块应该不同)
		6、步骤4中选择从就近的镜像站中安装,安装完成进入系统,使用
			uname -r:查看系统版本为:4.15.0-96-generic,按google到的说明
			generic为桌面版本,server为服务器版本;但也有说两个版本的区别
			只是安装的包的区别
		7、
	7、在进行ubunut的pxe自动安装时,不管是pxe部署还是cobbler部署,在
		安装程序启动时都会提示‘没有默认路由,是否继续’,而dhcp服务器明明
		指派了option routers
		@ 在preseed文件中添加:
			d-i netcfg/no-default-router boolean true
			但是未生效
		@为了排除dhcp服务器的问题,我停掉了dhcp服务,并配置使用dnsmasq
			但同样的问题出现,dnsmasq使用配置参考:
			https://www.cnblogs.com/sunsky303/p/9238669.html
	8、cobbler在安装ubuntu时,使用自定义的preseed文件,无法进入自动安装
		而对比cobbler默认的preseed文件,两者选项并没有与此问题有关的不同;
	9、ubuntu18.04-server在cobbler import导入镜像时失败,一次日志提示空间
		不足;一次怀疑是cobbler版本和ubuntu官网镜像版本不匹配,ubunut官方
		下载的server版本包大小为870M,导入失败,google后在cmimage.ubuntu
		.com/releases/18.04/中下载的包大小为921M,导入成功
	10、错误信息:/sbin/dmsquash-live-root:line286:printf:write error:no space
		 left on device
		解决办法:内存不足,增加客户机内存最少为2G 
	11、uefi模式pxe安装时,在向tftp服务器获取文件时服务器端报错:
		‘tftp Error code 8: User aborted the transfer’
		解决办法:本事例中,是因为tftp服务器上漏了grubx64.efi文件,客户端
			搜索不到此文件,无法完成引导,因此中断了其它文件传输动作,服务
			端因此报错;

相关推荐文档:

1、centos 7的pxe安装部署详解;
	https://blog.51cto.com/renjunjie622/1782543 ;
2、https://access.redhat.com/documentation/zhcn/red_hat_enterprise
	_linux/7/html/installation_guide/chap-anaconda-boot-options
	redhat安装指南第20节--内核引导选项
3、https://access.redhat.com/documentation/zh-cn/red_hat_enterprise
	_linux/7/html/installation_guide/sect-kickstart-syntax
	redhat安装指南第23节--kickstart文件语法
4、cobbler部署
	https://blog.csdn.net/qq_38773184/article/details/86508997
5、cobbler的win7部署
	https://www.cnblogs.com/pluse/p/8508538.html
	https://www.cnblogs.com/pluse/p/8528122.html  win7应答文件之作
	https://www.letifer.org/2014/03/26/cobbler-and-windows/  抽离winpe中的固定参数 
6、cobbler的仓库配置:
	https://blog.csdn.net/Allison_ywt/article/details/77892826
7、cobbler部署CentOS,Ubuntu,Windows 10 和 Windows Server 2019
	https://anjia0532.github.io/2019/02/22/cobbler-win10-win-server-2019/
8、Ubuntu官网kickstart文件使用介绍:
	https://help.ubuntu.com/18.04/installation-guide/amd64/ch04s06.html#kickstart
9、Ubuntu官网preseed文件使用介绍:
	https://help.ubuntu.com/18.04/installation-guide/amd64/apb.html
10、ubuntu使用手册:
	*Ubuntu系统使用手册:
		https://wiki.ubuntu.org.cn/UbuntuManual
	*Ubuntu使用手册的次要参考资料:
		https://wiki.ubuntu.org.cn/UbuntuManual:Ubuntu_%E6%8A%80%E6%
		9C%AF%E6%94%AF%E6%8C%81#.E5.8F.82.E8.80.83.E8.B5.84.E
		6.96.99
	*debian/GUN安装手册
		https://www.debian.org/releases/stable/amd64/
	*ubuntu使用预置文件自动化安装
		https://www.debian.org/releases/stable/amd64/apbs02.zh-cn.html
11、preseed文件模板:
	https://www.debian.org/releases/buster/example-preseed.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值