系统自动化安装

系统自动化安装:实现同时部署多台操作系统,批量进行安装linux系统

CentOS系统安装

    系统启动流程:

      bootloader–>kernel(initaramfs)–>rootfs–>/sbin/init

anaconda:系统安装程序

    tui:基于图形库curses的文本窗口

    gui:图形窗口

MBR:boot.cat ====>类似于MBR

blob.png

stage2:isolinux/isolinux.bin(stage2)

blob.png

配置文件:/misc/cd/isolinux/isolinux.cfg 

blob.png

每个对应的菜单选项:

    加载内核:isolinuz/vmlinuz

    想内核传递参数:append initrd=initrd.img…..

装载根文件系统,并启动anaconda

    默认启动GUI接口

    若是显示指定使用TUI接口:向内核传递text参数即可(在光盘引导界面)

        1.按tab键,在后面增加text

        2.按ESC键:boot:linux text

blob.png

anaconda工作过程

Anaonda安装系统分成三个阶段:

安装前配置阶段

    安装过程使用的语言

    键盘类型

    安装目录存储设备

        Basic Storage:本地磁盘

        特殊设备:iSCSI    

    设定主机名

    配置网络接口

    时区

    管理员密码

    设定分区方式及MBR的安装位置

    创建一个普通用户

    选定要安装的程序包

安装阶段

    在目标磁盘创建分区,执行格式化操作

    将选定的程序包安装至目标位置

    安装bootloader和initramfs

首次启动

    iptables

    selinux    

    core dump    

系统安装

启动安装过程一般应位于引导设备;后续的anaconda及其安装用到的程序包等可来自下面几种方式

    本地光盘

    本地硬盘

    ftp server:yum repository    

    http server:yum repostory

    nfs server

如果想手动安装指定安装源    

    boot:linu askmethod

blob.png

根据以上选项,可选择不同的安装源

ancconda的配置方式:

    1.交互式配置方式

    2.通过读取事先给定的配置文件自动完成配置

        按特定语法给出的配置选项

            kickstart

安装boot引导选项:boot

text:文本安装方式

askmethod:手动指定使用的安装方法

与网络相关的引导选项:

    ip=IPADDR

    netmask=MASK

    gateway=GW

    dns=DNS_SERVER_IP

    ifname=NAME:MAC_ADDR

与远程访问功能相关的引导选项

    vnc

    vncpassword=“PASSWORD”

指明kickstart文件的位置: ks= 

    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

    NFS server:ks=nfs:host :/ path/to/ KICKSTART_FILE

启动紧急救援模式:

    rescure

官方文档 :

    《Installation Guide》  

kickstart文件的格式

命令段:指明各种安装前配置,如键盘类型等;

程序包段:指明要安装的程序包组成或程序包,不安装的程序包等;

    %packages

    @group_name

    package

    -package

    %end

脚本段:

    %pre:安装前脚本

       运行环境:运行于安装介质上的微型Linux环境

    %post:安装后脚本

       运行环境:安装完成的系统

命令段中的命令:

    必备命令:

        authconfig:认证方式配置

            authconfig –useshadow –passalgo=sha512

        bootloader:bootloader的安装位置及相关位置

            bootloader –location=mbr –driveorder=sda 

            -append="crashkernel=auto  rhgb quiet"

        keyboard:设定键盘类型

        lang:语言类型

        part:创建分区

        rootpw:指明root密码

        timezone:时区

        

可选命令:

    install OR upgrade    

    text:文本安装界面

    network:网络

    firewall:防火墙

    selinux

    halt:关机

    poweroff:断电关机

    reboot:重启

    repo:

    user:安装完成后为系统创建新用户

     url:指明安装源

    key -skip:跳过安装号码,适用于rhel版本

创建kickstart文件的方式

  1. 直接手动编辑:                           

     依据某模板修改(家目录下的anaconda.cfg,安装系统时生成的,记录了安装时的选项)

[root@localhost ~]# cat anaconda-ks.cfg 
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
url --url=http://10.1.0.1/cobbler/ks_mirror/6/
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0
# Reboot after installation
reboot
firewall --disabled
authconfig --useshadow  --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet"
# Clear the Master Boot Record
#zerombr
# 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

#part /boot --fstype=ext4 --size=200
#part pv.008002 --size=61440

#volgroup vg0 --pesize=8192 pv.008002
#logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
#logvol swap --name=swap --vgname=vg0 --size=2048
#logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
#logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480

repo --name="CentOS"  --baseurl=http://10.1.0.1/cobbler/ks_mirror/6/ --cost=100

%packages
@Base
@Core
@base
@basic-desktop
@chinese-support
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@x11
lftp
tree

%end

%post
echo -e 'Mage Education Learning Services\nhttp://www.magedu.com\n' >> /etc/issue

sed -i '1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g' /etc/inittab

[ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh

cat >> /root/.ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9w== root@server.magelinux.com
EOF

ClientName=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F. '{print $NF}'`
sed -i "s@HOSTNAME=.*@HOSTNAME=client$ClientName.magelinux.com@g" /etc/sysconfig/networks

# set hosts
echo '10.1.0.1  server.magedu.com server' >> /etc/hosts

# yum repo

%end
  1. 可使用创建工具:system-config-kickstart

     依据某模板修改并生成新配置

检查ks文件的语法错误:ksvalidator

    #ksvalidator /PATH/TO/KICKSTART_FILE

实例:

  1. 首先需要安装一个图形界面使用的命令:

yum install system-config-kickstart

2.切换到图形界面运行此命令,界面如下

blob.png

3.Basic Configuration 选项设置

blob.png

4.Installation Method设置(我选择网络安装)

blob.png

5.Boot Loader Options 选项设置(不弄那么复杂了)

blob.png

6.分区信息设置(按自己要求设置)

blob.png

7.网络设置

blob.png

8.Authentication设置

blob.png

9.firewall 防火墙设置

blob.png

10.Display Configuration设置

blob.png

11.Package Selection  包设置(选择需要的安装即可)

blob.png

12.开机前脚本没什么内容可写,所有选择了开机后脚本,设置如下

blob.png

13.保存至root命令下ks.cfg文件,内容如下

blob.png

[root@localhost ~]# 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://10.1.0.1/cobbler/ks_mirror/6"
# Root password
rootpw --iscrypted $1$vvw.7lmZ$vHhd8RrB4hePFMNIPOPqe.
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=static --device=eth0 --gateway=10.1.0.1 --ip=10.1.252.135 --nameserver=8.8.8.8 --netmask=255.255.0.0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# 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=100000
part swap --fstype="swap" --size=2048

%post
useradd qiuwei
echo 123456 |passwd --stdin qiuwei
echo  pingxiongshishabi >> /etc/issue
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo   /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/*.repo <<EOF
[base]
baseurl=http://10.1.0.1/cobbler/ks_mirror/6
gpgcheck=0
EOF
%end

%packages
@base
@basic-desktop
@ftp-server

%end

14.因为没有服务器,在我的另一个centos7系统上安装一个vsftpd,当作服务器

使用yum或者rpm都可以,装好后启动vsftpd服务

centos7

blob.png

15.将刚才生成的ks.cfg文件复制到centos7系统上

centos 6上执行命令

blob.png 

centos 7上的结果

blob.png

16.reboot重启,进入到光盘引导界面,键入ESC或者tab,

输入boot :linux ks=ftp://10.1.249.150/pub ==>(centos 7上的ks.cfg的路径 )

设置ks路径,然后回车运行,等待即可,画面如下,为防火墙没关

blob.png

在centos7上关闭防火墙,还是不可以,找了好久,应该是文件的权限有问题,之前的权限是600,我改成666了再次执行

就没问题,可以执行了,之后就是等待安装了,安装后会自动重启,

案例成功,当然因为模块方面不太了解,所有基本上是参照centos6上的boot目下的.config文件做的,等以后深入了解了,

可以自己做一个!

原创文章,作者:qiuwei,如若转载,请注明出处:http://www.178linux.com/47605

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-23 11:08

    作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。KICKSTART无人值守安装对我们来说是一个重要能力了。