kickstart自动部署centos

工作中,我们有时候需要安装几十上百台服务器,这种情况下用u盘或者光驱逐台安装,太花时间与人力,显然不现实,所以应该选择自动化部署操作系统的方式,自动化部署操作系统的工具有很多,这里我用的是kickstart这个工具。


kickstart原理:

kickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。


kickstart工作流程:

客户机先从网络上启动,执行pxe程序(PXE的作用就像是在网卡ROM里的一个小小的操作系统,它把自己的网络引导功能提供给系统的BIOS,就可以通过网络启动linux),再向dhcp服务器请求IP地址,获得到dhcp服务器发来的IP地址之后会请求引导文件(pxelinux.0),服务器发送引导文件;客户机引导成功之后,再向服务器请求配置文件(pxelinux.cfg),服务器发送配置文件,再请求内核文件(vmlinuz),发送内核文件,请求传送根文件系统(initrd.img),然后内核启动,请求ks文件,安装程序会根据ks.cfg中设置的选项来安装系统。

工作流程图:

wKioL1jlCXrRgU8lAACRmc_7aeA800.png

实验


配置dhcp服务

[root@kickstartserver ~]# yum -y install dhcp

[root@kickstartserver ~]# vi /etc/dhcp/dhcpd.conf

subnet 192.168.23.0 netmask 255.255.255.0

{

range 192.168.23.230 192.168.23.250;

option broadcast-address 192.168.23.255;

option routers 192.168.23.254;

default-lease-time 3600;

max-lease-time 7200;

}

[root@kickstartserver ~]# systemctl restart dhcpd

[root@kickstartserver ~]# systemctl enable dhcpd

[root@kickstartserver ~]# firewall-cmd --permanent --add-service=dhcp

success

[root@kickstartserver ~]# firewall-cmd --reload

进入客户端BISO,设置从网络引导,然后开机,查看dhcp服务的日志

[root@kickstartserver ~]# systemctl status dhcpd -l

dhcpd.service - DHCPv4 Server Daemon

Loaded: loaded(/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)

Active: active (running) sinceMon 2017-4-05 23:01:23 EDT; 2min 22s ago

Docs: man:dhcpd(8)

man:dhcpd.conf(5)

Main PID: 4361 (dhcpd)

Status: "dispatchingpackets..."

CGroup:/system.slice/dhcpd.service

└─4361 /usr/sbin/dhcpd -f -cf/etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

Apr 05 23:01:23 kickstartserver.example.com dhcpd[4361]: Sendingon Socket/fallback/fallback-net

Apr 05 23:01:23 kickstartserver.example.com systemd[1]: Started DHCPv4Server Daemon.

Apr 05 23:03:23 kickstartserver.example.com dhcpd[4361]: DHCPdisCOVERfrom 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:24 kickstartserver.example.com dhcpd[4361]: DHCPOFFER on192.168.23.230 to 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:25 kickstartserver.example.com dhcpd[4361]: DHCPdisCOVERfrom 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:25 kickstartserver.example.com dhcpd[4361]: DHCPOFFER on192.168.23.230 to 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:29 kickstartserver.example.com dhcpd[4361]: DHCPdisCOVERfrom 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:29 kickstartserver.example.com dhcpd[4361]: DHCPOFFER on192.168.23.230 to 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:37 kickstartserver.example.com dhcpd[4361]: DHCPdisCOVERfrom 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:37 kickstartserver.example.com dhcpd[4361]: DHCPOFFER on192.168.23.230 to 00:0c:29:83:db:a3 via eno16777736

#可以看到客户机从服务端申请IP的过程


查看客户端开机引导界面,查看报错

wKioL1jlC5HAOQNsAAAEa62-afM179.png

#客户机已经获取到IP地址,但是没有获取到引导文件pxelinux.0,为了让客户机获取到这个文件,需要搭建tftp服务,并且要修改dhcp服务器的配置文件,在dhcp服务的配置文件中指定tftp服务器的地址和引导文件名称

ps:由于pxe的限制性,只能把引导文件放在tftp

[root@kickstartserver ~]# yum -y install tftp-server

[root@kickstartserver ~]# vi /etc/xinetd.d/tftp

service tftp

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /var/lib/tftpboot #tftp服务的默认目录

disable = no #yes改成no

per_source = 11

cps = 100 2

flags = IPv4

[root@kickstartserver ~]# yum -y install xinetd

[root@kickstartserver ~]# systemctl restart xinetd

[root@kickstartserver ~]# lsof -i:69

COMMAND PID USER FDTYPE DEVICE SIZE/OFF NODE NAME

xinetd 5171 root 5uIPv4 61272 0t0UDP *:tftp #UDP69端口在监听,说明tftp服务正常运行

next-server192.168.23.134; #tftp服务器的地址

filename"pxelinux.0"; #引导文件名称

[root@kickstartserver ~]# setenforce 0

[root@kickstartserver ~]# firewall-cmd --permanent --add-service=tftp

把引导文件pxelinux.0放置在tftp默认目录

[root@kickstartserver ~]# yum -y install syslinux

ps:syslinux是一个功能强大的引导加载程序

[root@kickstartserver ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@kickstartserver ~]# systemctl restart xinetd

查看客户端开机引导界面,查看报错

wKioL1jlC8mxCRI9AAAFWZ0thGk870.png

#客户机已经成功引导,但是没有获取到配置文件isolinux.cfg(用来指定内核文件在哪里),把isolinux.cfg文件放在/var/lib/tftpboot/pxelinux.cfg目录下并命名为default

[root@kickstartserver~]#mount /dev/sr0 /mnt

[root@kickstartserver~]#mkdir /var/lib/tftpboot/pxelinux.cfg

[root@kickstartserver~]#cp/mnt/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default

[root@kickstartserver~]# systemctl restart xinetd.service

查看客户端开机引导界面,查看报错

wKiom1jlC-uCbfdoAAAG8p_81qw156.png

#系统已经找到配置文件,但是找不到窗口模块,把窗口模块放置在tftp默认目录下

[root@kickstartserver~]# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/

wKiom1jlDCLyBqeBAAAOwLV9T-0996.png

#系统已经成功引导,也找到了配置文件和窗口模块,但是并没有找到内核vmlinuz,所在在此处选择第一项,无法进入,把内核拷贝到[root@kickstartserver~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/



wKiom1jl9a_TN9BRAAAumv0TdSM929.jpg

#启动客户机,报找不到驱动文件

[root@kickstartserver~]#cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/




wKiom1jl-LTDODDDAAChrbKCVZY037.jpg

#找不到安装源


ftp服务,用ftp服务来搭建安装源

[root@kickstartserver~]# yum -y install *ftP*

[root@kickstartserver~]# systemctl enable vsftpd

[root@kickstartserver~]# systemctl restart vsftpd

[root@kickstartserver~]# firewall-cmd --permanent --add-service=ftp

[root@kickstartserver~]# firewall-cmd --reload

[root@kickstartserver~]# mkdir /var/ftp/pub/iso

[root@kickstartserver~]# umount /mnt

[root@kickstartserver~]#mount /dev/sr0 /var/ftp/pub/iso


[root@kickstartserver~]# vi /var/lib/tftpboot/pxelinux.cfg/default

label linux

menu label ^Install CentOS 7

kernel vmlinuz

append initrd=initrd.imginst.stage2=ftp://192.168.23.134/pub/iso quiet

生成ks.cfg文件

[root@kickstartserver~]#yum -y install *kickstart*

[root@kickstartserver~]#system-config-kickstart #需要图形化界面的支持,用图形化界面生成ks.cfg文件,很简单,这里略过。

[root@kickstartserver~]#cp ks.cfg /var/ftp/pub/

[root@kickstartserver~]#vi /var/lib/tftpboot/pxelinux.cfg/default

append initrd=initrd.imginst.stage2=ftp://192.168.23.134/pub/iso quiet ks=ftp://192.168.23.134/pub/ks.cfg


[root@kickstartserver~]systemctl restart xinetd.service

[root@kickstartserver~]systemctl restart vsftpd.service

开启客户端,这时候便会开始自动安装

wKioL1jmEebw3DaOAADap2bgnNk556.jpg

如有纰漏,欢迎指正。

kickstart自动部署centos的更多相关文章

  1. ios中的.dylib和.a lib有什么区别?

    我知道Objectivec中的编译和运行时是什么,但是我想知道是什么画了这两个库之间的界限?他们的目的是什么,除了陈述一个是静态的而另一个是动态的?我们何时需要一个而不是另一个?

  2. xamarin.ios – ShareKit与MonoTouch如何?

    有人可以验证ShareKit实际上是否可用于MonoTouch并指导我完成使其工作所需的步骤?解决方法您首先从getsharekit.com下载还是使用ShareKit2.0?

  3. ios – iPhone崩溃日志不能正确地符号化并且是双重间隔的

    任何建议超过欢迎.谢谢.解决方法当这件事发生在我身上时,它只是我通过电子邮件收到的日志.如果我记得,至少有一些是在.msg文件中,我不得不把它们拿出来.它可能是Exchange编码更改.如果你显示不可见的字符,你可能会看到每个字符之间的东西.您可以找到并替换它们以删除它们或更改编辑器中的编码.

  4. ios – Xcode 7 beta 2:LaunchScreen.storyboard无法打开文档

    我在两个不同的Mac(iMac和MacBookpro)上收到这个错误.不知道为什么人们不能再现它,但我需要一些帮助.在运行XX优胜美地10.10.4的Mac上运行Xcode7beta2(15六月’15).甚至无法编译和运行我的项目..我从创建菜单创建了一个视图应用程序项目,就是这样.编辑:我试图删除并重新添加storyboard文件(也可以打开Main.storyboard插件),我仍然得到相同的

  5. ios – 为具有多个目标和不同平台的项目编写Podfile

    如何让CocoaPods成功整合到我的项目和iOS/Mac目标?我已经阅读了Podfile文档,但发现它在这方面缺乏.解决方法得到它了!从我的每个目标和运行的pod安装中删除libPods-xxxx.a文件,再次执行了我的目标集成.

  6. iOS中的CocoaPods是什么?

    任何人都可以详细说明iOS开发中的CocoaPods.我似乎无法理解它们是什么.提前致谢.解决方法CocoaPods是我在最近的iOS应用程序开发中发现的最好的东西之一.我用它来获取最新的Github开源项目作为框架和lib到我的项目中.最好的部分是它将自动管理依赖lib,因此无需拖放文件并下载文件夹blaablaaa只需一个简单的代码’podinstall即可!

  7. Swift 2/iOS 9 – libz.dylib找不到

    我在我的新的Swift2.0项目中使用一些来自google的外部代码,在早期版本中需要“libz.dylib”。更新到新的XCode/新的SDK后。

  8. android – 用我非常简单的calabash测试用例不断得到错误“HTTPClient :: ReceiveTimeoutError”

    我是calabash-android测试自动化库的新手.我花了两天时间来理解这个问题没有成功:(我正在使用calabash-android版本0.8.0,我按照文档pre-definedsteps进行测试.我的测试很简单,只需等待登录界面(这是一个包含id为“email_field”的输入字段的活动),输入用户名和密码.这是我在功能文件中的步骤:当我使用命令calabash-android运行my

  9. android – UnsatisfiedLInkError使用NDK链接到FFMPEG

    我使用bambuser的文件编译了FFMPEGforandroid.编译运行正常.没有错误.我还确保在build.sh中更改包名称.但是,一旦我尝试链接到文件,手机就会抛出UnsatisfiedLinkError.这是Androkd.mk文件:Video.c很简单:相应的Java代码也很简单:但我得到这个错误:我尝试用Java手动加载预构建的共享库(bambuser文件)(使用System.loa

  10. android – (Ionic 2)尝试回退到Cordova-lib执行时发生错误:TypeError:无法读取未定义的属性’then’

    编辑:当使用离子2时会发生这种情况.我知道它还不稳定,但我认为可能有一些修复,因为似乎其他人没有得到这个问题.编辑结束出于某种原因,我在尝试构建我的离子应用程序时突然开始出现此错误,使用“ionicbuildandroid”,以及“ionicbuildios”:我迷失在这里,不知道从哪里开始寻找.有没有人以前见过这个,能指出我正确的方向吗?

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部