1)DHCP服务器,为上面两个虚拟机指定固定IP地址比如:第一台服务器分配.101,第二台服务器分配.102地址默认租期2小小时
2)修改ks脚本
磁盘分区:不使用逻辑卷,使用普通分区(注意SATA硬盘是sda)
参照ks脚本中part /boot的写法
/boot分配1G空间
swap分配2G空间
/ 分配剩余所有空间
创建用户:客户机自动创建用户dbuser,密码设置为redhat123
3)预定义软件包
不带图形界面的Server
定义两台虚拟机分别有两个网卡一个net,一个仅主机
- cat /etc/dhcp/dhcpd.conf
- #
- # DHCP Server Configuration file.
- # see /usr/share/doc/dhcp-server/dhcpd.conf.example
- # see dhcpd.conf(5) man page
- #
- subnet 192.168.99.0 netmask 255.255.255.0 {
- range 192.168.99.100 192.168.88.150;
- option domain-name-servers 114.114.114.114;
- option domain-name "example.com";
- option routers 192.168.99.127;
- option broadcast-address 192.168.99.255;
- default-lease-time 3600;
- max-lease-time 7200;
- next-server 192.168.99.128;
- filename "pxelinux.0";
-
- host test1 {
- hardware ethernet 00:50:56:2C:62:8B;
- fixed-address 192.168.99.101;
- server-name "test1.example.com";
- }
-
- host test2 {
- hardware ethernet 00:0C:29:FE:F2:7F;
- fixed-address 192.168.99.102;
- server-name "test2.example.com";
- }
- }
上部分
domain-name和之后要修改的配置,做一个匹配
假设所有客户机处于example.com这个领域
每个主机又有自己不同的主机名称
增加了DHCP默认租期,尽量让租用时间能覆盖PXE部署过程
下部分,对于每个客户机的配置
每个机器的MAC地址,提前收集
每个对应MAC的主机,匹配一个特定的IP地址
然后,每个主机,也有特定的主机名
1)配置文件,没有变化,因为TFTP只是让客户能从指定目录,下载文件
本身没有更多个性化配置
2)tftp工作目录中的文件和特定配置
开机启动菜单,取消倒计时等待,设定超时时间
默认使用下面的linux这一段配置
menu部分
每个label是一个单独的菜单项,在开机启动菜单
kernel指定要使用的启动的内核
append部分指定内核参数……
有一个小改动:(不改也没问题,只是为了完全适应8以及后续版本系统的要求)
inst.ks=……(原本写ks=……也能识别加载ks文件)
=后面,写了http,接下来,用http提供软件仓库
default文件是只读,需要root用户操作,强制保存……
3)tftp工作目录中需要拷贝的文件不变
原本使用apache
在/etc/http/conf/httpd.conf修改配置
默认目录是/var/www/html/
整个系统镜像内容,全部移到上面的这个目录
……
接下来,使用nginx做http的部分
1)安装软件包
yum install nginx -y
2 )修改配置文件
vi /etc/nginx/nginx.conf
监听端口,确保是80
root工作目录,使用默认目录
location做访问控制,只允许客户机所在网段访问
nginx自己自带的页面:index.html文件,404和50x的页面文件
现在把CentOS整个安装镜像的内容,拷贝到centos84目录
ks.cfg文件也拷贝到这里
3)启动启用http服务
修改原有的脚本,对将要安装的客户机,做一定程度的自定义配置
现在做其中一部分,还可以做更多……
repo指定http的路径
指定软件包
@^ 指定安装软件的套装
上面指定的,等效于自己图形化安装时指定的:Server
比Server GUI,少图形桌面,但是包含大部分需要用的必要软件包
比最小化安装,容量略大,但是软件包更全
还可以@ 后面跟要额外安装的软件包名称……
最后%end结束
如果有多个网卡需要在安装时候配置,可以写多条network
因为已经使用DHCP分配主机名,所以在ks里不单独指定主机名配置
安装介质的路径,也是http
上面,是客户机分区的配置
part条目,配置普通分区,如果要配置多个普通分区,按顺序写多条part
例子里用的是nvme硬盘,所以盘号是nvme0n1
如果是使用SATA盘,这盘号是sda
如果使用逻辑卷部署,但是又要保证/boot使用普通分区
先写part /boot的条目
之后的条目,先创建物理卷
part pv.编号
磁盘分区:不使用逻辑卷,使用普通分区(注意SATA硬盘是sda)
参照ks脚本中part /boot的写法
/boot分配1G空间
swap分配2G空间
/ 分配剩余所有空间
选项:--size=1,只给了1M,但是它要从1M起,后面跟着另一个选项
--grow,配合到一起,从1M容量起,自动分配剩余所有空间
volgroup建立卷组,并且,也没有指定容量,卷组占用pv所有空间
之后是创建每个逻辑卷lv,逻辑卷要指定容量
文件系统,上面例子使用了ext4,没使用xfs……
上面的分区配置方式
并不限定客户机磁盘总容量,可以根据磁盘容量自动适应上限
客户机的系统盘,只要留出足够空间即可
配置客户机系统内的用户
每创建一个用户,都写一行配置
再往后,可以指定安装后要执行的脚本或命令
写%post部分
会在系统软件包都装完,但是第一次重启前,执行
例子里
把自带的repo文件备份到其他位置,不使用
从服务器,下载一个repo文件
从服务器,又下载一个文件:hosts文件
下载文件,用的是wget,通过http下载
selinux更改模式
在初次安装时,关闭了防火墙服务(不关闭也可以,默认是放行ssh的)
在%post …… %end
这段,可以写各种命令,也可以指定执行脚本……
最后,自动重启
5.额外准备的文件,客户机要从服务器下载的
1)hosts文件
这个文件直接会覆盖客户机的hosts
例子里,解析了服务器、两台客户机
- cat hosts
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
- ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 192.168.99.128 server8.example.com
- 192.168.99.101 test1.example.com
- 192.168.99.102 test2.example.com
2)repo文件
给客户机用,通过服务器,提供yum源
- cat inter.repo
- [Appstream]
- name=Appstream
- baseurl=http://192.168.99.128/centos84/AppStreamenabled=1gpgcheck=0
- [BaseOS]
- name=local
- baseurl=http://192.168.99.128/centos84/BaseOSenabled=1
- gpgcheck=0
6.客户机安装后
1)有特定自己的IP地址,有自己的主机名
2)有hosts做基本名称解析
3)有网络yum源,指向服务器