运维自动化之系统部署

运维自动化发展历程及技术应用

 

什么是自动化的安装部署操作系统?

在工作中我们可能经常部署很多台主机,手工的一台一台的安装只适合主机非常少的情况,但大的互联网公司在一些特殊的日子要部署大量的主机,以应对要到来的特大流量访问。这时候我们就不能,一台一台的安装主机了,一是效率太慢,二是太累,三是费时间。基于这个情况我们可以自动化的一起部署很多的主机,而不用我们人工一台一台的去安装部署,节约了大量的时间。

centos 6的启动流程

1.POST开机加电自检

2.MBR 读取硬盘mbr引导的前446字节,属于grub的stage1第一阶段

3.进入grub的stage1.5阶段,加载/boot分区所在的文件系统驱动

4.进入grub的stage2阶段,关键的文件已经在/boot/grub目录里面了,关键的文件 有/boot/grub.grub.conf文件,文件里面kernel /vmlinuz root=/dev/sda2,定义了内核文件所在的位置

5.加载vmlinuz内核,完成以后找/根目录,想要加载根文件系统,需要识别根所在的文件系统驱动,配合/boot/目录里面两个重要的文件,一个是vmlinuz内核文件和initramfs驱动文件完成加载根文件系统

6.加载完成根文件系统以后,启动根下面的第一个进程/sbin/init,这个进程要读取/etc/inittab配置文件,决定后续加载的一些脚本的启动顺序,也定义了运行模式

7.运行第一个初始化脚本/etc/rc.d/rc.sysinit这个是真正的os初始化脚本,任何根据/etc/inittab配置文件默认模式运行相应的/etc/rc.d/rc*.d 里面的脚本,当然里面的脚本都是软链接,真正的脚本在/etc/rc.d/init.d里面,在/etc/rc.d/rc*.d目录下是以K和S开头的文件,执行相应模式关闭或开启的服务

8.无论哪种模式运行都要运行/etc/rc.local

9.最后执行/bin/login程序,等待用户的登录

 

实现半自动话安装过程:

在自动化安装系统之前我们可以先实现半自动化的安装,例如将系统放到U盘或者光盘中,这样我们插到主机上就可以实现自动化的安装,当然只适合小范围的安装

系统的安装程序叫anaconda

在安装完成操作系统以后会在root的目录里面自动出现一个文件anaconda-ks.cfg,这个文件就是anaconda安装向导在安装过程中生成的一个配置文件。

安装部署系统的时候在启动界面的一些基础设置

当我们安装一个新的操作系统的时候由于硬盘的MBR是空的系统任务硬盘不能引导所有自动切换到光盘引导

  • 第一项为正常启动
  • 第二项是加载最基本的显卡驱动
  • 第三项是救援模式
  • 第四项是直接在硬盘启动
  • 第五项是检查内存

按esc会出现一个boot界面:

 如果输入linux rescue/rescue就会进入救援模式:

 

 如果输入linux text为字符界面最小化安装界面,只输入linux命令就是正常安装。

 cat /misc/cd/isolinux/isolinux.cfg中有相关的救援模式、正常模式、及本机菜单等信息。

label linux  正常模式光盘安装
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
label rescue   救援模式信息
  menu indent count 5
  menu label ^Rescue a CentOS system
  text help
    If the system will not boot, this lets you access files
    and edit config files to try to get it booting again.
  endtext
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rescue quiet
label local     本地菜单
  menu label Boot from ^local drive
  localboot 0xffff

 安装程序的启动流程

1.MBR 放在了光盘的isolinux目录下的boot.cat文件里面

2. stage2阶段放在了isolinux目录下的isolinux.bin 文件里面,相当于硬盘里面的/boot/grub/目录下的文件

3. 配置文件在光盘的isolinux目录的isolinux.cfg文件,定义了加载内核文件的路径

我们来说一下centos6系统半自动化安装过程,通过光盘挂载到网络进行安装:

新加的光盘网络适配器需选择NAT模式:

在一个已经安装好的系统(centos6)将光盘挂载到网上: 

第一步:cd /var/www/html
 
第二步:mkdir -pv centos/{6,7}/os/x86_64/
 
第三步:mount /dev/sr0  /centos/6/os/x86_64/  挂载的路径就可以当yum源用来当做光盘做引导,下图为挂载后的文件信息。

  

第四步:制作应答文件,需要我们安装工具 :

由于制作应答文件的是一个图形化工具,所以要到图形化桌面执行

启动前在最好调一下分辨率

1)yum  install  system-config-kickstart

 system-config-kickstart 输入,进去之后注意调整分辨率,然后进行设置应答文件。

 

2)输入完密码,对勾去掉,密码就可见,在后面配置应答文件时,可以重新修改密码;下面是安装完之后重启,选择的第二个对勾是以最小化文本安装。

 

 3)选择http模式安装,并将挂载在网上的光盘路径写上。

4)给grub加入密码,并且可以给kerbel加内核参数:max_loop=100 selinux=0

 

5)对磁盘进行格式化和分区:

 

 6)设置网卡名称:

7)禁用selinux和防火墙

 

8)不安装图形界面

9)选择基本安装

 

10)将其配置文件保存到root目录:

 

 11)应答文件信息做完,以下是应答文件信息,vim  ks.cfg 里边的地区,和开机后实行的对称秘钥脚本。

 

[root@centos6~]#cat ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.34.100/centos/6/os/x86_64"  指定的挂载网络光盘路径
# Root password
rootpw --plaintext centos
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled  禁用的selinux
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai  将地址写成亚洲/上海
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --append="max_loop=100 selinux=0" --location=mbr --password="centos"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=500
part / --fstype="ext4" --size=10000
part /home --fstype="ext4" --size=20000
part swap --fstype="swap" --size=1024
  
%post
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/base.repo << EOF
[base]
basurl=http://192.168.34.100/centos/6/os/x86_64
gpgckeck=0
EOF
useradd wang
echo centos |passwd --stdin wang
  
mkdir /root/.ssh   生产公钥脚本
cat > /root/.ssh/authorized.keys << EOF  将已经安装好的centos6的id_rsa.pub公钥信息写入。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5hEv1/BQLBftA/tK5h+cF+zop59zMlpsMpXdaww8j3zktwSywDHhJI1cpWHS+rbUD1BKnapSL3Lfvi7o03rFAauAECgFjrJkAHX53Q1eh2ORfMpScaSPQ78CALSQ3pWN6Elgs6xwAAIc2MUXyoG5TTOJ0PSekzKrTww5xHuNsitXgrKfD2dBIAWFk7vwekk4kvRLBT3rbG19fYc0cTv9u+b6+Xi8EhpwR+v4BAN3eE+CFvEIsZDrp0ul566B9NZBBUBe8EJkr+H/dPRA4PR5Hctyhd27uE9hQ70QzBGBuhrL+NKxi3hRTWuLWoSUs3pP99x9km02FjzDDVOHWS7MVQ== root@centos6.10.localdomain
EOF
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized.keys
  
%end
%packages
@base
%end

 

12)下来在已装好的centos6将应答文件放到当时挂载光盘的网上:  

mkdir  /var/www/html/ksdir/{6,7}  新建一个文件夹
mv ks6.cfg  /var/www/html/ksdir/6/ks6_mini.cfg  将root下的应答文件放入到此目录文件下并起名叫ks6_mini.cfg

13)进入安装界面按esc,然后boot下输入内容,指定应答文件路径:直接回车就等待全部安装过程:

boot: linux ks=http://192.168.34.100/ksdir/6/ks6_mini.cfg  ip=192.168.34.123 netmask=255.255.255.0   指定一个能临时连接外网的IP地址,获取外网挂载的应答文件

 如果想安装图形界面,我们可以安装一个包组: yum groupinstall  desktop  安装完之后就会有图形界面,上面的半自动化系统安装完成。

 

我们来说一下centos6半自动化安装过程,在centos6基础上进行安装:

之前做的centos6要一直将本地光盘挂载到网页上,保证能访问:

service httpd start
 
mount  /dev/sr0 /var/www/html/centos/6/os/x86_64/

 制作iso格式的应答文件准备工作:

[root@centos6~]#mkdir /data/iso
 
[root@centos6data]#cp -r  /misc/cd/isolinux  /data/iso
 
[root@centos6data]#cp /var/www/html/ksdir/6/ks6_mini.cfg  /data/iso  将应答文件内容复制到iso文件中
 
[root@centos6iso]#mkdir ksdir 创建应答文件目录
 
[root@centos6iso]#mv ks6_mini.cfg  ksdir/  将应答文件放到此目录里

查看菜单里边的内容,修改isolinux.cfg应答文件内容:

[root@centos6iso]#tree
.
├── isolinux
│   ├── boot.cat
│   ├── boot.msg
│   ├── grub.conf
│   ├── initrd.img
│   ├── isolinux.bin
│   ├── isolinux.cfg   修改此配置文件里边的内容
│   ├── memtest
│   ├── splash.jpg
│   ├── TRANS.TBL
│   ├── vesamenu.c32
│   └── vmlinuz
└── ksdir
    └── ks6_mini.cfg

vim isolinux/isolinux.cfg:修改配置文件内容

label Auto    实现自动化安装
menu label ^Auto Install an system
menu default
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ksdir/ks6_mini.cfg  指定挂载在网上应答文件路径

label Manual  实现手动安装
menu label ^Manual Install an system
menu default
kernel vmlinuz
append initrd=initrd.img repo=http://192.168.34.100/centos/6/os/x86_64/  将挂载在网上的iso的yum源光盘路径写入

abel local    实现本地安装
menu label Boot from ^local drive
localboot 0xffff

将该配置文件转换成iso文件

[root@centos6~]#mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/iso/  将文件制定成iso文件,文件路径在/root/boot.iso家目录下
[root@centos6~]#sz boot.iso   将家目录的iso文件放到桌面,此文件只能做启动作用。

  注意:以上相对路径都是相对于光盘的根,和工作目录无关

然后将桌面的boo.iso文件进行放入到指定目录中:

开机启动,进入菜单界面,选择第一项,就是我们做的应答文件,点回车,等待安装结束:

 上面的系统安装过程已经完成。

 

下面我们来介绍怎么将iso 文件制作到硬盘里,作为启动文件,间接使用网上挂载的光盘安装过程:

注:将本地光盘要一直保持在网页上挂载状态,否则无法通过网页光盘安装。

[root@centos6~]#mount /dev/sr0 /var/www/html/centos/6/os/x86_64/  挂载光盘,不然没有光盘引导安装。
[root@centos6~]#service httpd start 服务启动,不起动无法加载

添加一个20G的硬盘:

[root@centos6x86_64]#echo "- - -" > /sys/class/scsi_host/host0/scan  将插入未识别的硬盘进行加载

[root@centos6~]isohybrid boot.iso  转换当前的iso文件

[root@centos6~]#dd if=/root/boot.iso of=/dev/sdb  将文件写入到sdb硬盘里
92160+0 records in
92160+0 records out
47185920 bytes (47 MB) copied, 1.33288 s, 35.4 MB/s
[root@centos6~]# sync  从缓存中写入到磁盘内
[root@centos6~]# sync
[root@centos6~]# sync
[root@centos6~]# sync

将制作好的文件路径去搜索,找到CensOS6.10-2.vadk文件名的文件,临时放到桌面

 然后将要安装的新系统文件进行添加镜像路径,选择现有虚拟机:

将制作好的iso文件导入:

 

 因为当前只会默认加载第一个硬盘启动,我们需要设置之前刻录的文件硬盘作为启动项,启动机器按esc进入bios界面设置,然后按最下面的setup选项,选择Hard Drive 硬盘设置,回车进入。

按+号将第二个硬盘置顶,然后按F10,保存重启,就开始选择自己的应答文件开始自动化安装整个过程,等待安装结束,整个安装就会结束。

 

 

硬盘引导安装方法完成。

 

我们来讲解怎么将ISO镜像和应答文件全部放在硬盘里安装系统:

在之前安装的基础上继续制作:

[root@centos66]#mkdir /data/fulliso
[root@centos66]#cp -rv /misc/cd/. /data/fulliso

[root@centos6fulliso]#find -name TRANS.TBL 
./Packages/TRANS.TBL
./EFI/BOOT/TRANS.TBL
./EFI/TRANS.TBL
./isolinux/TRANS.TBL
./TRANS.TBL
./images/pxeboot/TRANS.TBL
./images/TRANS.TBL
./repodata/TRANS.TBL
[root@centos6fulliso]#find -name TRANS.TBL -exec rm {} \; 删除里边特定的文件

[root@centos6fulliso]#rm -rf repodata/* 清空仓库,重新建内容 [root@centos6fulliso]#createrepo -g /misc/cd/repodata/5a045ecddfcca9dcbf1c28b6543e740de844ff4ef221e70308e7ad6decaea417-c6-x86_64-comps.xml ./ 在当前文件重新生成仓库的源数据 [root@centos6~]#cp anaconda-ks.cfg /data/fulliso 因为root里边有一个相关配置信息,可以对其里边的配置大概修改一下即可 [root@centos6fulliso]#mv anaconda-ks.cfg ks.cfg 将anaconda-ks.cfg 重新命名为ks.cfg

  

vim  ks.cfg

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$6pdd/ulLIO5IoQ2u$EKDznPOR19rWTeBjVVTYGay3PbNd3t0v9.Ae.jOsxP9i3T8khOMhDxDwTzfa9E3gqirD7qD3Pw6qK1
QKf2pDE0
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# 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 --all  清空磁盘
zerombr  格式化mbr
reboot  安装完重启
text   文本格式安装

part /boot --fstype=ext4 --size=1024  boot磁盘分区
part / --fstype=ext4 --size=100000   根磁盘分区
part /data --fstype=ext4 --size=50000   data磁盘分区

part swap --size=2048  swap磁盘分区


%packages
@base  安装基本包
%end

 制作应答文件:vim isolinux/isolinux.cfg

label Auto
  menu label ^Auto Install  an  system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg   指定应答文件路径

label Desktop
  menu label ^Desktop Install  an  system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks_desktop.cfg  备用:指定要安装的桌面应答文件路径


label local
  menu label Boot from ^local drive
  localboot 0xffff

将文件都打包制作成iso文件,生成文件默认保存在root下,名称叫centos6.iso

[root@centos6~]#mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.iso /data/fulliso

然后将文件传到桌面: sz centos6.iso

下来将压缩的iso文件导入当前路径:

 然后启动系统,按esc启动光盘安装,直接选择第一选项开始安装,直至结束。

 

 好了,小范围的Linux主机安装就介绍到这里,下章我们来学习批量自动化安装系统,敬请期待。

 

posted @ 2019-10-29 15:23  一叶知秋~~  阅读(2659)  评论(0编辑  收藏  举报