运维自动化之系统部署
运维自动化发展历程及技术应用
什么是自动化的安装部署操作系统?
在工作中我们可能经常部署很多台主机,手工的一台一台的安装只适合主机非常少的情况,但大的互联网公司在一些特殊的日子要部署大量的主机,以应对要到来的特大流量访问。这时候我们就不能,一台一台的安装主机了,一是效率太慢,二是太累,三是费时间。基于这个情况我们可以自动化的一起部署很多的主机,而不用我们人工一台一台的去安装部署,节约了大量的时间。
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 安装完之后就会有图形界面。
待续: