这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/107751713
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!
DHCP
http
tftp
xinetd
syslinux
kickstart
DHCP
DHCP
(Dynamic Host Configuration Protocol
,动态主机设置协议)是用于局域网动态分配IP
地址的工具,主机发送请求消息给DHCP
服务器的68
端口,DHCP
服务器回应应答消息给主机的67
号端口
http
HTTP协议(
HyperText Transfer Protocol
,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,HTTP
是一个基于TCP/IP
通信协议来传递数据(HTML
文件, 图片文件, 查询结果等)
tftp
TFTP
(Trivial File Transfer Protocol
,简单文件传输协议))是TCP/IP
协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69
。
xinetd
xinetd
是新一代的网络守护进程服务程序,又叫超级Internet服务器,常用来管理多种轻量级Internet
服务。xinetd
提供类似于inetd+tcp_wrapper
的功能,但是更加强大和安全。
syslinux
syslinux
是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux
的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux
好之后,sysLinux启动盘就可以引导各种基于DOS
的工具,以及MS-DOS
/Windows
或者任何其它操作系统。不仅支持采用BIOS
结构的主板,而且从6.0
版也开始支持采用EFI
结构的新型主板。
kickstart
kickstart
是一个定义了Linux
安装过程的配置文件, 其工作原理是预先把原本需要手工填写的参数保存成一个ks.cfg
文件,当安装过程中出现需要填写参数情况下,安装程序会先找ks.cfg
文件,找到合适的参数则自动执行,找不到合适的参数则需要手动填写
PXE
作用: 引导装机Kickstart
作用: 将安装系统的过程中通过ks.cfg
文件中的配置信息,实现自动安装配置达到无人值守自动安装;TFTP
: 支持PXE
引导的网卡中从tftp
服务器端下载pxelinux.0
文件、vmlinuz
、initrd.img
等内核引导文件;DHCP
:PXE
引导过程中获首先获取IP地址,并提供pxelinux.0
文件位置;HTTP
: 用于下载ks.cfg
以及系统镜像文件DHCP
服务器回应,发送IP
地址给该客户端并且告诉该客户端下一步寻找哪一个服务器,也就是TFTP
TFTP
要BootLoader
TFTP
服务器将pxelinux.0
相关文件交给客户端initrd.img
TFTP
将这两个文件路径告诉客户端TFTP
提供的路径向http
服务要ks.cfg
(自应答文件)ks.cfg
文件中指定的安装路径寻找安装所需要的文件PXE
,全名Pre-boot Execution Environment
,预启动执行环境;Intel
和Systemsoft
公司于1999年9月20日公布的技术;Client
/Server
的工作模式;PXE
客户端会调用网际协议(IP
)、用户数据报协议(UDP
)、动态主机设定协议(DHCP
)、小型文件传输协议(TFTP
)等网络协议;PXE
客户端(client
)这个术语是指机器在PXE
启动过程中的角色。一个PXE
客户端可以是一台服务器、笔记本电脑或者其他装有PXE
启动代码的机器(我们电脑的网卡)。PXE Client
向DHCP
发送请求 PXE Client
从自己的PXE
网卡启动,通过PXE BootROM
(自启动芯片)会以UDP
(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP
服务器索取IP
。
DHCP
服务器提供信息 DHCP
服务器收到客户端的请求,验证是否来至合法的PXE Client
的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP
地址、pxelinux
启动程序(TFTP
)位置,以及配置文件所在位置。
PXE
客户端请求下载启动文件 客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0
、pxelinux.cfg/default
、vmlinuz
、initrd.img
等文件。
Boot Server
响应客户端请求并传送文件 当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM
由TFTP
通讯协议从Boot Server
下载启动安装程序所必须的文件(pxelinux.0
、pxelinux.cfg/default
)。default
文件下载完成后,会根据该文件中定义的引导顺序,启动Linux
安装程序的引导内核。
请求下载自动应答文件 客户端通过pxelinux.cfg
/default
文件成功的引导Linux
安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux
,如果是通过网络安装(NFS
, FTP
, HTTP
),则会在这个时候初始化网络,并定位安装源位置。接着会读取default
文件中指定的自动应答文件ks.cfg
所在位置,根据该位置请求下载该文件。
这里有个问题,在第2步和第5步初始化2次网络了,这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。因此PXE模块和安装程序是相对独立的,
PXE
的网络配置并不能传递给安装程序,从而进行两次获取IP地址过程,但IP
地址在DHCP
的租期内是一样的。
客户端安装操作系统 将ks.cfg
文件下载回来后,通过该文件找到OS Server
,并按照该文件的配置请求下载安装过程需要的软件包。 OS Server
和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。
Redhat系主要有两种Kickstart
和Cobbler
。
Kickstart
是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg
的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg
文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg
文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg
文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg
中的设置重启/关闭系统,并结束安装。
Cobbler
集中和简化了通过网络安装操作系统需要使用到的DHCP
、TFTP
和DNS
服务的配置。Cobbler
不仅有一个命令行界面,还提供了一个Web
界面,大大降低了使用者的入门水平。Cobbler
内置了一个轻量级配置管理系统,而且它也支持和其它配置管理系统集成,如Puppet
,暂时不支持SaltStack
。
简单的说,Cobbler是对kickstart的封装,简化安装步骤、使用流程,降低使用者的门槛。
[root@idys ~] cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@idys ~] uname -r
3.10.0-1062.el7.x86_64
[root@idys ~] uname -m
x86_64
DHCP
服务UUID
,修改ip
,子网掩码,dns
,ONBOOT
,网关,ip获取方式
为static
[root@idys ~] vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.200.172"
PREFIX="24"
GATEWAY="192.168.200.2"
DNS1="114.114.114.114"
DNS2="8.8.8.8"
IPV6_PRIVACY="no"
[root@idys ~] systemctl restart network
[root@idys ~] chkconfig --list
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@idys ~] systemctl status network
● network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since Fri 2020-07-31 18:08:34 CST; 7min ago
Docs: man:systemd-sysv-generator(8)
Process: 1719 ExecStop=/etc/rc.d/init.d/network stop (code=exited, status=0/SUCCESS)
Process: 1874 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
Jul 31 18:08:34 idys.com systemd[1]: Starting LSB: Bring up/down networki....
Jul 31 18:08:34 idys.com network[1874]: Bringing up loopback interface: ...]
Jul 31 18:08:34 idys.com network[1874]: Bringing up interface ens32: Con...)
Jul 31 18:08:34 idys.com network[1874]: [ OK ]
Jul 31 18:08:34 idys.com systemd[1]: Started LSB: Bring up/down networking.
Hint: Some lines were ellipsized, use -l to show in full.
[root@idys ~] systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-07-31 17:58:38 CST; 20min ago
Docs: man:firewalld(1)
Main PID: 640 (firewalld)
CGroup: /system.slice/firewalld.service
└─640 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid...
Jul 31 17:58:37 idys.com systemd[1]: Starting firewalld - dynamic firewal....
Jul 31 17:58:38 idys.com systemd[1]: Started firewalld - dynamic firewall....
Hint: Some lines were ellipsized, use -l to show in full.
[root@idys ~] systemctl stop firewalld
[root@idys ~] systemctl disable firewalld
[root@idys ~] systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
Jul 31 17:58:37 idys.com systemd[1]: Starting firewalld - dynamic firewal....
Jul 31 17:58:38 idys.com systemd[1]: Started firewalld - dynamic firewall....
Jul 31 18:18:53 idys.com systemd[1]: Stopping firewalld - dynamic firewal....
Jul 31 18:18:53 idys.com systemd[1]: Stopped firewalld - dynamic firewall....
Hint: Some lines were ellipsized, use -l to show in full.
Selinux
的运行状态:发现其属于运行状态[root@idys ~] getenforce
Enforcing
Selinux
[root@idys ~] setenforce 0
Selinux
,发现它已经关闭[root@idys ~] getenforce
Permissive
Selinux
永久关闭(不再开机自启动)[root@idys ~] vi /etc/selinux/config
SELINUX=disabled
[root@idys yum.repos.d] vim /etc/fstab # 添加如下内容,让光盘自动开机挂载
UUID=2019-09-09-19-08-41-00 /media/cdrom iso9660 defaults 0 0
[root@idys yum.repos.d] mount -a # 检测fstab文件,然后自动挂载
mount: /dev/sr0 is write-protected, mounting read-only
yum
源的,光盘镜像[root@idys yum.repos.d] vi CentOS-Media.repo
[c7-media]
name=CentOS-$releasever - Media
baseurl= file:///media/cdrom/ # 设置光盘源的位置
# file:///media/CentOS/
# file:///media/cdrecorder/
gpgcheck=1
enabled=1 # enable 设置为 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum
网络源文件删除[root@idys yum.repos.d] mv CentOS-Base.repo CentOS-Base.repo.bak
[root@idys yum.repos.d] yum clean all
Loaded plugins: fastestmirror
Cleaning repos: c7-media
[root@idys yum.repos.d] yum makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
c7-media | 3.6 kB 00:00
(1/4): c7-media/group_gz | 165 kB 00:00
(2/4): c7-media/primary_db | 6.0 MB 00:00
(3/4): c7-media/filelists_db | 7.3 MB 00:00
(4/4): c7-media/other_db | 2.6 MB 00:00
DHCP
服务[root@idys yum.repos.d] yum -y install dhcp
DHCP
[root@idys yum.repos.d] vim /etc/dhcp/dhcpd.conf # 添加如下内容
allow booting; #==》是否响应使用者查询
allow bootp; #==》是否响应激活查询
ddns-update-style interim; #==》配置DHCP-DNS 互动更新模式
ignore client-updates;
subnet 192.168.200.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.200.180 192.168.200.250; #==》指定IP地址池
option subnet-mask 255.255.255.0; #==》指定子网掩码
option domain-name-servers 192.168.200.172; #==》指定DNS服务器IP地址
default-lease-time 21600; #==》指定默认租约时间,单位秒
max-lease-time 43200; #=》最大租约时间,单位秒
next-server 192.168.200.172; #=》设置服务器从引导文件中安装的位置
filename "pxelinux.0"; #=》开始启动文件名称
}
DHCP
服务,同时设置DHCP
开机自启动[root@idys yum.repos.d] systemctl status dhcpd # 查看DHCP服务启动状态
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
[root@idys yum.repos.d] systemctl start dhcpd #开启 dhcp服务
[root@idys yum.repos.d] systemctl enable dhcpd # 设置 dhcp服务,开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
xinetd
服务[root@idys yum.repos.d] yum -y install xinetd
tftp
服务[root@idys yum.repos.d] yum -y install tftp-server
tftp
[root@idys yum.repos.d] vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no # 此行把yes 改为no,开启tftp服务
per_source = 11
cps = 100 2
flags = IPv4
}
xinetd
服务,同时设置为开机自启动[root@idys yum.repos.d] systemctl start xinetd
[root@idys yum.repos.d] systemctl enable xinetd
[root@idys yum.repos.d] chkconfig --list
****
tftp: on
****
syslinux
[root@idys yum.repos.d] yum -y install syslinux
syslinux
软件安装文件的位置[root@idys yum.repos.d] rpm -ql syslinux
/usr/bin/gethostip
/usr/bin/isohybrid
/usr/bin/memdiskfind
/usr/bin/syslinux
/usr/share/doc/syslinux-4.05
/usr/share/doc/syslinux-4.05/COPYING
/usr/share/doc/syslinux-4.05/CodingStyle.txt
/usr/share/doc/syslinux-4.05/NEWS
/usr/share/doc/syslinux-4.05/README
/usr/share/doc/syslinux-4.05/SubmittingPatches.txt
/usr/share/doc/syslinux-4.05/comboot.txt
/usr/share/doc/syslinux-4.05/distrib.txt
/usr/share/doc/syslinux-4.05/extlinux.txt
/usr/share/doc/syslinux-4.05/gpt.txt
/usr/share/doc/syslinux-4.05/isolinux.txt
/usr/share/doc/syslinux-4.05/keytab-lilo.txt
/usr/share/doc/syslinux-4.05/logo
/usr/share/doc/syslinux-4.05/logo/syslinux-100.png
/usr/share/doc/syslinux-4.05/mboot.txt
/usr/share/doc/syslinux-4.05/memdisk.txt
/usr/share/doc/syslinux-4.05/menu.txt
/usr/share/doc/syslinux-4.05/pxelinux.txt
/usr/share/doc/syslinux-4.05/rfc5071.txt
/usr/share/doc/syslinux-4.05/sample
/usr/share/doc/syslinux-4.05/sample/Makefile
/usr/share/doc/syslinux-4.05/sample/m16-640x640-syslinux.jpg
/usr/share/doc/syslinux-4.05/sample/sample.msg
/usr/share/doc/syslinux-4.05/sample/syslinux_splash.jpg
/usr/share/doc/syslinux-4.05/sample/syslogo.lss
/usr/share/doc/syslinux-4.05/sample/syslogo.ppm.gz
/usr/share/doc/syslinux-4.05/sdi.txt
/usr/share/doc/syslinux-4.05/syslinux.txt
/usr/share/doc/syslinux-4.05/usbkey.txt
/usr/share/man/man1/gethostip.1.gz
/usr/share/man/man1/isohybrid.1.gz
/usr/share/man/man1/memdiskfind.1.gz
/usr/share/man/man1/syslinux.1.gz
/usr/share/man/man1/syslinux2ansi.1.gz
/usr/share/syslinux
/usr/share/syslinux/altmbr.bin
/usr/share/syslinux/altmbr_c.bin
/usr/share/syslinux/altmbr_f.bin
/usr/share/syslinux/cat.c32
/usr/share/syslinux/chain.c32
/usr/share/syslinux/cmd.c32
/usr/share/syslinux/config.c32
/usr/share/syslinux/cpuid.c32
/usr/share/syslinux/cpuidtest.c32
/usr/share/syslinux/diag
/usr/share/syslinux/diag/geodsp1s.img.xz
/usr/share/syslinux/diag/geodspms.img.xz
/usr/share/syslinux/diag/handoff.bin
/usr/share/syslinux/disk.c32
/usr/share/syslinux/dmitest.c32
/usr/share/syslinux/dosutil
/usr/share/syslinux/dosutil/copybs.com
/usr/share/syslinux/dosutil/eltorito.sys
/usr/share/syslinux/dosutil/mdiskchk.com
/usr/share/syslinux/elf.c32
/usr/share/syslinux/ethersel.c32
/usr/share/syslinux/gfxboot.c32
/usr/share/syslinux/gptmbr.bin
/usr/share/syslinux/gptmbr_c.bin
/usr/share/syslinux/gptmbr_f.bin
/usr/share/syslinux/gpxecmd.c32
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/gpxelinuxk.0
/usr/share/syslinux/hdt.c32
/usr/share/syslinux/host.c32
/usr/share/syslinux/ifcpu.c32
/usr/share/syslinux/ifcpu64.c32
/usr/share/syslinux/ifplop.c32
/usr/share/syslinux/int18.com
/usr/share/syslinux/isohdpfx.bin
/usr/share/syslinux/isohdpfx_c.bin
/usr/share/syslinux/isohdpfx_f.bin
/usr/share/syslinux/isohdppx.bin
/usr/share/syslinux/isohdppx_c.bin
/usr/share/syslinux/isohdppx_f.bin
/usr/share/syslinux/isolinux-debug.bin
/usr/share/syslinux/isolinux.bin
/usr/share/syslinux/kbdmap.c32
/usr/share/syslinux/linux.c32
/usr/share/syslinux/ls.c32
/usr/share/syslinux/lua.c32
/usr/share/syslinux/mboot.c32
/usr/share/syslinux/mbr.bin
/usr/share/syslinux/mbr_c.bin
/usr/share/syslinux/mbr_f.bin
/usr/share/syslinux/memdisk
/usr/share/syslinux/memdump.com
/usr/share/syslinux/meminfo.c32
/usr/share/syslinux/menu.c32
/usr/share/syslinux/pcitest.c32
/usr/share/syslinux/pmload.c32
/usr/share/syslinux/poweroff.com
/usr/share/syslinux/pwd.c32
/usr/share/syslinux/pxechain.com
/usr/share/syslinux/pxelinux.0
/usr/share/syslinux/reboot.c32
/usr/share/syslinux/rosh.c32
/usr/share/syslinux/sanboot.c32
/usr/share/syslinux/sdi.c32
/usr/share/syslinux/sysdump.c32
/usr/share/syslinux/syslinux.com
/usr/share/syslinux/syslinux.exe
/usr/share/syslinux/syslinux64.exe
/usr/share/syslinux/ver.com
/usr/share/syslinux/vesainfo.c32
/usr/share/syslinux/vesamenu.c32
/usr/share/syslinux/vpdtest.c32
/usr/share/syslinux/whichsys.c32
/usr/share/syslinux/zzjson.c32
/usr/share/syslinux/
下的pxelinux.0
文件到/var/lib/tftpboot/
下[root@idys yum.repos.d] cp -a /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
/media/cdrom/images/pxeboot/
下的initrd.img
和vmlinuz
文件到/var/lib/tftpboot
下[root@idys yum.repos.d] cp -a /media/cdrom/images/pxeboot/{
initrd.img,vmlinuz} /var/lib/tftpboot/
boot.msg
,vesamenu.c32
文件到/var/lib/tftpboot
下[root@idys yum.repos.d] cp -a /media/cdrom/isolinux/{
boot.msg,vesamenu.c32} /var/lib/tftpboot/
tftp
主目录下创建pxelinux.cfg
目录[root@idys yum.repos.d] mkdir /var/lib/tftpboot/pxelinux.cfg
isolinux.cfg
文件到pxelinux.cfg
目录下[root@idys yum.repos.d] cp -a /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/
[root@idys yum.repos.d] cd /var/lib/tftpboot/pxelinux.cfg/
[root@idys pxelinux.cfg] ls
isolinux.cfg
[root@idys pxelinux.cfg] mv isolinux.cfg default
default
文件[root@idys pxelinux.cfg] vim default
default linux # 第一行把 default vesamenu.c32 改为 default linux
#default vesamenu.c32
label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.200.172/ks.cfg # 加上这一行,把下面一行注释掉
# append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
httpd
服务[root@idys pxelinux.cfg] yum -y install httpd
[root@idys pxelinux.cfg] systemctl start httpd
[root@idys pxelinux.cfg] systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
/root/
目录下复制anaconda-ks.cfg
文件到/var/www/html
下,改名为ks.cfg
[root@idys pxelinux.cfg] cp -a ~/anaconda-ks.cfg /var/www/html/ks.cfg
ks.cfg
# 将开头的cdrom 修改为 url --url=http://192.168.200.172/cdrom
[root@idys pxelinux.cfg] vim /var/www/html/ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
url --url=http://192.168.200.172/cdrom
# Use graphical install
*******************
[root@idys pxelinux.cfg] chown apache:apache /var/www/html/ks.cfg
http
主目录下的cdrom
目录下[root@idys html] blkid /dev/sr0 # 查看CD光盘信息
/dev/sr0: UUID="2019-09-09-19-08-41-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
[root@idys cdrom] vim /etc/fstab # 编辑系统挂载文件,添加如下行
UUID=2019-09-09-19-08-41-00 /var/www/html/cdrom iso9660 defaults 0 0
[root@idys html] mount -a # 重新检测挂载
这个时候已经可以可以自动化安装操作系统了,如果安装过程出错,可以通过
Alt+F2-F5
切到其他控制台查看报错信息
通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,kickstart
就诞生了。使用这种kickstart
,只需事先定义好一个Kickstart
自动应答配置文件ks.cfg
(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。
生成kickstart
配置文件的三种方法:
Centos
机器,Centos
安装程序都会创建一个kickstart
配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart
配置文件来生成你自己的kickstart
配置文件。(生成的文件名字叫anaconda-ks.cfg
位于/root/anaconda-ks.cfg
)Centos
提供了一个图形化的kickstart
配置工具。在任何一个安装好的Linux
系统上运行该工具,就可以很容易地创建你自己的kickstart
配置文件。kickstart
配置工具命令为redhat-config-kickstart
(RHEL3)或system-config-kickstart
(RHEL4,RHEL5)网上有很多用CentOS
桌面版生成ks
文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单kickstart
配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart
配置文件。命令段 键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项
软件包段
%packages
@groupname:指定安装的包组
package_name:指定安装的包
-package_name:指定不安装的包
在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。
%pre:安装系统前执行的命令或脚本(由于只依赖于启动镜像,支持的命令很少)
%post:安装系统后执行的命令或脚本(基本支持所有命令)
关键字 | 含义 |
---|---|
install |
告知安装程序,这是一次全新安装,而不是升级upgrade 。 |
url --url=" " |
通过FTP 或HTTP 从远程服务器上的安装树中安装。 url --url="http://10.0.0.7/CentOS-6.7/" url --url ftp://:@/ |
nfs |
从指定的NFS 服务器安装。 nfs --server=nfsserver.example.com --dir=/tmp/install-tree |
text |
使用文本模式安装。 |
lang |
设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-8 |
keyboard |
设置系统键盘类型。keyboard us |
zerombr |
清除mbr 引导信息。 |
bootloader |
系统引导相关配置。 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location= ,指定引导记录被写入的位置.有效的值如下:mbr (缺省),partition (在包含内核的分区的第一个扇区安装引导装载程序)或none (不安装引导装载程序)。 --driveorder ,指定在BIOS 引导顺序中居首的驱动器。 --append= ,指定内核参数.要指定多个参数,使用空格分隔它们。 |
network |
为通过网络的kickstart 安装以及所安装的系统配置联网信息。 network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6 --bootproto=[dhcp/bootp/static] 中的一种,缺省值是dhcp 。bootp 和dhcp 被认为是相同的。 static 方法要求在kickstart 文件里输入所有的网络信息。 network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2 请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。 --ip= ,要安装的机器的IP 地址. --gateway= ,IP地址格式的默认网关. --netmask= ,安装的系统的子网掩码. --hostname= ,安装的系统的主机名. --onboot= ,是否在引导时启用该设备. --noipv6= ,禁用此设备的IPv6 . --nameserver= ,配置dns 解析. |
timezone |
设置系统时区。timezone --utc Asia/Shanghai |
authconfig |
系统认证信息。authconfig --enableshadow --passalgo=sha512 设置密码加密方式为sha512 启用shadow 文件。 |
rootpw |
root 密码 |
clearpart |
清空分区。clearpart --all --initlabel --all 从系统中清除所有分区,--initlable 初始化磁盘标签 |
part |
磁盘分区。 part /boot --fstype=ext4 --asprimary --size=200 part swap --size=1024 part / --fstype=ext4 --grow --asprimary --size=200 --fstype= ,为分区设置文件系统类型.有效的类型为ext2 ,ext3 ,swap 和vfat 。 --asprimary ,强迫把分区分配为主分区,否则提示分区失败。 --size= ,以MB 为单位的分区最小值.在此处指定一个整数值,如500 .不要在数字后面加MB 。 --grow ,告诉分区使用所有可用空间(若有),或使用设置的最大值。 |
firstboot |
负责协助配置redhat一些重要的信息。 firstboot --disable |
selinux |
关闭selinux 。selinux --disabled |
firewall |
关闭防火墙。firewall --disabled |
logging |
设置日志级别。logging --level=info |
reboot |
设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt 关机。 |
[root@linux-node1 ~]# vim /var/www/html/ks_config/CentOS-6.7-ks.cfg
# Kickstart Configurator for CentOS 6.7 by idys
install
url --url="http://10.0.0.7/CentOS-6.7/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%post
wget -O /tmp/optimization.sh http://10.0.0.7/ks_config/optimization.sh &>/dev/null
/bin/sh /tmp/optimization.sh # 代表之后执行一个脚本
%end
# Kickstart file automatically generated by anaconda.
install
url --url=http://192.168.21.128/os/
lang en_US.UTF-8
zerombr yes
key --skip
keyboard us
network --device eth0 --bootproto dhcp --onboot on
#network --device eth0 --bootproto static --ip 192.168.21.250 --netmask 255.255.255.0 --gateway 192.168.21.2 --nameserver 8.8.8.8 --hostname CentOS5.10
rootpw --iscrypted $1$QqobZZ1g$rYnrawi9kYlEeUuq1vcRS/
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux
clearpart --all --initlabel
part / --bytes-per-inode=4096 --fstype="ext3" --size=2048
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=128
part swap --bytes-per-inode=4096 --fstype="swap" --size=500
part /data --bytes-per-inode=4096 --fstype="ext3" --grow --size=1
reboot
%packages
ntp
expect
@base
@core
@dialup
@editors
@text-internet
keyutils
trousers
fipscheck
device-mapper-multipath
%post
#同步系统时间
ntpdate cn.pool.ntp.org
hwclock --systohc
echo -e "0 1 * * * root /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null" >> /etc/crontab
service crond restart
#添加用户组
groupadd maintain
groupadd develop
mkdir -p /home/maintain
mkdir -p /home/develop
#添加用户
useradd -g maintain user01 -d /home/maintain/user01 -m
echo "123456"|passwd user01 --stdin
useradd -g maintain user02 -d /home/maintain/user02 -m
echo "123456"|passwd user02 --stdin
useradd -g maintain user03 -d /home/maintain/user03 -m
echo "123456"|passwd user03 --stdin
useradd -g maintain user04 -d /home/maintain/user04 -m
echo "123456"|passwd user04 --stdin
#禁止root用户直接登录系统
sed -i "s/#PermitRootLogin yes/PermitRootLogin no/g" '/etc/ssh/sshd_config'
service sshd restart
#禁止开机启动的服务
chkconfig acpid off
chkconfig atd off
chkconfig autofs off
chkconfig bluetooth off
chkconfig cpuspeed off
chkconfig firstboot off
chkconfig gpm off
chkconfig haldaemon off
chkconfig hidd off
chkconfig ip6tables off
chkconfig isdn off
chkconfig messagebus off
chkconfig nfslock off
chkconfig pcscd off
chkconfig portmap off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig yum-updatesd off
chkconfig sendmail off
#允许开机启动的服务
chkconfig crond on
chkconfig kudzu on
chkconfig network on
chkconfig readahead_early on
chkconfig sshd on
chkconfig syslog on
#禁止使用Ctrl+Alt+Del快捷键重启服务器
sed -i "s/ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/#ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/g" '/etc/inittab'
telinit q
#优化系统内核
echo -e "ulimit -c unlimited" >> /etc/profile
echo -e "ulimit -s unlimited" >> /etc/profile
echo -e "ulimit -SHn 65535" >> /etc/profile
source /etc/profile
sed -i "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g" '/etc/sysctl.conf'
echo -e "net.core.somaxconn = 262144" >> /etc/sysctl.conf
echo -e "net.core.netdev_max_backlog = 262144" >> /etc/sysctl.conf
echo -e "net.core.wmem_default = 8388608" >> /etc/sysctl.conf
echo -e "net.core.rmem_default = 8388608" >> /etc/sysctl.conf
echo -e "net.core.rmem_max = 16777216" >> /etc/sysctl.conf
echo -e "net.core.wmem_max = 16777216" >> /etc/sysctl.conf
echo -e "net.ipv4.netfilter.ip_conntrack_max = 131072" >> /etc/sysctl.conf
echo -e "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180" >> /etc/sysctl.conf
echo -e "net.ipv4.route.gc_timeout = 20" >> /etc/sysctl.conf
echo -e "net.ipv4.ip_conntrack_max = 819200" >> /etc/sysctl.conf
echo -e "net.ipv4.ip_local_port_range = 10024 65535" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_retries2 = 5" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_syn_retries = 1" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_synack_retries = 1" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_tw_len = 1" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_keepalive_time = 120" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_keepalive_probes = 3" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_keepalive_intvl = 15" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_max_tw_buckets = 36000" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_max_orphans = 3276800" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_max_syn_backlog = 262144" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_wmem = 8192 131072 16777216" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_rmem = 32768 131072 16777216" >> /etc/sysctl.conf
echo -e "net.ipv4.tcp_mem = 94500000 915000000 927000000" >> /etc/sysctl.conf
/sbin/sysctl -p
#执行外部脚本
cd /root
wget http://192.168.21.128/autoip.sh
sh /root/autoip.sh
# 最精简配置
[root@linux-node1 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0 # 开启会显示命令行'boot: '提示符。prompt值为0时则不提示,将会直接启动'default'参数中指定的内容。
label ks
kernel vmlinuz
append initrd=initrd.img ks=http://10.0.0.7/ks_config/CentOS-6.7-ks.cfg # 告诉安装程序ks.cfg文件在哪里
# append initrd=initrd.img ks=http://10.0.0.7/ks_config/CentOS-6.7-ks.cfg ksdevice=eth0
# ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth1安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。
system-config-kickstart
工具[root@idys html] yum groupinstall -y "X Window System"
[root@idys html] yum grouplist # 查看软件包组
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Environment Groups:
GNOME Desktop
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
Basic Web Server
Virtualization Host
Server with GUI
KDE Plasma Workspaces
Development and Creative Workstation
Installed Groups:
Graphical Administration Tools
Available Groups:
Compatibility Libraries
Console Internet Tools
Development Tools
Legacy UNIX Compatibility
Scientific Support
Security Tools
Smart Card Support
System Administration Tools
System Management
Done
[root@idys html] yum -y groupinstall "Graphical Administration Tools" "GNOME Desktop" #安装GNOME 桌面
[root@idys html] yum -y install system-config-kickstart # 安装kickstart 图形化配置界面
[root@idys html] system-config-kickstart # 启动图形化的界面配置ks.cfg文件
ks.cfg
由于多个客户端可以从一个PXE服务器引导,PXE
引导映像使用了一个复杂的配置文件搜索方式来查找针对客户机的配置文件。如果客户机的网卡的MAC
地址为8F:3H:AA:6B:CC:5D
,对应的IP地址为10.0.0.195
,那么客户机首先尝试以MAC地址为文件名匹配的配置文件,如果不存在就以IP
地址来查找。根据上述环境针对这台主机要查找的以一个配置文件就是 /tftpboot/pxelinux.cfg/01-8F:3H:AA:6B:CC:5D
。如果该文件不存在,就会根据IP
地址来查找配置文件了,这个算法更复杂些,PXE
映像查找会根据IP
地址16
进制命名的客户机配置文件。例如:10.0.0.195
对应的16
进制的形式为C0A801C3
。(可以通过syslinux
软件包提供的gethostip
命令将10
进制的IP
转换为16
进制)
如果C0A801C3
文件不存在,就尝试查找C0A801C
文件,如果C0A801C
也不存在,那么就尝试C0A801
文件,依次类推,直到查找C
文件,如果C
也不存在的话,那么最后尝试default
文件。
总体来说,pxelinux
搜索的文件的顺序是:
/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/tftpboot/pxelinux.cfg/C0A801C3
/tftpboot/pxelinux.cfg/C0A801C
/tftpboot/pxelinux.cfg/C0A801
/tftpboot/pxelinux.cfg/C0A80
/tftpboot/pxelinux.cfg/C0A8
/tftpboot/pxelinux.cfg/C0A
/tftpboot/pxelinux.cfg/C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default
Cobbler
是一个Linux
服务器安装的服务,可以通过网络启动(PXE
)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP
,DNS
等。Cobbler
可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web
),还提供了API
接口,可以方便二次开发使用。Cobbler
是较早前的kickstart
的升级版,优点是比较容易配置,还自带web界面比较易于管理。Cobbler
内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet
。Cobbler
的配置结构基于一组注册的对象。每个对象表示一个与另一个实体相关联的实体。当一个对象指向另一个对象时,它就继承了被指向对象的数据,并可覆盖或添加更多特定信息。
distros
): 表示一个操作系统。它承载了内核和initrd
的信息,以及内核参数等其他数据。profiles
):包含一个发行版、一个kickstart
文件以及可能的存储库,还包括更多特定的内核参数等其他数据。systems
):表示要配给的机器。它包括一个配置文件或一个镜像、IP
和MAC
地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息。images
):可以替换一个保函不屑于此类别的文件的发行版对象(例如,无法分为内核和initrd
的对象)。PXE
服务支持DHCP
服务管理DNS
服务管理Kickstart
服务支持YUM
仓库管理TFTP
Apache
Server端
Cobbler
服务Cobbler
错误检查,执行cobbler check
命令cobbler sync
命令TFTP
目录中DHCP
服务,提供地址分配DHCP
服务分配IP地址TFTP
传输启动文件Server
端接收安装信息Server
端发送ISO
镜像与Kickstart
文件Client端
PXE
模式启动IP
地址TFTP
服务器获取启动文件Cobbler
安装选择界面Kickstart
文件DHCP
服务,网卡设置为NAT
模式,或者仅主机[root@idys ~] cat /etc/redhat-release #CentOS 7.7 的操作系统
CentOS Linux release 7.7.1908 (Core)
[root@idys ~] uname -r # 3.10 的内核
3.10.0-1062.el7.x86_64
[root@idys ~] uname -m
x86_64
uuid
,设置其他选项[root@idys ~] vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE="Ethernet"
PROXY_METHOD="static"
# 将网络获取方式设置为 static
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
DEVICE="ens32"
# 删除UUID
ONBOOT="yes"
# 设置网卡开机自启动
IPADDR="192.168.200.171"
# 修改ip地址
PREFIX="24"
GATEWAY="192.168.200.2"
# 修改网关
DNS1="114.114.114.114"
DNS2="8.8.8.8"
# 设置dns
IPV6_PRIVACY="no"
SElinux
,挂载CentOS7镜像文件,更换镜像源[root@idys ~] systemctl stop firewalld # 关闭防火墙
[root@idys ~] systemctl disable firewalld #设置开机不自动启动
[root@idys ~] setenforce 0 # 临时关闭Selinux
[root@idys ~] getenforce
Permissive
[root@idys ~] sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config #永久关闭selinux
[root@idys ~] blkid /dev/sr0
/dev/sr0: UUID="2019-09-09-19-08-41-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" # 查看镜像挂载情况
[root@idys ~] vi /etc/fstab # 编辑镜像文件,将Centos7 的系统盘挂载在/media/cdrom下
#
# /etc/fstab
# Created by anaconda on Mon May 18 18:18:33 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=64dc3aa5-03c8-4087-a410-5d324b56dcb9 / xfs defaults 0 0
UUID=f5da9f3b-36f9-4be9-b435-8f05c36aa437 /boot xfs defaults 0 0
UUID=8b92b2a4-2545-413a-944a-ce22c851feec swap swap defaults 0 0
UUID=2019-09-09-19-08-41-00 /media/cdrom iso9660 defaults 0 0
[root@idys ~] mount -a # 重新挂载
mount: /dev/sr0 is write-protected, mounting read-only
# 更换为中科大镜像源
[root@idys ~] sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-Base.repo
[root@idys ~] yum clean all #清楚缓存
Loaded plugins: fastestmirror
Cleaning repos: base extras updates
[root@idys ~] yum makecache # 重新编译缓存
epel
源,安装cobbler
及其组件[root@idys ~] yum -y install epel-release #配置epel源
[root@idys ~] yum -y install cobbler cobbler-web tftp-server dhcp httpd xinetd pykickstart
*************************************************
rsync.x86_64 0:3.1.2-10.el7
syslinux.x86_64 0:4.05-15.el7
yum-utils.noarch 0:1.1.31-54.el7_8
Dependency Updated:
dhclient.x86_64 12:4.2.5-79.el7.centos dhcp-common.x86_64 12:4.2.5-79.el7.centos
dhcp-libs.x86_64 12:4.2.5-79.el7.centos libxml2.x86_64 0:2.9.1-6.el7.4
Complete!
#安装 cobbler cobbler-web tftp-server dhcp httpd xinetd pykickstart
[root@linux-node1 ~]# rpm -ql cobbler # 查看安装的文件,下面列出部分。
/etc/cobbler # 配置文件目录
/etc/cobbler/settings # cobbler主配置文件,这个文件是YAML格式,Cobbler是python写的程序。
********
/etc/cobbler/dhcp.template # DHCP服务的配置模板
/etc/cobbler/tftpd.template # tftp服务的配置模板
/etc/cobbler/rsync.template # rsync服务的配置模板
/etc/cobbler/iso # iso模板配置文件目录
/etc/cobbler/pxe # pxe模板文件目录
/etc/cobbler/power # 电源的配置文件目录
/etc/cobbler/users.conf # Web服务授权配置文件
/etc/cobbler/users.digest # 用于web访问的用户名密码配置文件
/etc/cobbler/dnsmasq.template # DNS服务的配置模板
/etc/cobbler/modules.conf # Cobbler模块配置文件
****************
/var/lib/cobbler # Cobbler数据目录
/var/lib/cobbler/config # 配置文件
/var/lib/cobbler/kickstarts # 默认存放kickstart文件
/var/lib/cobbler/loaders # 存放的各种引导程序
**************
/var/www/cobbler # 系统安装镜像目录
/var/www/cobbler/ks_mirror # 导入的系统镜像列表
/var/www/cobbler/images # 导入的系统镜像启动文件
/var/www/cobbler/repo_mirror # yum源存储目录
*************
/var/log/cobbler # 日志目录
/var/log/cobbler/install.log # 客户端系统安装日志
/var/log/cobbler/cobbler.log # cobbler日志
Cobbler
和httpd
服务[root@idys ~] systemctl start httpd cobblerd
[root@idys ~]
[root@idys ~] systemctl enable httpd cobblerd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/cobblerd.service to /usr/lib/systemd/system/cobblerd.service.
检查Cobbler
的配置,如果看不到下面的结果,再次重启cobbler
:systemctl restart cobbler
cobbler
的配置文件[root@idys ~] cp /etc/cobbler/settings{
,.ori}
[root@idys ~] sed -ri '/allow_dynamic_settings:/c\allow_dynamic_settings: 1' /etc/cobbler/settings
[root@idys ~] grep allow_dynamic_settings /etc/cobbler/settings
allow_dynamic_settings: 1
[root@idys ~] systemctl restart cobblerd # 重启cobbler服务
Cobbler
服务器IP
[root@idys ~] cobbler setting edit --name=server --value=192.168.200.171
[root@idys ~] grep ^server: /etc/cobbler/settings
server: 192.168.200.171
next_server
,如果用Cobbler
管理DHCP
,修改本项,作用不解释,看kickstart
。[root@idys ~] cobbler setting edit --name=next_server --value=192.168.200.171
[root@idys ~] grep ^next_server:.* /etc/cobbler/settings
next_server: 192.168.200.171
cobbler
管理DHCP
[root@idys ~] cobbler setting edit --name=manage_dhcp --value=1
[root@idys ~] grep ^manage_dhcp: /etc/cobbler/settings
manage_dhcp: 1
PXE
启动。[root@idys ~] cobbler setting edit --name=pxe_just_once --value=1
[root@idys ~] grep ^pxe_just_once: /etc/cobbler/settings
pxe_just_once: 1
tftp server
[root@idys ~] sed -ri '/disable/c\disable = no' /etc/xinetd.d/tftp
[root@idys ~] systemctl enable xinetd
[root@idys ~] systemctl restart xinetd
boot-loader
,发现下载boot-loader
报错[root@idys ~] cobbler get-loaders
task started: 2020-08-02_161756_get_loaders
task started (id=Download Bootloader Content, time=Sun Aug 2 16:17:56 2020)
downloading https://cobbler.github.io/loaders/README to /var/lib/cobbler/loaders/README
Exception occured:
Exception value: [Errno 14] curl#60 - "Issuer certificate is invalid."
Exception Info:
File "/usr/lib/python2.7/site-packages/cobbler/remote.py", line 82, in run
rc = self._run(self)
File "/usr/lib/python2.7/site-packages/cobbler/remote.py", line 176, in runner
return self.remote.api.dlcontent(self.options.get("force",False), self.logger)
File "/usr/lib/python2.7/site-packages/cobbler/api.py", line 735, in dlcontent
return grabber.run(force)
File "/usr/lib/python2.7/site-packages/cobbler/action_dlcontent.py", line 73, in run
urlgrabber.grabber.urlgrab(src, filename=dst, proxies=proxies)
File "/usr/lib/python2.7/site-packages/urlgrabber/grabber.py", line 773, in urlgrab
return default_grabber.urlgrab(url, filename, **kwargs)
File "/usr/lib/python2.7/site-packages/urlgrabber/grabber.py", line 1220, in urlgrab
return _run_callback(opts.failfunc, opts)
File "/usr/lib/python2.7/site-packages/urlgrabber/grabber.py", line 1071, in _run_callback
return cb(obj)
File "/usr/lib/python2.7/site-packages/urlgrabber/grabber.py", line 1065, in _do_raise
raise obj.exception
!!! TASK FAILED !!!
boot-loader
报错[root@idys ~] yum -y install syslinux
[root@idys ~] cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
[root@idys ~] cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/
[root@idys ~] systemctl restart cobblerd # 重启cobbler
[root@idys ~] cd /var/lib/cobbler/loaders/
[root@idys loaders] ls #查看loader内容
COPYING.elilo COPYING.yaboot grub-x86_64.efi menu.c32 README
COPYING.syslinux elilo-ia64.efi grub-x86.efi pxelinux.0 yaboot
rsyncd
,并且设置为开机自启动[root@idys ~] systemctl start rsyncd
[root@idys ~] systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
root
密码150722
。下面的命令来源于提示6。random-phrase-here
为干扰码,可以自行设定。[root@idys ~] openssl passwd -1 -salt 'idys' '150722' #设置干扰码为idys
$1$idys$GnFZqOWqoDOT4lRj8o95r0
[root@idys ~] cobbler setting edit --name=default_password_crypted --value='$1$idys$GnFZqOWqoDOT4lRj8o95r0'
fence-agents
[root@idys ~] yum -y install fence-agents
cobbler
,第二项可以不需要[root@idys loaders] cobbler check
The following are potential configuration items that you may want to fix:
1 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:
https://github.com/cobbler/cobbler/wiki/Selinux
2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
dhcp
,修改cobbler
的dhcp
模块,不要直接修改dhcp
本身的配置文件,因为cobbler
会覆盖[root@idys loaders] grep ^manage_dhcp /etc/cobbler/settings # 查看是否设置cobbler 管理dhcp
manage_dhcp: 1
[root@idys loaders] vim /etc/cobbler/dhcp.template #仅列出修改项
******************
******************
******************
subnet 192.168.200.0 netmask 255.255.255.0 {
option routers 192.168.200.2; #网关
option domain-name-servers 114.114.114.114; #dns
option subnet-mask 255.255.255.0; #掩码
range dynamic-bootp 192.168.200.180 192.168.200.250; #ip地址池
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
cobbler
配置[root@idys loaders] cobbler sync #同步cobbler配置
task started: 2020-08-02_165906_sync
task started (id=Sync, time=Sun Aug 2 16:59:06 2020)
running pre-sync triggers
cleaning trees
removing: /var/lib/tftpboot/grub/images
copying bootloaders
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying: /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
copying: /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
copying distros to tftpboot
copying images
generating PXE configuration files
generating PXE menu structure
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
cleaning link caches
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout:
received on stderr: Redirecting to /bin/systemctl restart dhcpd.service
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.manage_genders
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
cobbler
命令帮助命令 | 说明 |
---|---|
cobbler check | 核对当前设置是否有问题 |
cobbler list | 列出所有的cobbler元素 |
cobbler report | 列出元素的详细信息 |
cobbler sync | 同步配置到数据目录,更改配置最好都执行一下 |
cobbler reposync | 同步yum仓库 |
cobbler distro | 查看导入的发行版系统信息 |
cobbler system | 查看添加的系统信息 |
cobbler profile | 查看配置信息 |
Cobbler
配置安装Centos7.x
[root@idys loaders] ls /media/cdrom/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@idys loaders] cobbler import --path=/media/cdrom --name=CentOS7.7 --arch=x86_64
# --path 镜像路径
# --name 为安装源定义一个名字
# --arch 指定安装源是32位、64位、ia64, 目前支持的选项有: x86│x86_64│ia64
# 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:CentOS7.7,如果重复,系统会提示导入失败。
[root@idys ~] cobbler distro report --name=CentOS7.7-x86_64
Name : CentOS7.7-x86_64
Architecture : x86_64
TFTP Boot Files : {
}
Breed : redhat
Comment :
Fetchable Files : {
}
Initrd : /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/initrd.img
Kernel : /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/vmlinuz
Kernel Options : {
}
Kernel Options (Post Install) : {
}
Kickstart Metadata : {
'tree': 'http://@@http_server@@/cblr/links/CentOS7.7-x86_64'}
Management Classes : []
OS Version : rhel7
Owners : ['admin']
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Template Files : {
}
profile
信息[root@idys ~] cobbler profile report --name=CentOS7.7-x86_64
Name : CentOS7.7-x86_64
TFTP Boot Files : {
}
Comment :
DHCP Tag : default
Distribution : CentOS7.7-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {
}
Kernel Options : {
}
Kernel Options (Post Install) : {
}
Kickstart : /var/lib/cobbler/kickstarts/sample_end.ks
Kickstart Metadata : {
}
Management Classes : []
Management Parameters : <<inherit>>
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Internal proxy :
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Repos : []
Server Override : <<inherit>>
Template Files : {
}
Virt Auto Boot : 1
Virt Bridge : xenbr0
Virt CPUs : 1
Virt Disk Driver Type : raw
Virt File Size(GB) : 5
Virt Path :
Virt RAM (MB) : 512
Virt Type : kvm
copy
一份profile
文件(ks
),进行修改[root@idys kickstarts] cp sample_end.ks CentOS7.ks
[root@idys kickstarts] ls
CentOS7.ks install_profiles sample_end.ks sample_esxi6.ks sample.seed.28
default.ks legacy.ks sample_esx4.ks sample.ks
esxi4-ks.cfg pxerescue.ks sample_esxi4.ks sample_old.seed
esxi5-ks.cfg sample_autoyast.xml sample_esxi5.ks sample.seed
[root@idys kickstarts] vim CentOS7.ks
# This kickstart file should only be used with EL > 5 and/or Fedora > 7.
# For older versions please use the sample.ks kickstart file.
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --enabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $default_password_crypted
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone America/New_York
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Allow anaconda to partition the system as needed
part swap --fstype="swap" --ondisk=sda --size=2048
part /boot --fstype="xfs" --ondisk=sda --size=200
part / --fstype="xfs" --ondisk=sda --size=10240
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
%packages
CentOS7.7
镜像所使用的kickstart
文件[root@idys kickstarts] cobbler profile edit --name=CentOS7.7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS7.ks
[root@idys kickstarts] cobbler profile report --name=CentOS7.7-x86_64 | grep kickstart
Kickstart : /var/lib/cobbler/kickstarts/CentOS7.ks
[root@idys loaders] cobbler sync
task started: 2020-08-02_174040_sync
task started (id=Sync, time=Sun Aug 2 17:40:40 2020)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS7.7-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/grub-x86.efi
removing: /var/lib/tftpboot/grub/grub-x86_64.efi
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/images/CentOS7.7-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying: /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
copying: /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
copying distros to tftpboot
copying files for distro: CentOS7.7-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS7.7-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS7.7-x86_64/initrd.img
copying images
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS7.7-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS7.7-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS7.7-x86_64/initrd.img
Writing template files for CentOS7.7-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS7.7-x86_64
cleaning link caches
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout:
received on stderr: Redirecting to /bin/systemctl restart dhcpd.service
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.manage_genders
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
说明:在
client
端系统安装时,可以在cobbler
服务端上查看日志/var/log/messages
,观察安装的每一个流程
[root@idys loaders] cobbler distro list # 查看镜像列表
CentOS7.7-x86_64
cobbler
会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirror
下的CentOS7.7-x86_64
目录下。因此/var/www/cobbler
目录必须具有足够容纳安装文件的空间。[root@idys loaders] cd /var/www/cobbler/ks_mirror/
[root@idys ks_mirror] ls
CentOS7.7-x86_64 config
[root@idys ks_mirror] du -sh CentOS7.7-x86_64/
11G CentOS7.7-x86_64/
CentOS7
系统有一个地方变了,就是网卡名变成eno16777736
这种形式,但是为了运维标准化,我们需要将它变成我们常用的eth0
,因此使用下面的参数。但要注意是CentOS7
才需要下面的步骤,CentOS6
不需要。[root@idys ~] cobbler profile edit --name=CentOS7.7-x86_64 --kopts='net.ifnames=0 biosdevname=0
发现网址不是自己的可以修改
[root@idys ks_mirror] vim /etc/cobbler/pxe/pxedefault.template # 修改网址显示的配置文件
DEFAULT menu
PROMPT 0
MENU TITLE Cobbler | http://www.idayuanshuai.com/ #修改的位置
TIMEOUT 200
TOTALTIMEOUT 6000
ONTIMEOUT $pxe_timeout_profile
LABEL local
MENU LABEL (local)
MENU DEFAULT
LOCALBOOT -1
$pxe_menu_items
MENU end
~ **********
"/etc/cobbler/pxe/pxedefault.template" 15L, 242C written
[root@idys ks_mirror] cobbler sync
task started: 2020-08-02_181832_sync
task started (id=Sync, time=Sun Aug 2 18:18:32 2020)
running pre-sync triggers
***************
kickstart
配置文件解析kickstart自动应答文件选项非常多,以下只说明CentOS 6下几个常用的可能用到的选项。另外,CentOS 6和CentOS 7的选项有不小区别,所以请注意使用,可以查看官方安装文档。
以下是CentOS 6上kickstart选项说明:在最后还给出了一个kickstart文件的示例。
#文件由三部分组成
#一是选项指令段,用于自动应答图形界面安装时除包选择外的所有手动操作
#二是package选择段,使用%packages引导该功能
#三是脚本段,该段可有可无,分为两种:
# (1) %pre 预安装脚本段,在安装系统之前就执行的脚本,该段很少使用,因为可用的命令太少
# (2) %post 后安装脚本段,在系统安装完成后执行的脚本
# kickstart选项指令段的说明:
【必须的选项】:
1.auth或者authconfig :验证选项
--useshadow或者--enableshadow启用shadow文件来验证
--passalgo=sha512使用sha512算法
2.bootloader: 指定如何安装引导程序,要求必须已选择分区、已选择引导程序、已选择软件包,如果没选择将会停止而不会询问
--location=mbr 指定引导程序的位置,默认为mbr,还可以指定none或者包含bootloader的引导块所在分区
--driveorder=sda 指定grub安装在哪个分区以及指定寻找顺序,--driverorder=sda sdc sdb
--append="crashkernel=auto rhgb quiet" 指定内核参数
3.keyboard:指定键盘类型,一般使用美式键盘"keyboard us",新版的kickstart的格式有所变化,但也支持"keyboard us"这样的老格式
4.lang:指定语言,如"lang en_US.UTF-8"5.rootpw:设置root用户的密码
--iscrypted:使用加密密码,可以使用MD5,SHA-256,sha-512等。
如:rootpw --iscrypted $6$kxEBpy0HqHiY2Tsx$FTAqbjHs6x0VruChfYKxVeKLlxPuY0LXK7RxAVdu3uUivGclMUEz.i4ARlsMpqe1bf379uEgWOSFqGtZxqrwg.
其中SHA-512位的加密密码在CentOS 6上可以使用"grub-crypt --sha-512"生成,CentOS7上可以使用python等工具来生成,如下:
python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
【可选的选项】:
1.selinux:设置selinux,值为enforcing,permissice,disable之一
2.autostep: 交互式,和interactive类似
3.interactive: 使用kickstart文件指定的参数交互式安装,但仍会给出每一步的选择项,如果直接下一步就使用kickstart参数
4.cmdline:在完全非交互的命令行模式下进行安装
5.driverdisk:指定驱动程序所在位置
drvierdisk --source=
6.firewall:设置firewall
--disable禁用防火墙
7.firstboot:
--disable:安装后第一次启动默认会给出很多需要手动配置的界面,禁用它
8.graphical:在图形模式下根据kickstart执行安装,默认该选项
9.text:文本模式下根据kickstart执行安装(既然使用kickstart了,当然建议选择使用纯文本模式而不是图形模式了)
9.1 skipx:不安装图形工具
10.halt/reboot:安装完成后关机还是reboot,默认是halt
11.ignoredisk:指定忽略的磁盘
12.install/upgrade:指定是安装还是升级系统
对于install,还必须指定下面几种安装方式之一:
cdrom:指定从第一个光盘驱动器安装
harddrive:指定从本地硬盘安装,要求硬盘必须是vfat或者ext2文件系统格式
--biospart:指定从bios类型的分区来安装,如82文件系统类型号的分区
--partition:从某个分区安装
--dir:指定从包含install-tree(安装树)的目录安装
例如:harddrive --partition=hdb2 --dir=/tmp/install-tree
nfs:指定从nfs路径安装
--server:指定nfs服务器主机名或IP
--dir:指定包含install-tree的目录
--opts:指定挂载NFS的mount选项
如:nfs --server=172.16.10.10 --dir=/export_path
url:指定从ftp、http、https安装
例如:url --url ftp://172.16.10.10
13.loggin:指定安装过程中的错误日志位置
--host:指定日志将发送到那台主机上
--port:如果远程主机的rsyslog使用非默认端口,则应该指定该端口选项
--levle:指定日志级别
13.network:为系统配置网络信息,并在安装过程中激活该网络设备。可多次使用network指令,例如既设置网络,又设置主机名
--bootproto:dhcp或static;对于static则必须指定IP地址、子网掩码、网关和DNS
--device:网卡名,可以使用eth0类似的名称来指定
--hostname:指定主机名
--onboot:是否在引导系统时启用指定的设备
如:
network --bootproto=static --ip=192.168.100.2 --netmask=255.255.255.0 --gateway=192.168.100.254 --nameserver=8.8.8.8
network --bootproto=dhcp --device=eth0 --noipv6
network --hostname=node1.xuexi.com
15.autopart: 自动创建几个分区:大于1G的根分区,250M的boot分区和swap分区
16.zerombr:清除磁盘的mbr
17.clearpart: 在安装系统前清除分区,如果指定该选项则必须指定正确
--all:清除所有分区
--Linux:清除Linux分区
--none:不清除分区
--initlabel:创建标签,对于没有MBR或者GPT的新硬盘,该选项是必须的
--drivers=sdb:清除指定的分区
所以,clearpart --all --initlabel是常见的方式
18.part:创建分区
--asprimary:强制指定为主分区
--grow:使用所有可用空间,即为其分配所有剩余空间。对于根分区至少需要3G空间(即使是--grow,也还是需要指定--size)
--ondisk:指定在哪块磁盘上创建分区。如果有多块磁盘,则需要指定在哪块磁盘上创建哪个分区,只有一块硬盘时可以省略该选项
如:
#part /boot --fstype=ext4 --asprimary --size=200 #boot分区200-250M足以
#part swap --fstype=swap --asprimary --size=2048
#part / --fstype=ext4 --grow --asprimary --size=2000
LVM的分区方法:
part /boot --fstype ext4 --size=100
part swap --fstype=swap --size=2048
part pv26 --size=100 --grow
volgroup VG00 --pesize=32768 pv26
logvol / --fstype ext4 --name=LVroot --vgname=VG00 --size=29984
logvol /data --fstype ext4 --name=LVdata --vgname=VG00 --size=100 --grow
19.repo:指定除自带的yum源外的其他yum源,可以指定多行yum源(既然是第一次装系统,基本都不会去加这项)
如:repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
20.services:设置默认运行级别下开机自启动的服务
--disable
--enable
disable先处理enable后处理
如services --disable auditd,cups,atd
21.timezone:指定时区
如:Asia/Shanghai
22.user:在系统中生成一个新用户
--name:指定用户名
--groups:指定辅助组,非默认组
--homedir:用户家目录,如果不指定则默认为/home/<username>
--password:该用户的密码,如果不指定或省略则创建后该用户处于锁定状态
--shell:用户的shell,不指定则默认
--uid:用户UID,不指定则自动分配一个非系统用户的UID
23.key:输入序列号,只在RedHat中有,CentOS系统没有该项
--skip 跳过key选项
# kickstart软件包或包组选项:
使用"%packages"表示该段内容,@表示选择的包组,最前面使用横杠表示取反,即不选择的包或包组。
@base和@core两个包组总是被默认选择,所以不必在%packages中指定它们
%packages
@base
@core
@debugging
@development
@dial-up
@hardware-monitoring
@performance
@server-policy
@workstation-policy
sgpio
device-mapper-persistent-data
systemtap-client
lrzsz
tree
%end
以下是CentOS 6.6下的ks文件示例。
install
text
nfs --server=192.168.100.100 --dir=/install
#url --url=http://192.168.100.100/centos6.6
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto quiet"
lang en_US.UTF-8
keyboard us
network --onboot=yes --device=eth0 --bootproto=dhcp --noipv6
rootpw --iscrypted $6$x4u9sIfSQsO7ddk5$/.0Xe6tFBY0uUmFFtyvAeY9YVPtcn8zl21fFNgmAoYtepQHRYDthQ4T1ZE12kDfAT6O3oXfRb7uv214t3Bb3K1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
reboot #安装结束后重启
#make partitions
zerombr
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=250
part / --fstype=ext4 --asprimary --grow --size=2000
part swap --fstype=swap --size=2000
%packages
@base
@core
@debugging
@development
@dial-up
@hardware-monitoring
@performance
@server-policy
@workstation-policy
sgpio
device-mapper-persistent-data
systemtap-client
%end
%post #结束后做的事
cat >>/etc/yum.repos.d/base.repo<<eof
[base]
name=sohu
baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch/
gpgcheck=0
enable=1
[epel]
name=epel
baseurl=http://mirrors.sohu.com/Fedora-epel/6Server/x86_64/
enable=1
gpgcheck=0
eof
sed -i "s/ONBOOT.*$/ONBOOT=yes/" /etc/sysconfig/network-scripts/ifcfg-eth0 #设置网卡为启动
sed -i "s/rhgb //" /boot/grub/grub.conf # 设置启动系统时不使用图形进度条方式
sed -i "s/HOSTNAME=.*$/HOSTNAME=xuexi.longshuai.com/" /etc/sysconfig/network #设置主机名
%end
web
界面有很多功能,包括上传镜像、编辑kickstart
、等等很多在命令行操作的都可以在web
界面直接操作。cobbler-web
软件,访问地址:https://IP/cobbler_web
即可。默认账号为cobbler
,密码也为cobbler
/etc/cobbler/users.conf #Web服务授权配置文件
/etc/cobbler/users.digest #用于web访问的用户名密码
[root@idys loaders] cat /etc/cobbler/users.digest
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3
Cobbler
组添加idys
用户,输入2
遍密码确认[root@idys loaders] htdigest /etc/cobbler/users.digest "Cobbler" idys
Adding user idys in realm Cobbler
New password:
Re-type new password:
[root@idys loaders] cobbler sync # 配置文件同步
task started: 2020-08-02_175359_sync
task started (id=Sync, time=Sun Aug 2 17:53:59 2020)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS7.7-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/grub-x86.efi
removing: /var/lib/tftpboot/grub/grub-x86_64.efi
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/images/CentOS7.7-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying: /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
copying: /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
copying distros to tftpboot
copying files for distro: CentOS7.7-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS7.7-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS7.7-x86_64/initrd.img
copying images
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS7.7-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS7.7-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS7.7-x86_64/initrd.img
Writing template files for CentOS7.7-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS7.7-x86_64
cleaning link caches
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout:
received on stderr: Redirecting to /bin/systemctl restart dhcpd.service
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.manage_genders
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
[root@idys loaders] systemctl restart httpd cobblerd #重启httpd 服务和 cobbler 服务
现在你可以通过用户名为idys用户登录 cobbler-web界面了
可能从学习kickstart
开始就有人想怎样能够指定某台服务器使用指定ks
文件,kickstart
实现这功能可能比较复杂,但是Cobbler
就很简单了。
区分一台服务器的最简单的方法就是物理MAC
地址。
物理服务器的MAC
地址在服务器上的标签上写了。
虚拟机的MAC查看
填上mac
地址之后就可以,不用选择自动安装了
[root@idys ks_mirror] cobbler system add --name=CentOS7-test --mac=00:0C:29:06:7D:4D --profile=CentOS7.7-x86_64 --ip-address=192.168.200.200 --subnet=255.255.255.0 --gateway=192.168.200.2 --interface=eth0 --static=1 --hostname=idayuanshuai.com --name-servers="114.114.114.114 8.8.8.8" # 指定网卡,mac地址,和网卡的各个选项
[root@idys ks_mirror] cobbler system list
CentOS7-test
[root@idys ks_mirror] cobbler sync
task started: 2020-08-02_185019_sync
task started (id=Sync, time=Sun Aug 2 18:50:19 2020)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS7.7-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/pxelinux.cfg/01-00-0c-29-06-7d-4d
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/grub-x86.efi
removing: /var/lib/tftpboot/grub/grub-x86_64.efi
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/grub/01-00-0C-29-06-7D-4D
removing: /var/lib/tftpboot/images/CentOS7.7-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying: /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
copying: /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
copying distros to tftpboot
copying files for distro: CentOS7.7-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS7.7-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS7.7-x86_64/initrd.img
copying images
generating PXE configuration files
generating: /var/lib/tftpboot/pxelinux.cfg/01-00-0c-29-06-7d-4d
generating: /var/lib/tftpboot/grub/01-00-0C-29-06-7D-4D
generating PXE menu structure
copying files for distro: CentOS7.7-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS7.7-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS7.7-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS7.7-x86_64/initrd.img
Writing template files for CentOS7.7-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS7.7-x86_64
cleaning link caches
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout:
received on stderr: Redirecting to /bin/systemctl restart dhcpd.service
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.manage_genders
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda2 10G 1.2G 8.9G 12% /
/dev/sda1 197M 120M 78M 61% /boot
tmpfs 182M 0 182M 0% /run/user/0
[root@localhost ~]# ping taobao.com
PING taobao.com (140.205.220.96) 56(84) bytes of data.
64 bytes from 140.205.220.96 (140.205.220.96): icmp_seq=1 ttl=128 time=47.7 ms
64 bytes from 140.205.220.96 (140.205.220.96): icmp_seq=2 ttl=128 time=46.1 ms
64 bytes from 140.205.220.96 (140.205.220.96): icmp_seq=3 ttl=128 time=51.1 ms
64 bytes from 140.205.220.96 (140.205.220.96): icmp_seq=4 ttl=128 time=51.1 ms
64 bytes from 140.205.220.96 (140.205.220.96): icmp_seq=5 ttl=128 time=47.8 ms
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:06:7d:4d brd ff:ff:ff:ff:ff:ff
inet 192.168.200.180/24 brd 192.168.200.255 scope global noprefixroute dynamic eth0
valid_lft 14793sec preferred_lft 14793sec
inet6 fe80::20c:29ff:fe06:7d4d/64 scope link noprefixroute
valid_lft forever preferred_lft forever