2018-06-04 运维自动化之系统安装 2 dhcp服务

1、制作全功能的iso镜像文件

全功能的iso镜像文件指把yum源和kickstart文件都放到iso镜像文件里,这样即使没有网络也可以进行自动化安装系统。

1 准备相关文件,yum源
cp -r /misc/cd/* /app/fulliso
cp -r /misc/cd/.* /app/fulliso
rm -rf /app/fulliso/repodata/*  ---删除软件包的元数据文件
cp /misc/cd/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml /app/fulliso/repodata/   ---把包组的元数据的文件拷贝过来
cd /app/fulliso
createrepo -g repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml   ./   ---创建仓库,会重新生成包的元数据文件
find /app/fulliso  -name TRANS.TBL -exec rm {} \;  ---删除所有TRANS.TBL文件
2 准备ks文件,可以以家目录下的anaconda-ks.cfg文件为模板进行修改
vim  /app/fulliso/ks6.cfg 
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom    ---光盘为安装包的源文件
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$hfb25YOYZDU3YZTl$VxTkHGGJGGBbr59OPnY5kTJzvJ9hb9NRwrh5FMHLIAlXh9VQ74PYoK7QzPWYN0zaJrm3mv/IP0fDkHxFglNi6/
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled  ---可以禁用selinux
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# 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
zerombr   ---清除mbr,如果是一块旧的磁盘,要清除
clearpart --all   ---清除分区
text    --以文本方式安装系统
reboot  ---安装之后重新启动系统
part /boot --fstype=ext4 --size=1000
part / --fstype=ext4 --size=50000
part /app --fstype=ext4 --size=40000
part swap --size=2048
#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100  ---一定要把这一项给注释掉,不然会有问题的
%packages
@base
@core
@basic-desktop
@desktop-debugging
autofs
vim
%end
 %post    ---安装后脚本
 rm -rf /etc/yum.repos.d/*
 cat > /etc/yum.repos.d/base.repo <

总结:系统安装过程:通过引导文件找到启动菜单文件,这个文件里会规定内核文件和initrd的路径,同时也会指定kickstart文件的路径,kickstart文件里规定了如何安装操作系统,软件包的安装源、分区情况等,然后加载内核和initrd,加载根文件系统的驱动,挂载根后启动第一个安装程序anaconda,所以安装操作系统时,要有启动文件、启动菜单文件、kickstart文件以及安装源。

2、如何配置dhcp服务器

dhcp服务的安装包来自于dhcp包
dhcp服务器的配置文件:/etc/dhcp/dhcpd.conf

[root@centos6 dhclient]#cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#

可以看到这个文件默认很少,而且都是注释,可以进行如下操作,将这个例子文件拷贝过来并覆盖,这样这个配置文件就会有很多例子,告诉你怎么配置dhcp服务器。

cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 
cp: overwrite `/etc/dhcp/dhcpd.conf'? 

配置dhcp服务器的配置文件如下图,可以给客户端分配ip地址,网关,DNS和域名


2018-06-04 运维自动化之系统安装 2 dhcp服务_第1张图片
image.png

2018-06-04 运维自动化之系统安装 2 dhcp服务_第2张图片
image.png

image.png

服务器端查看地址分配记录
/var/lib/dhcpd/dhcpd.leases
dhcp客户端工具是dhclient
可以通过这个目录中的文件来查看客户端自动获取的IP信息:/var/lib/dhclient
dhcp服务器端和客户端端口
dhcpserver:67/udp
dhcpclient: 68/udp
其它配置选项:
filename: 指明引导文件名称,用于dhcp服务器给客户端分配完ip地址后,客户端的主机可以根据这个引导文件来引导内核,进而进行安装系统。
next-server:提供引导文件的服务器IP地址,可以提供引导文件的服务器是tftp服务器。
示例:可以在dhcp服务器的配置文件中加入如下行

filename "pxelinux.0";  ---指明引导文件的名称
next-server 192.168.100.100;  ---指明提供引导文件的服务器的ip地址

检查语法
service dhcpd configtest ---检查配置文件的语法,只能在centos6中使用。
如何给某一个网卡分配一个固定的ip地址,如下图所示


image.png

3、实验:在centos7实现PXE安装centos6和centos7

  • 实验过程:
1安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP,网卡设置为自定义VMnet1
2安装相关软件包
如果在centos7中做实验准备的包
yum install httpd tftp-server dhcp syslinux 
如果centos6中做实验准备的包
yum install vsftpd tftp-server dhcp syslinux-nonlinux
3 配置文件共享服务和yum源
systemctl enable httpd
systemctl start httpd
mkdir /var/www/html/centos/{6,7}
mount /dev/sr0 /var/www/html/centos/7
mount /dev/sr1  /var/www/html/centos/6
4 准备kickstart文件
cp /root/anaconda-ks.cfg   /var/www/html/ksdir/ks7.cfg
chmod a+r /var/www/html/ksdir/ks7.cfg
vim /var/www/html/ksdir/ks7.cfg ---修改这个文件后制作成centos7的
kickstart文件
主要修改如下几项
url --url=http://192.168.25.21/centos7
zerombr   ---清除mbr,如果是一块旧的磁盘,要清除
clearpart --all   ---清除分区
text    --以文本方式安装系统
reboot  ---安装之后重新启动系统
#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100  ---centos6中一定要把这一项给注释掉,不然会有问题的
scp 172.18.21.106:/root/anaconda-ks.cfg /var/www/html/ksdir/ks6.cfg  ---把centos6中的也拷贝过来
chmod a+r /var/www/html/ksdir/ks6.cfg  
vim /var/www/html/ksdir/ks6.cfg   ---制作centos6的kickstart文件
5 开启tftp服务
systemctl enable tftp.socket
systemctl start tftp.socket
6 配置DHCP服务
vim /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.25.0 netmask 255.255.255.0 {
        range 192.168.25.50 192.168.25.100;
        next-server 192.168.25.107;  ---指明提供引导文件的tftp服务器
地址
        filename "pxelinux.0";  ---指明引导文件的名字,这个名字可以
随便写,但要和后面的引导文件名对上
}
systemctl enable dhcpd
systemctl start dhcpd
7 准备PXE相关文件
mkdir /var/lib/tftpboot/pxelinux.cfg/   ---在tftp的共享目录下新建一个这
样的目录,用于存放引导菜单文件
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/  
---把引导文件和菜单风格的文件拷贝到tftp共享目录下,这两个文件是来自于syslinux(centos7)、syslinux-nonlinux(centos6)软件包
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/  ---拷贝内核文件到共享目录下
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
拷贝引导菜单到/pxelinux.cfg目录下,并且改名为default
目录结构如下
[root@centos7 tftpboot]#tree
.
├── centos6
│   ├── initrd.img
│   └── vmlinuz
├── centos7
│   ├── initrd.img
│   └── vmlinuz
├── menu.c32  ---菜单风格文件
├── pxelinux.0   ---引导文件
└── pxelinux.cfg
    └── default    ---引导菜单文件,里面指定vmlinuz和initrd.img路径
和ks文件路径

3 directories, 7 files
8 制作启动菜单文件
[root@centos7 tftpboot]#cat pxelinux.cfg/default 
default menu.c32
timeout 600

menu title CentOS Linux PXE Install

label centos7
  menu label Auto Install CentOS Linux ^7
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img ks=http://192.168.25.21/ksdir/ks7.cfg

label centos6
  menu label Auto Install CentOS Linux ^6
  kernel centos6/vmlinuz
  append initrd=centos6/initrd.img ks=http://192.168.25.21/ksdir/ks6.cfg

label local
  menu default
  menu label Boot from ^local drive
  localboot 0xffff


menu end

新建一个虚拟机进行安装,并把网卡设置为自定义VMnet1,保证和上面的主机在同一个网段,并且不影响本机的其他虚拟机,这里需要注意的是安装centos7时要把虚拟机的内存调大一点,要超过1G,不然安装的时候总会出错。

4、实验cobbler安装系统

  • 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的工作流程和PXE的工作流程大体相同。
  • 安装包
    安装包
    cobbler
    cobbler 服务集成
    PXE
    DHCP
    rsync
    Http
    DNS
    Kickstart
    IPMI 电源管理
    检查cobbler环境
    cobbler check
  • 配置文件
    /etc/cobbler/settings : cobbler 主配置文件
  • 数据目录
    /var/lib/cobbler/config/: 用于存放distros,system,profiles 等信息配置文件
    /var/lib/cobbler/triggers/: 用于存放用户定义的cobbler命令
    /var/lib/cobbler/kickstart/: 默认存放kickstart文件
    /var/lib/cobbler/loaders/: 存放各种引导程序
    镜像目录
    /var/www/cobbler/ks_mirror/: 导入的发行版系统的所有数据
    /var/www/cobbler/images/ : 导入发行版的kernel和initrd镜像用于远程网络启动
    /var/www/cobbler/repo_mirror/: yum 仓库存储目录
    日志目录
    /var/log/cobbler/installing: 客户端安装日志
    /var/log/cobbler/cobbler.log : cobbler日志
  • 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:
    具体过程
1、 安装包
yum install cobbler  dhcp tftp-server httpd
systemctl  enable  cobblerd
systemctl  start  cobblerd
systemctl enable  tftp
systemctl start  tftp
systemctl enable httpd
systemctl start httpd
2 、根据cobbler check 提示
1) vim /etc/cobbler/settings 
default_password_crypted: "$1$8ckh4FrM$ayLsgQi85bi8Nt5Gj4Drj/"    #openssl passwd -1 生成口令
next_server: 192.168.25.107  ---tftp服务器的IP 地址,也就是提供引
导文件的服务器地址
manage_dhcp: 1    ---改为1表示dhcp服务受cobbler服务管理
server: 192.168.25.107   ----cobbler服务器的地址
systemctl restart cobblerd   ---重启服务
cobbler sync  ---同步数据
2)生成dhcp模版文件
vim /etc/cobbler/dhcp.template
subnet 192.168.25.0 netmask 255.255.255.0 {
   range dynamic-bootp        192.168.25.100 192.168.25.254;
dhcp服务的配置文件不需要进行修改,只要修改cobbler的这个模板
文件,同步之后,就会发现dhcp服务器的配置文
件/etc/dhcp/dhcpd.conf的内容变成和这个模板的内容一样了,说明
cobbler可以间接的管理dhcp服务,不用你再去手动配置。
cobbler sync 
3) 准备启动文件和和菜单风格文件
连接internet,如果可以连接到网络,直接用下面的命令就可以生成启动文件和菜单风格文件
cobbler get-loaders
不连internet,也可以从下面的目录中拷贝后放到cobbler的存放各种引导程序的目录
cp /usr/share/syslinux/{pxelinux.0,memu.c32} /var/lib/cobbler/loaders
3 、导入yum源
cobbler import --path=/misc/cd --name=centos7.3 --arch=x86_64
cobbler import --path=/misc/cd --name=centos6.9 --arch=x86_64
[root@centos7 pxelinux.cfg]#cd /var/www/cobbler/ks_mirror/---导入的发行版系统的所有数据得目录
[root@centos7 ks_mirror]#ls    ---可以看到有两个yum仓库的目录
centos6.9-x86_64   centos7.3-x86_64  config
[root@centos7 ks_mirror]#cd centos6.9-x86_64/
[root@centos7 centos6.9-x86_64]#ls  ---进入仓库目录可以看到光盘
内容已经全部导过来了
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
images           RPM-GPG-KEY-CentOS-6
[root@centos7 config]#cd /var/lib/tftpboot/  
[root@centos7 tftpboot]#ls  ---发现启动文件已经帮我们自动生成了
boot     centos7  grub    images2  menu.c32  pxelinux.0    s390x
centos6  etc      images  memdisk  ppc       pxelinux.cfg
[root@centos7 pxelinux.cfg]#cobbler profile list  ---查看启动菜单的
标签,发现已经有三个启动菜单标签做好了
    centos6.9-i386
   centos6.9-x86_64
   centos7.3-x86_64
[root@centos7 pxelinux.cfg]#cat cd /var/lib/tftpboot/pxelinux.cfg/default
  1 DEFAULT menu
  2 PROMPT 0
  3 MENU TITLE Cobbler | http://cobbler.github.io/
  7 
  8 LABEL local
  9         MENU LABEL (local)
 10         MENU DEFAULT
 11         LOCALBOOT -1
  1 DEFAULT menu
  2 PROMPT 0
  3 MENU TITLE Cobbler | http://cobbler.github.io/
  7 
  8 LABEL local
  9         MENU LABEL (local)
 10         MENU DEFAULT
 11         LOCALBOOT -1
 12 
 13 LABEL centos6.9-i386
 14         kernel /images/centos6.9-i386/vmlinuz
 15         MENU LABEL centos6.9-i386
 16         append initrd=/images/centos6.9-i386/initrd.img ksdevice=bootif
     lang=  kssendmac text  ks=http://192.168.25.21/cblr/svc/op/ks/profile/
    centos6.9-i386
 17         ipappend 2
 18 
 19 LABEL centos6.9-x86_64
 20         kernel /images/centos6.9-x86_64/vmlinuz
 21         MENU LABEL centos6.9-x86_64
 22         append initrd=/images/centos6.9-x86_64/initrd.img ksdevice=boot
    if lang=  kssendmac text  ks=http://192.168.25.21/cblr/svc/op/ks/profil
    e/centos6.9-x86_64
 23         ipappend 2
 24 
 25 LABEL centos7.3-x86_64
 26         kernel /images/centos7.3-x86_64/vmlinuz
 27         MENU LABEL centos7.3-x86_64
 28         append initrd=/images/centos7.3-x86_64/initrd.img ksdevice=boot
    if lang=  kssendmac text  ks=http://192.168.25.21/cblr/svc/op/ks/profile/centos7.3-x86_64  --ks文件也已经生成
 29         ipappend 2
 30 
 31 
 32 
 33 MENU end
说明cobbler可以帮助我们自动在tftp服务器的目录下生成启动文件,
并且启动菜单文件也帮我们生成好了,kickstart文件也已经帮我们生
成好了。到此已经可以安装系统了。
如果你要定制自己的kickstart文件和启动菜单标签,可以进行如下操
作
4 、自己生成ks文件和启动菜单文件
cp  ks6.cfg ks7.cfg /var/lib/cobbler/kickstarts/  ---可以把自己定制的
ks文件放到这个目录下
cobbler profile remove --name=centos6.9-x86_64  
cobbler profile remove --name=centos7.3-x86_64 --可以删除原有的
启动菜单标签和ks文件
cobbler profile add --name=centos6.9_mini --distro=centos6.9-x86_64  --kickstart=/var/lib/cobbler/kickstarts/ks6.cfg 
cobbler profile add --name=centos7.3_mini --distro=centos7.3-x86_64  --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg
--name=centos7.3_mini启动菜单标签的名字   --distro=centos7.3-x86_64yum仓库目录   --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg --- 指明ks文件路径
cobbler sync  ---同步一下
[root@centos7 pxelinux.cfg]#cat default  --看一下启动菜单文件,发现标签是安装我们指定的标签
DEFAULT menu
PROMPT 0
MENU TITLE Cobbler | http://cobbler.github.io/
TIMEOUT 200
TOTALTIMEOUT 6000
ONTIMEOUT local

LABEL local
        MENU LABEL (local)
        MENU DEFAULT
        LOCALBOOT -1

LABEL centos6.9_mini   ---启动菜单的标签,标签在启动菜单界面不显示,只显示里面的菜单名,标签相当于一个大的标题,里面包含有内核的名字、菜单的名字、及内核参数
        kernel /images/centos6.9-x86_64/vmlinuz
        MENU LABEL centos6.9_mini   ---菜单名
        append initrd=/images/centos6.9-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.25.21/cblr/svc/op/ks/profile/centos6.9_mini
        ipappend 2

LABEL centos7.3_mini  ---启动菜单的标签
        kernel /images/centos7.3-x86_64/vmlinuz
        MENU LABEL centos7.3_mini   ---菜单名
        append initrd=/images/centos7.3-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.25.21/cblr/svc/op/ks/profile/centos7.3_mini
        ipappend 2



MENU end
[root@centos7 pxelinux.cfg]#wget http://192.168.25.21/cblr/svc/op/ks/profile/centos7.3_mini ---可以把应答文件下载下来看一下

5、cobbler的web管理实现

cobbler-web 提供cobbler的基于web管理界面,epel源
yum install cobbler-web
可以在/etc/cobbler/modules.conf中定义认证方法:

  • 认证方式一
使用authn_pam模块认证cobbler_web用户
[authentication]块中指定module = authn_pam
创建cobbler登录用户:useradd cobbler
设置登录密码 echo centos|passwd --stdin cobbler
修改文件/etc/cobbler/users.conf
[admins]
admin = "cobbler"
systemctl restart httpd
systemctl restart cobblerd

通过https://172.18.21.107/cobbler_web访问即可

  • 认证方式二
    使用authn_configfile模块认证cobbler_web用户
    [authentication]块中module=authn_configfile
htdigest-c /etc/cobbler/users.digest Cobbler zhang   ---创建其认证
文件/etc/cobbler/users.digest,并添加所需的用户,这里登录的用户
是zhang,创建的时候会让输入密码为登录密码
注意:添加第一个用户时,使用“-c”选项,后续添加其他用户时不要再
使用,cobbler_web的realm只能为Cobbler
systemctl restart httpd
systemctl restart cobblerd

通过https://172.18.21.107/cobbler_web访问即可

你可能感兴趣的:(2018-06-04 运维自动化之系统安装 2 dhcp服务)