运维自动化之系统部署

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

运维自动化之系统部署

 运维自动化之系统部署

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

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

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文件,定义了加载内核文件的路径

第一种半自动化安装过程,通过光盘挂载到网络进行安装:

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

运维自动化之系统部署

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

第一步:cd /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 里边的地区,和开机后实行的对称秘钥脚本。

[~]#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== 
EOF
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized.keys

%end
%packages
@base

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

mkdir  /var/www/html/ksdir/{6,7}  新建一个文件夹
mv ks.cfg  /var/www/html/ksdir/6/ks6.mini.cfg  将应答文件放入到此目录文件下并起名叫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  安装完之后就会有图形界面。

待续: