运维自动化------系统安装

泪湿孤枕 提交于 2020-11-24 14:57:50
本章内容系统安装过程配置anaconda自动化安装系统制作引导光盘和U盘DHCP服务PXE安装系统  cobbler企业级应用

安装程序

CentOS系统安装

系统启动流程:

bootloader-->kernel(initramfs)-->rootfs-->/sbin/init

anaconda: 系统安装程序

gui:图形窗口

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

安装程序启动过程 

MBR:isolinux/boot.cat

stage2: isolinux/isolinux.bin

 配置文件:isolinux/isolinux.cfg

每个对应的菜单选项:

加载内核:isolinuz/vmlinuz

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

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

默认启动GUI接口

若是显式指定使用TUI接口:向内核传递text参数即可

(1)按tab键,在后面增加text

(2)按ESC键:boot: linux text “纯字符方式安装系统,不需要图形界面“

手动安装界面

 

 anaconda工作过程

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

1、安装前配置阶段

  • 安装过程使用的语言
  • 键盘类型
  • 安装目标存储设备
      • Basic Storage:本地磁盘
      • 特殊设备:iSCSI
  • 设定主机名
  • 配置网络接口
  • 时区
  • 管理员密码
  • 设定分区方式及MBR的安装位置
  • 创建一个普通用户
  • 选定要安装的程序包

2、安装阶段

  • 在目标磁盘创建分区,执行格式化操作等
  • 将选定的程序包安装至目标位置
  • 安装bootloader和initramfs

3、图形模式首次启动

  • iptables
  • selinux(安全机制)
  • core dump

anaconda

anaconda负责安装系统向导,默认为GUI界面,如果我们使用ks自动应答安装的话建议使用TUI界面来安装,在安装启动界面我们可以按esc键来自己手动指定安装启动选项anaconda选项:

1)boot:linux askmethod 在稍后的安装中手动选择安装源

本地光盘、硬盘、NFS、FTP、HTTP

2)linux dd 加载驱动盘

3)linux ks=xxx   指定安装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

4)linux nonet 不启用网络

5)linux noprobe 不装载其他的硬件设备

6)linux rescue 进入救援模式

7)linux 正常安装

8)local 从硬盘启动

9)linux text 以字符界面安装

10)linux ip={DHCP | 192.168.0.1} netmask=255.255.255.0 gateway=192.168.0.1 dns=114.114.114.114 ks=http://192.168.0.1/ks.cfg 设置IP并从网络获取ks文件

11)linux ip={DHCP | 192.168.0.1} netmask=255.255.255.0 gateway=192.168.0.1 dns=114.114.114.114 repo=http://192.168.0.1  设置IP地址并指定从repo源安装

  • ip=IPADDR
  • netmask=MASK
  • gateway=GW
  • dns=DNS_SERVER_IP
  • ifname=NAME:MAC_ADDR

12)linux vnc vncpassword="PASSWORD" 使用vnc调用安装界面

# ls -1 isolinux/
boot.cat  模拟mbr文件
boot.msg  
grub.conf grub的配置文件
initrd.img  ramdisk文件
isolinux.bin  grub的第二阶段
isolinux.cfg  配置文件(启动菜单定制文件)
memtest  内存测试文件
splash.jpg  背景图片
TRANS.TBL
vesamenu.c32  光盘启动的图形界面菜单风格
vmlinuz  内核文件

13:启动菜单的配置文件isolinux/isolinux.cfg

# cat isolinux/isolinux.cfg 
default vesamenu.c32 提供图形菜单风格
#prompt 1
timeout 600 菜单选择超时时间

display boot.msg

menu background splash.jpg  背景图片
menu title Welcome to CentOS 6.9!  菜单上方提示信息
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux  一条菜单
  menu label ^Install or upgrade an existing system
  menu default 默认选择
  kernel vmlinuz
  append initrd=initrd.img  向内核传递参数

实验:如果想加图形界面,方法如下

1:配好yum 源:按装包yum grouplistall "gonme desktop" yum grouplist:查看包组

2:yum install bash-completion 如果是最小化安装的系统则安装补全包 用 rmp -qa "bash" 查找出

如果已经装好,则exit重新登录,只有从新登录装的包会生效

3:systemctl isolate graphical.target --------- 或者init5

4:修改开机启动运行模式,

 

kickstart自动应答文件

kickstart为anaconda安装系统过程中自动应答已配置好的选项,实现无人值守安装系统。

事先把我们手动安装时的那些设置,如分区,语言,口令之类的安装的包存在应答文件中,安装向导读取应答文件内容自动安装,

ks文件格式:三部分

命令段:

---必须指定---

authconfig: 认证方式配置

  authconfig --useshadow --passalgo=sha512

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

   bootloader --location=mbr --driveorder=sda – append="crashkernel=auto rhgb quiet"

keyboard

lang

timezone

rootpw

authconfig --enableshadow

bootloader --location=mbr --password=******

driverdisk 指定驱动盘

firewall --enable --ssh,--disabled

firstboot --disbaled

halt 完成后关机

reboot 完成后重启

text|graphical(default) 文本|图像

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

keyboard: 设定键盘类型

lang: 语言类型

part: 创建分区

rootpw: 指明root的密码

timezone: 时区

---可选命令---

clearpart --all,--linux,--none(default) --initlabel(初始化分区标记)

autopart 自动分区

     ignoredisk --drives=drive1,drive2忽略硬盘

     autostep 跳过可选项,付默认值

     part or partition /boot --fstype ext4 --size=200

     install OR upgrade

     text: 文本安装界面

     network

     firewall

     selinux

     halt

     poweroff

     reboot

     repo

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

     url: 指明安装源

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

命令段:指明各种安装前配置,如键盘类型等
程序包段:指明要安装的程序包组或程序包,不安装的程序包等
软件包选择段:%package
     @group_name 包组名
     package 一个个包
     -package 不装的包
     %end
脚本段:
预安装脚本%pre
后安装脚本%post
准备应答文件:
方法一:通过现成系统拷贝一个文件直接参考 /root/anaconda-ks.cfg  来编辑, ,然后使用ksvalidator命令来检查是否有语法错误,但是这文件的格式有一定的要求,麻烦
方法二:使用system-config-kickstart 图形界面工具生成ks文件。

 

 
使用 system-config-kickstart 来创建ks文件(CentOS6.x)
检查ks文件的语法错误:ksvalidator ksvalidator /PATH/TO/KICKSTART_FILE
1、配置yum源、安装软件并启动,需要安装图形界面
2、按需配置
注意在centos7上的选择安装包的那一项默认不出来选项,我们可以把base的仓库名改为development
 
root@centos7 ~]# systemctl start httpd 启动http服务
[root@centos7 ~]# ss -ntl 80端口打开就可以访问了
[root@centos7 ~]# cd /var/www/html 默认存放页面的文件
[root@centos7 /var/www/html]# ls
[root@centos7 /var/www/html]# mkdir -pv centos/7/os/x8_64/ 模仿阿里云yum源以创建文件夹方式把centos光盘放到这个页面上
mkdir: created directory ‘centos’
mkdir: created directory ‘centos/7’
mkdir: created directory ‘centos/7/os’
mkdir: created directory ‘centos/7/os/x8_64/’
[root@centos7 /var/www/html]# mount /dev/sr0 centos/7/os/x86_64/ 挂载光盘到这个centos/7/os/x86_64/目录中
mount: /dev/sr0 is write-protected, mounting read-only
[root@centos7 /var/www/html]# ls centos
 
yum源生成

 
[root@centos7 ~/.ssh]# ssh-keygen                           在centos7上先生成key   
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9xImk70qDENHI8D4aJlqNewV2o3/RUGm7njgz6ZIBqs root@centos7
The key's randomart image is:
+---[RSA 2048]----+
| o..      .o     |
|. . ..o   o.     |
| o+ oo+. .  .    |
|.+.=.+...o .     |
|o ooo...S.*      |
|.. .= ..+= =     |
|.  . * o.o+ .    |
|  . o + ++ .     |
| E   . o+o       |
+----[SHA256]-----+
[root@centos7 ~/.ssh]# cat id_rsa.pub        查看公钥文件

 
ks.cfg配置文件,以上步骤生成:如下

ks文件中LVM逻辑卷分区格式

 
part /boot --fstype xfs --size=200 --ondisk=sda
part pv.2 --size=0 --grow --ondisk=sda
volgroup myvg --pesize=4096 pv.2
logvol / --fstype xfs --name=lv_root --vgname=myvg --size=10240 --grow
logvol swap --fstype swap --name=lv_swap --vgname=myvg --size=1024 --grow --maxsize=2048
 

ks文件中使用系统自动分区格式

# Partition clearing information
clearpart --all --initlabel 
autopartc

 实验:在centos7上通过应答文件配合ftp 服务实现自动化安装

 

1:yum install vsftpd systemctl start vsftpd 启动该服务 安装ftp服务,

 将会自动在这个目录下生成相应的文件夹

2:cd /var/ftp/pub 将会自动在这个目录下生成相应的文件夹,
3:[root@centos7 /var/ftp/pub]# mkdir centos7 创建该文件夹
4:[root@centos7 /var/ftp/pub]# mount /dev/sr0 centos7/ 将光盘挂载到
   centos7上
5:[root@centos7 /var/ftp/pub]# setenforce 0 关闭安全机制
6:访问
7:[root@centos7 /var/ftp/pub]# mv /root/ks7.cfg 将拷贝的应答文件复制到当前目录下,并且进行修改
8:制作好的应答文件
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled #关闭防火墙
# Install OS instead of upgrade
install
# Use network installation
cdrom 光盘引导
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info

# System timezone
timezone  Africa/Abidjan
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=partition
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
part /boot --fstype=ext4 --size=300
part / --fstype=ext4 --size=20480
part /app --fstype=ext4 --size=10240

part swap --size=2048
%post
rm -rf /etc/yum.repo.d/*
cat > /etc/yum.repo.d/media.repo <<EOF
[base]
name=base
baseurl=file:///media/
gpgcheck=0
EOF

useradd wang
echo 111111|passwd --stdin wang
%end

%packages
@base
@core
autofs
%end


制作自动应答光盘
我们现在已经有一个ks文件了,接下来需要把ks文件加入到光盘文件中来实现自动安装,就不用每次用过光盘引导输入开ks ..........一大长串字符了。
1、准备安装文件
[root@centos6 /data]# mkdir boot
[root@centos6 /data]# cp -r /media/isolinux/ /data/boot
[root@centos6 /data]# mkdir ksdir
[root@centos6 /data]# cp /root/ks6.cfg  ksdir/
2:修改配置文件

label linux
    menu label ^Auto Install an system
    kernel vmlinuz
    append initrd=initrd.img ks=cdrom:/ksdir/ks6.cfg
label vesa
    menu label Install ^Manual centos
    kernel vmlinuz
    append initrd=initrd.img reop=http://192.168.1.12/centos/6/os/x86_64/
label local
    menu label Boot from ^local drive
    menu default
    localboot 0xffff
3、制作ISO文件,

[root@centos7 ~]#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/boot:注意:以上相对路径都是相对于光盘的根,和工作目录无关
一 :制作完整的iso 文件,上面的步骤知识光盘应道,还是要手动安装
1[root@centos6 ~]# cp -r /media/ /data/centos6 复制光盘下所有的内容,包括隐藏文件,复制后命名为centos6
2[root@centos6 /data]# find -name TRANS.TBL 删除文件夹所有的这种文件
[root@centos6 /data]# find -name TRANS.TBL -exec rm {} \; 删除文件夹所有的这种文件
3[root@centos6 /data/centos6]# rm -rf repodata/ 删除此文件夹,重新生成新的
4:[root@centos6 /data/centos6]# createrepo -g /media/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml  .
(包的分组) 重新创建yum 源的yuan数据
5:[root@centos6 /data/ksdir]# vim ks6.cfg 修改应答文件中的安装方法,将网络改为cdrom
6:[root@centos6 /data/centos6/isolinux]# vim isolinux.cfg 修改启动菜单
label linux
    menu label ^Auto Install an system
    menu default
    kernel vmlinuz
    append initrd=initrd.img ks=cdrom:/ksdir/ks6.cfg
label manual
    menu label ^Manual installed an system
    kernel vmlinuz
    append initrd=initrd.img
label local
    menu default
    menu label Boot from ^local drive
    localboot 0xffff
 
7:[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/centos6.9.iso /data/centos6/ 刻光盘
5:创建U盘启动盘 dd if=/dev/sr0 of=/dev/sdb
补充:yum安装sz 命令:yum install -y lrzsz

 

mkisofs命令

  • -o 指定映像文件的名称
  • -b 指定在制作可开机光盘时所需的开机映像文件
  • -c 制作可开机光盘时,会将开机映像文件中的 no-eltorito-catalog 全部内容作成一个文件
  • -no-emul-boot 非模拟模式启动
  • -boot-load-size 4 设置载入部分的数量
  • -boot-info-table 在启动的图像中现实信息
  • -R 或 -rock 使用 Rock RidgeExtensions
  • -J 或 -joliet 使用 Joliet 格式的目录与文件名称
  • -v 或 -verbose 执行时显示详细的信息
  • -T 或 -translation-table 建立文件名的转换表,适用于不支持 Rock RidgeExtensions 的系统上

 

DHCP服务
 
网络配置 静态指定
     动态获取: bootp:boot protocol MAC与IP一一静态对应 bootpIP地址固定
       dhcp:增强的bootp,动态 #用较少的ip给较多的计算机提供使用
DHCP: (Dynamic Host Configuration Protocol)
  动态主机配置协议 局域网协议,UDP协议
主要用途
  用于内部网络和网络服务供应商自动分配IP地址给用户
  用于内部网络管理员作为对所有电脑作集中管理的手段
♦ 使用场景
  自动化安装系统
   解决IPV4资源不足问题

 

DHCP共有八种报文

DHCP DISCOVER:客户端到服务器

DHCP OFFER :服务器到客户端
DHCP REQUEST:客户端到服务器
DHCP ACK :服务器到客户端
DHCP NAK:服务器到客户端,通知用户无法分配合适的IP 地址
DHCP DECLINE :客户端到服务器,指示地址已被使用
DHCP RELEASE:客户端到服务器,放弃网络地址和取消 剩余的租约时间
DHCP INFORM:客户端到服务器, 客户端如果需要从DHCP 服务器端获取更为详细的配置信息,则发送Inform报文向 服务器进行请求,极少用到
续租
  50% :租赁时间达到50%时来续租,刚向DHCP服务器发向新的DHCPREQUEST 请求。如果dhcp服务没有拒绝的理由,则回应DHCPACK信息。当DHCP客户端 收到该应答信息     后,就重新开始新的租用周期
  87.5%:如果之前DHCP Server没有回应续租请求,等到租约期的7/8时,主机 会再发送一次广播请求
♦ 同网段多DHCP服务
  DHCP服务必须基于本地
  先到先得的原则
♦ 跨网段
  RFC(请求入解) 1542 Compliant Routers #可以通过路由器
  dhcrelay: 中继 #可以找代理,事先知道dhcp的服务器,如果发现有客户端的请求通过单播向dhcp服务器要一个地址,然后给客户端
通常情况下 可以在路由器上在网卡接口上配一个代理,启用次功能
♦ 相关协议
  Arp 免费arp:
  rarp:把mak地址解析成ip地址,当自己的mak地址是固定的,就向dhcp服务器寻求相对应的ip地址,比较固定
DHCP服务实现
  1Linux DHCP协议的实现程序:dhcp, dnsmasq(dhcp,dns)
   2 Dhcp Server
     /usr/sbin/dhcpd
      /etc/dhcp/dhcpd.conf --> /etc/rc.d/init.d/dhcpd
      /etc/dhcp/dhcpd6.conf--> /etc/rc.d/init.d/dhcpd6
    /usr/sbin/dhcrelay
      /etc/rc.d/init.d/dhcrelay
    dhcp server:67/udp
    dhcp client: 68/udp
    dhcpv6 client:546/udp
3 Dhcp client
    dhclient
    自动获取的IP信息: /var/lib/dhclient
DHCP配置文件
  dhcpd.conf: 帮助参考:man 5 dhcpd.conf
全局配置
subnet {
...
}
host {
}
  地址分配记录: /var/lib/dhcpd/dhcpd.leases
   其它配置选项:
    filename: 指明引导文件名称
    next-server:提供引导文件的服务器IP地址
  示例:
    filename "pxelinux.0";
    next-server 192.168.100.100;
  检查语法 service dhcpd configtest
dhcpd.conf示例
   option domain-name "magedu.com";
   option domain-name-servers 192.168.0.1,8.8.8.8;
  default-lease-time 86400;
  max-lease-time 86400;
  subnet 192.168.100.0 netmask 255.255.255.0 {
    range 192.168.100.1 192.168.100.200;
    option routers 192.168.100.1;
  }
 
 
PXE介绍
PXE: Preboot Excution Environment 预启动执行环境 Intel公司研发 基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载 映像,并由此支持通过网络启动操作系统 PXE可以引导和安装Windows,linux等多种操作系统
 
pxe工作原理
  1. 1:Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client
  2. :2:Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0
  3. Client执行接收到的pxelinux.0文件
  4. Client向TFTP Server发送针对本机的配置信息文件(在TFTP 服务的pxelinux.cfg目录下),TFTP将配置文发回Client,继而Client根据配置文件执行后续操作。
  5. Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client
  6. Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
  7. Client启动Linux内核
  8. Client下载安装源文件,读取自动化安装脚本
 
PXE自动化安装CentOS 7
pxe+dhcpd+tftp-server+httpd (实现基于网络的自动化安装)
一:安装前准备:  
关闭selinux
1. 永久有效
修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。
2. 即时生效
setenforce 0
 关闭防火墙
1. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
[root@centos7 ~]# systemctl stop firewalld
3:[root@centos6 ~]# ntpdate 192.168.0.1同步时间
二:安装软件包 :
httpd---tftp-server--- dhcp ---syslinux(相当于grub用来引导程序)--- system-config-kickstart
[root@centos7 ~]# yum install httpd tftp-server dhcp syslinux
三:配置文件共享服务: yum仓库路径
[root@centos7 ~]# systemctl enable httpd
[root@centos7 ~]# systemctl start httpd
[root@centos7 ~]# cd /var/www/html/
[root@centos7 /var/www/html]# mkdir -pv centos/7/os/x8_64/
[root@centos7 /var/www/html]# mount /dev/sr0 centos/7/os/x8_64/
四:准备kickstart文件(应答文件)
/var/www/html/ksdir/ks7.cfg 注意:权限
[root@centos7 /var/www/html]# mkdir ksdir
[root@centos7 ~]# mv ks7.cfg /var/www/html/ksdir/
[root@centos7 /var/www/html/ksdir]# chmod +x ks7.cfg
五:配置tftp服务 启动tftp服务
systemctl enable tftp.socket
systemctl start tftp.socket
六:配置DHCP服务
[root@centos7 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@centos7 ~]# vim /etc/dhcp/dhcpd.conf
log-facility local7; #记录日志级别
subnet 192.168.30.0 netmask 255.255.255.0 { #分配子网,和自己主机一个网段
range 192.168.30.110 192.168.1.254; #地址池
option domain-name-servers 114.114.114.114,1.1.1.1; #DNS
option domain-name "laowang.com"; #搜索域
option routers 192.168.30.1; #路由网关
default-lease-time 600; #默认租约时间
max-lease-time 7200; #最大租约时间
next-server 192.168.30.110; #*指向tftp服务器地址,此处指向本机
filename "pxelinux.0"; #pxe文件名,系统默认为pxelinux.0
}
systemctl enable dhcpd 开机自启动
systemctl start dhcpd
七:准备相关文件
[root@centos7 ~]# cd /var/lib/tftpboot
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/{pxelinux.0,menu.c32} (菜单风格)/var/lib/tftpboot/
cp /media/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /media/isolinux/isolinux.cfg(菜单) /var/lib/tftpboot/pxelinux.cfg/default
文件列表如下:
/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
准备启动菜单
Vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600
menu title Centos7 《大标题》
label auto
menu label ^Auto Install CentOS 7 自动安装
kernel vmlinuz
append initrd=initrd.img ks=http://http://192.168.1.12/ksdir/ks.cfg(应答文件路径)
label manual 手动安装
menu label Manual Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.1.12/centos/7/os/x8_64/手动安装)
label local
menu default
menu label ^Boot from local drive
localboot 0xffff

 

PXE自动化安装CentOS6
一:安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP(同上)
二:安装相应软件包
[root@centos7 ~]# yum install httpd tftp-server dhcp syslinux
chkconfig tftp on
chkconfig xinetd on
chkconfig httpd on
chkconfig dhcpd on
service httpd start
service xneted start
三: 准备Yum 源和相关目录
[root@centos6 ~]# cd /var/www/html/
[root@centos6 /var/www/html]# mkdir -pv centos/6/os/x8_64/
[root@centos6 /var/www/html]# mount /dev/sr0 centos/6/os/x8_64/
四:准备kickstart文件
[root@centos7 /var/www/html]# mkdir ksdir
[root@centos7 ~]# mv ks6.cfg /var/www/html/ksdir/
注意权限:chmod 644 /var/www/html/ksdir/ ks6.cfg
五: 准备相关的启动文件
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cd /media/images/pxeboot/
cp vmlinuz initrd.img /var/lib/tftpboot
Cd /media/isolinux/
cp boot.msg vesamenu.c32 splash.jpg /var/lib/tftpboot
六: 准备启动菜单文件
cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 指定菜单风格
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to wang CentOS 6
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label auto
menu label ^Automatic Install Centos6
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.1.7/ksdir/ ks6.cfg
label manual
menu label ^Manual Install Centos
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.1.7/centos/6/os/x8_64/
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
 
七:目录结构如下:
tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.msg
├── initrd.img
├── pxelinux.0
├── pxelinux.cfg
│ └── default
├── splash.jpg
├── vesamenu.c32
└── vmlinuz
1 directory, 7 files
八: 配置dhcp服务
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com";
option domain-name-servers 192.168.100.1;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.200;
option routers 192.168.100.1;
filename "pxelinux.0";
next-server 192.168.100.100;
}
service dhcpd start
obbler
快速网络安装linux操作系统的服务,支持众多的Linux发行版:Red Hat、 Fedora、CentOS、Debian、Ubuntu和SuSE,也可以支持网络安装windows ,PXE的二次封装,将多种安装参数封装到一个菜单 Python编写 提供了CLI和Web的管理形式cobbler在epel源中,安装时需要配置epel源。
 
一:cobbler 工作流程
client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)
发送其分配好的一个IP
DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port
client裸机通过上面告知的TFTP server地址通信,下载引导文件
client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向
cobbler server请求kickstart文件和os image
cobbler server发送请求的kickstart和os iamge
client裸机加载kickstart文件
client裸机接收os image,安装该os image
二:cobbler 介绍(蓝色字体是具体步骤)
1:安装包
cobbler 基于EPEL源 只装两包其他的包自动会安装
2;cobbler 服务集成
PXE
DHCP
rsync
Http
DNS
Kickstart
IPMI 电源管理
3:检查cobbler环境
cobbler check
三:cobbler 相关术语
1:发行版:
表示一个操作系统版本,它承载了内核和 initrd 的信息,以及内核参数等其他数据
2:配置文件:
包含一个发行版、一个 kickstart 文件以及可能的存储库,还包含更多特定的内核参数等其他数据
3:系统:
表示要配置的主机,它包含一个配置文件或一个镜像,还包含 IP 和 MAC 地址、电源
管理(地址、凭据、类型)以及更为专业的数据等信息
4:存储库:
保存一个 yum 或 rsync 存储库的镜像信息
5:镜像:
可替换一个包含不属于此类别的文件的发行版对象(例如,无法分为内核和 initrd 的对象)
四:cobbler 各种配置目录说明
1:安装:yum install cobbler dhcp
2:配置文件目录 /etc/cobbler
/etc/cobbler/settings : cobbler 主配置文件
/etc/cobbler/iso/: iso模板配置文件
/etc/cobbler/pxe: pxe模板文件
/etc/cobbler/power: 电源配置文件
/etc/cobbler/user.conf: web服务授权配置文件
/etc/cobbler/users.digest: web访问的用户名密码配置文件
/etc/cobbler/dhcp.template : dhcp服务器的的配置末班
/etc/cobbler/dnsmasq.template : dns服务器的配置模板
/etc/cobbler/tftpd.template : tftp服务的配置模板
/etc/cobbler/modules.conf : 模块的配置文件
五:cobbler 目录介绍
1:数据目录
/var/lib/cobbler/config/: 用于存放distros,system,profiles 等信息配置文件
/var/lib/cobbler/triggers/: 用于存放用户定义的cobbler命令
/var/lib/cobbler/kickstart/: 默认存放kickstart文件
/var/lib/cobbler/loaders/: 存放各种引导程序
2:镜像目录
/var/www/cobbler/ks_mirror/: 导入的发行版系统的所有数据
/var/www/cobbler/images/ : 导入发行版的kernel和initrd镜像用于远程网络启动
/var/www/cobbler/repo_mirror/: yum 仓库存储目录
3:日志目录
/var/log/cobbler/installing: 客户端安装日志
/var/log/cobbler/cobbler.log : cobbler日志
六:cobbler 命令介绍
cobbler commands介绍
cobbler check 核对当前设置是否有问题
cobbler list 列出所有的cobbler元素
cobbler report 列出元素的详细信息
cobbler sync 同步配置到数据目录,更改配置最好都要执行下
cobbler reposync 同步yum仓库
cobbler distro 查看导入的发行版系统信息
cobbler system 查看添加的系统信息
cobbler profile 查看配置信息
七:cobbler 重要的参数
/etc/cobbler/settings中重要的参数设置
default_password_crypted: "$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"
manage_dhcp:1
manage_tftpd:1
pxe_just_once:1
next_server:< tftp服务器的 IP 地址>
server:<cobbler服务器的 IP 地址>
八:
九:cobbler 报错解决
执行Cobbler check报错解决方式
1:修改/etc/cobbler/settings文件中的server参数的值为提供cobbler服务的主机相应的IP地址或主机名
2:修改/etc/cobbler/settings文件中的next_server参数的值为提供PXE服务的主机相应的IP地址
3:如果当前节点可以访问互联网,执行“cobbler get-loaders”命令即可;否则,
需要安装syslinux程序包,而后复制/usr/share/syslinux/{pxelinux.0,memu.c32}
等文件至/var/lib/cobbler/loaders/目录中
4:执行“chkconfig rsync on”命令即可
5:执行“openssl passwd -1 生成密码,并用其替换/etc/cobbler/settings文件 default_password_crypted参数的值
十:cobbler 相关管理
1:下载启动菜单:
联网:cobbler get-loaders
不联网:cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot
2:管理distro
cobbler import --name=centos-6.9-x86_64 --path=/media/cdrom --arch=x86_64
3:管理profile
cobbler profile add --name=centos-6.9-x86_64-basic
--distro=centos-6.9-x86_64 --kickstart= /var/lib/cobbler/kickstarts/centos-6.9-x86_64.cfg
十一:cobbler 命令
1:查看profiles
cobbler profile list
2:查看引导文件
cat /var/lib/tftpboot/pxelinux.cfg/default
3:同步cobbler配置
cobbler sync
4:多系统引导方案
cobbler import --name=CentOS-7-x86_64 --path=/media/cdrom
cobbler distro list
cobbler profile list
cobbler sync
十二:cobbler 实现步骤
1:安装包,并设置服务
2:检查配置
3:根据上面提示修改配置
4:下载启动相关文件菜单
5:配置DHCP服务
6:分别导入centos的安装源,并查看
7:准备kickstart文件并导入cobbler
8:测试
十三:cobbler的web管理实现
1:cobbler-web
提供cobbler的基于web管理界面,epel源
yum install cobbler-web
2:认证方式
认证方法配置文件:/etc/cobbler/modules.conf
支持多种认证方法:
authn_configfile
authn_pam
3:使用authn_configfile模块认证cobbler_web用户
vim /etc/cobbler/modules.conf
[authentication]
module=authn_configfile
创建其认证文件/etc/cobbler/users.digest,并添加所需的用户
htdigest -c /etc/cobbler/users.digest Cobbler admin
注意:添加第一个用户时,使用“-c”选项,后续添加其他用户时不要再使用,cobbler_web的realm只 能为Cobbler
4:使用authn_pam模块认证cobbler_web用户
vim /etc/cobbler/modules.conf
[authentication]
module = authn_pam
创建cobbler用户:useradd cobbler
vim /etc/cobbler/users.conf
[admins]
admin = "cobbler“
5:Web访问cobbler
重启cobblerd服务
通过https://cobblerserver/cobbler_web访问
 
cobbler安装的具体步骤:
1:安装:yum install cobbler dhcp
[root@centos7 ~]## yum -y install cobbler dhcp 装包
[root@centos7 ~]## systemctl start cobblerd 启动服务
[root@centos7 ~]## systemctl status cobblerd 查看服务是否已经运行
需要手动启动相关的服务
[root@centos7 /var/lib/tftpboot]# systemctl start httpd(80) tftp(69)
2:cobbler check 用此命令列出菜单照做运行cobbler check根据提示排错
以下在[root@centos7 /var/lib/tftpboot]# vim /etc/cobbler/settings文件中修改
(1)server: 192.168.30.110 第384行,改为自己的ip地址
systemctl restart cobblerd 每次修改完此配置文件都要重启服务
(2)next_server(那个是tftp服务器): 192.168.30.110 第272行,改为自己的ip地址
3)启动tftp服务systemctl start ftfpd
(4) [root@centos7 /var/lib/tftpboot]# cobbler get-loaders 用此命令会自动在网上下载相关的文件
(5)用cobbler sync 同步 ,把下载的相关文件同步到 /var/lib/tftpboot 下
(6)[root@centos7 /var/lib/tftpboot]# tree.
├── boot
│   └── grub
│   └── menu.lst
├── etc
├── grub
│   ├── efidefault
│   ├── grub-x86_64.efi
│   ├── grub-x86.efi
│   └── images -> ../images
├── images
├── images2
├── memdisk
├── menu.c32
├── ppc
├── pxelinux.0
├── pxelinux.cfg
│   └── default
├── s390x
│   └── profile_list
└── yaboot
(7)修改文件中的默认口令 第101行 $1:md5的加密算法,$6:sh512加密算法
[root@centos7 ~]# openssl passwd -1(使用md5加密算法)
Password:
Verifying - Password:
$1$KsFkUTOo$z3LQU7SdDqQNfQPegBkqa1(替换文件中的默认口令)
配置DHCP
vim /etc/cobbler/dhcp.template将dhcp更改为ip相同的网段,设置范围等参数
8):manage_dhcp: 1 第242行,0改为1
(9):vim /etc/cobbler/dhcp.template 修改第22-25行的ip就好了这样就不同在配DHCP服务
3:[root@centos7 /var/lib/tftpboot]# cobbler sync
最终参考模板自动的生成真正的cat /etc/dhcp/dhcpd.conf 配置文件
.启动服务
systemctl start dhcpd
4:导入7的系统:
导入镜像文件
cobbler import --path=/media/ --name centos7 --arch=x86_64
导完系统后悔自动生成一个最小化安装的ks文件cobbler profile list可以看到
查看导入的发行版系统信息和配置信息
cobbler distro list
cobbler profile list
5: 生成KS文件
更改ks文件中的URL路径,改为$tree,cobbler会自动识别
把ks文件移动到cobbler的ks目录中
mv ks7..cfg /var/lib/cobbler/kickstarts/
把ks文件指定到启动项中
cobbler profile edit --name=centos7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg
也可以根据需求添加多个镜像,写多个KS文件导入 
6:搭建完成,测试一下
 
 
 
 
 
 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!