以下的截图主要是用来说明自动化运维发展的阶段
第一阶段:全人肉阶段,此时是处于无流程规范的约束,所有的运维工作都是靠人去一步步执行,这将大大降低工作的效率,也容易带来误操作
第二阶段:工具化阶段,制定了规范制度,此时是通过编写脚本等工具来代替运维的大部分重复性工作。但是工具没有一个统一的管理平台
第三阶段:平台化阶段,此时通过完善规范来提高运维的效率,降低运维的误操作,平台在这个阶段完成,通过统一的平台,对机器进行管理,实现了企业化的平台统一管理
第四阶段:自驱动阶段,通过流程进行驱动,制度是关键,制度已经完善,系统出了问题,能够自己解决。
本文将介绍自动化运维的第一步,即实现自动化安装系统。本文将介绍两个方面的自动化安装:
1. 半自动化安装:通过光盘引导系统系统,然后手动指定kickstart文件,安装包源为系统的光盘或者是网络(这里包的路径是在kickstart文件里指定),安装过程由kickstart文件设定。
2. 本地自动化安装,通过自己生成一个本地的光盘文件,刻录在光盘或者U盘里,实现本地自动化安装,制作方法是:拷贝一份光盘的所有资料到本地路径,如/root/fulliso目录下,把kickstart文件放在该目录下,生成新的包依赖关系的文件,然后再通过命令mkisofs生成光盘文件。如果需要U盘启动,只需要通过dd命令将新生成的iso文件刻录到U盘里即可实现U盘启动
接下来,我们将介绍安装启动过程,安装需要的文件的内容,以及每个自动化安装方式的实现步骤
2 安装程序和相关文件介绍
2.1 系统启动流程如下
bootloader-->kernel(initramfs)-->rootfs-->/sbin/init
系统安装完成后,在启动时,先开机自检,读取硬盘的第一扇区MBR,加载bootloader,即第一阶段,还有1.5.和2阶段。根据配置文件,找到kernel(vmlinuz)和initramfs(临时根文件系统),由initramfs加载小linux系统,然后把控制权交给了rootfs,然后加载/sbin/init,按脚本命令执行相关脚本,完成启动的过程
2.2 系统安装程序:anaconda
在安装过程中我们需要借助的anaconda这个安装程序来实现,该程序有两种安装界面
1.gui:图形窗口
2 tui:基于图形库curses的文本窗口
anaconda的配置方式:
(1) 交互式配置方式
(2) 通过读取事先给定的配置文件自动完成配置:按特定语法给出的配置选项,改配置文件叫kickstart文件,这个文件可以手动编写,也可以通过图形化工具system-config-kickstart来生成。我们既然要实现自动化的安装,自然anaconda的配置方式就要选择该方式,不能是图形化,否则就实现不了自动化的安装
默认我们通过光盘来安装的时候,装载根文件系统,并启动anaconda,可以对这个配置方式进行选择,当光盘启动到菜单页面的时候,默认启动GUI接口,若是要指定使用TUI接口:向内核传递text参数即可。
(1)按tab键,在后面增加 text
(2)按ESC键:boot: linux text
在全自动化安装中,我们是直接在ks文件中设置了该方式为text。
anaconda工作过程
.Anaconda安装系统分成三个阶段:
a 安装前配置阶段
安装过程使用的语言
键盘类型
安装目标存储设备
Basic Storage:本地磁盘
特殊设备:iSCSI
设定主机名
配置网络接口
时区
管理员密码
设定分区方式及MBR的安装位置
创建一个普通用户
选定要安装的程序包
b 安装阶段
在目标磁盘创建分区,执行格式化操作等
将选定的程序包安装至目标位置
安装bootloader和initramfs
c 图形模式首次启动
进行以下的配置
iptables
selinux
core dump
2.3 光盘部分文件介绍
isolinux/boot.cat:这个文件作用是类型MBR(Main Boot Record),负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,启动的stage1.
isolinux/isolinux.bin,负责光盘的stage2,也是二进制文件,作用类似grub的第二阶段
isolinuz/vmlinuz:是linux的内核,相当于是一个小的linux系统
isolinuz/initrd.img,一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态
isolinux/isolinux.cfg:这个是光盘启动时的菜单文件,菜单的风格是文件vesamenu.c32.在isolinux.cfg里有调用,该文件里还指定了内核isolinuz/vmlinuz和isolinuz/initrd.img的路径,向内核传递参数:append initrd=initrd.img,这段参数可以自己定制,如在后面加text,就会实现字符界面安装,这个用于自动化安装,不适合于手动安装,鼠标点不了的。字符界面一般用于自动化安装。
在isolinux.cfg文件中指明kickstart文件的位置,有以下几个路径进行调用该文件,写法如下
1 2 3 4 5 6
DVD drive:ks=cdrom:/PATH/TO/KICKSTART_FILE Hard drive:ks=hd:device:/directory/KICKSTART_FILE HTTP server:ks=http://host:port/path/to/KICKSTART_FILE FTP server:ks=ftp://host:port/path/to/KICKSTART_FILE HTTPS server:ks=https://host:port/path/to/KICKSTART_FILE NFSserver:ks=nfs:host:/path/to/KICKSTART_FILE
2.4 kickstart文件
kickstart文件创建
有两个方法:
1 直接手动编写:依据某模板修改
2:.可使用创建工具:system-config-kickstart,依据某模板修改并自动生成新配置anaconda-ks.cfg,这个软件是在桌面端的环境下才能启用
.检查ks文件的语法错误:ksvalidator
1
ksvalidator /PATH/TO/KICKSTART_FILE
kickstart 文件的格式如下
kickstart文件的格式
anaconda-ks.cfg的格式如下分为 命令段,程序包段,脚本段三段
.命令段:
指明各种安装前配置,如键盘类型等
命令段中的命令:
.必备命令
authconfig:认证方式配置
authconfig--useshadow--passalgo=sha512
bootloader:bootloader的安装位置及相关配置
bootloader--location=mbr--driveorder=sda–
append="crashkernel=autorhgbquiet"
keyboard:设定键盘类型
lang:语言类型
part:创建分区
rootpw:指明root的密码
timezone:时区
.可选命令
install OR upgrade
text:文本安装界面
network
firewall
selinux
halt
poweroff
reboot
repo
user:安装完成后为系统创建新用户
url:指明安装源
key –skip跳过安装号码,适用于rhel版本
.程序包段:
指明要安装的程序包组或程序包,不安装的程序包等
程序包段指安装了哪些包,
@开头的是包组
不是@的是一般的包
--减号,是指把包组中的某个包去掉
例子如下
%packages
@group_name
package
-package
%end
注意,桌面包组,desktop默认是GNOME包组,如果桌面端安装不成功,安装一下xorg-x11-server-Xorg这个包,桌面端依赖这个包
.脚本段:
脚本段分为安装前和安装后脚本段
%pre:安装前脚本,安装操作系统前,初始化环境
运行环境:运行于安装介质上的微型Linux环境
%post:安装后脚本,系统都安装完成后才执行脚本
格式如下
%post
脚本