运维之pxe、dhcp、cobbler

运维之pxe、dhcp、cobbler

把一个主机接入TCP/IP网络,要配置哪些网络参数:ip/mask、gateway、dns server;
参数配置方式:
1、静态配置;
2、动态分配:
a、bootp协议
b、dhcp协议:引入了“租约”的bootp;

DHCP:动态主机配置协议:
arp:address resolving protocol:地址解析协议:IP   --->  MAC
rarp:reverse arp:反向地址转换协议:MAC   --->  IP

监听的端口:server:67/udp;client:68/udp;

DHCP工作流程:
1、Client: dhcp discover:发现(广播)
2、Server: dhcp offer:(IP/netmask, gw,dns...)
lease time:租约期限
3、Client:dhcp request
4、Server: dhcp ack

DHCP续租:单播
50%,75%,87.5%

Linux DHCP协议的实现程序:dhcp, dnsmasq

dhcp:
1、dhcpd:dhcp服务
2、dhcrelay:dhcp中继

dhcp配置文件:
/etc/dhcp/dhcpd.conf

/etc/dhcp/dhcpd6.conf

dhcpd.conf:

option   domain-name    "magedu.com";   定义作用域

option   routers    192.168.71.1;                  定义默认网关

option   domain-name-servers   8.8.8.8;   定义dns服务器

default-lease-time   43200;                           定义默认租约期限,单位为秒

max-lease-time   86400;                                定义最大租约期限,单位为秒

subject   192.168.71.0   netmask   255.255.255.0   {               定义分配子网

                   range  192.168.71.101   192.168.71.200;                定义可动态分配的地址

}

host  test  {                                                                                     定义静态分配IP

                   hardware ethernet  00:80:23:df:23:3d;                 对应的mac

                   fixed-address      192.168.71.88;                               对应的ip(在动态分配地址范围外)

}

dhcp服务器地址分配信息库:~]# cat /var/lib/dhcpd/dhcpd.leases~

客户端命令:dhclient  -d:运行于前台;

其它配置选项:

filename:指明引导文件名称;

next-server:提供引导文件的服务器IP地址;

例如:

filename "pxelinux.0";       此文件由syslinux程序包提供

next-server 172.16.100.67;

PXE:preboot execute environment, Intel:预加载执行环境

centos实现pxe依赖如下:
dhcp(ip/mask,gw,dns,filename,next-server);
tftp server(bootloader,kernel,inirtd,pexlinux.0);

file server(yum repository);

tftp server:69/udp,默认的根文件目录:/var/lib/tftpboot/

centos6:
chkconfig tftp  on

service  xinetd   start

centos7:
systemctl   enable   tftp

systemctl   start   tftp

具体实例:

CentOS 6 PXE:

yum -y install syslinux tftp-server

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

cp /media/cdrom/images/pxelinux/{vmlinuz,initrd.img} /var/lib/tftp/boot/

cp /media/cdrom/isolinux/{boot.cfg,vesamenu.c32,splash.png} /var/lib/tftp/boot/

mkdir /var/lib/tftpboot/pxelinux.cfg/

cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default/

CentOS 7 PXE:

1、dhcp服务器配置
# yum install  dhcp
# vim /etc/dhcp/dhcpd.conf

subnet 192.168.86.0 netmask 255.255.255.0 {
  range 192.168.86.100 192.168.86.200;
  default-lease-time 600;
  max-lease-time 7200;
  filename "pxelinux.0";
  next-server 192.168.86.14;
}

# systemctl enable dhcpd

# systemctl restart dhcpd

此时可启动虚拟机查看是否能获取ip地址;

2、tftp服务器配置
# yum install tftp-server

# systemctl restart tftp.socket

准备引导文件pxelinux.0

# yum install syslinux

# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

准备内核文件(vmlinuz、initrd.img)及引导菜单文件(isolinux.cfg、vesamenu.c32、boot.msg、splash.png);注意系统光盘下的isolinux目录提供了这些文件;

# cp -rf /mnt/isolinux/* /var/lib/tftpboot/

准备pxe引导菜单,并修改如下

# mkdir /var/lib/tftpboot/pxelinux.cfg
# mv /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

# vim /var/lib/tftpboot/pxelinux.cfg/default

timeout               <--菜单显示等待时间,单位为1/10秒,默认等待60秒

label linux menu label ^Install CentOS Linux 7 by kickstart                    <--修改菜单,指定安装源和kickstart文件位置

menu default

kernel vmlinuz

append initrd=initrd.img inst.repo=http://192.168.86.14/centos7    inst.ks=http://192.168.86.14/centos7.cfg

此时可启动虚拟机查看成功加载内核,并提示找不到安装源和kickstart文件的错误。

3、文件服务器配置(提供安装源和kickstart文件);示例以http为例;

# yum install httpd

提供安装源光盘文件

mkdir /var/www/html/centos7

mount /dev/cdrom  /var/www/html/centos7

提供kickstart文件,方法:1、图形化界面安装system-config-kickstart生成;2、复制root用户家目录下的anaconda-ks.cfg,并修改

kickstart文件示例:

#version=DEVEL
# System authorization information
#version=DEVEL
# System authorization information
url --url="http://192.168.86.14/centos7"
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network --bootproto=dhcp --device=eno16777736 --onboot=yes --ipv6=auto
network --hostname=localhost.localdomain

# Root password
# System services
services --disabled="chronyd"
#version=DEVEL
# System authorization information
url --url="http://192.168.86.131/centos7"
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network --bootproto=dhcp --device=eno16777736 --onboot=yes --ipv6=auto
network --hostname=localhost.localdomain

# Root password
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel

%packages
@^minimal
@core
kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

至此,即可完成CentOS7 PXE+Kickstart自动化系统安装。

cobbler:pxe的二次封装:python语言开发;

安装cobbler;epel源

# yum install cobbler  cobbler-web

主配置文件:/etc/cobbler/settings

启动服务:systemctl start cobblerd

主要概念:distro(发行版)、profile(配置文件)、system(系统)

cobbler check:启动cobblerd服务后检查配置/etc/cobbler/settings错误;其中常用的配置选项如下:

server:172.20.120.40      指明cobbler通信的ip;

next-server:172.20.120.40     指明tftp服务器的ip;

default_password_crypted:                  默认模板密码为cobbler,为了安全需要重新设置;

其他所需要注意的信息:

1、关闭或者按需配置selinux

2、默认引导配置缺失,其目录/var/lib/cobbler/loaders,需手动复制或者从互联网下载(# cobbler get-loaders)

3、需安装rsync程序包,并启动rsyncd服务;# yum install rsync     # systemctl  start rsyncd.socket

cobbler sync:同步cobbler信息命令;

distro:表示一个发行版,标记一个发行版最关键资源是kernel和ramdisk文件;

profile:由distro+kickstart生成profile

管理distro

使cobbler变得可用的第一步为定义distro,其可以通过为其指定外部的安装引导内核及ramdisk文件的方式实现。而如果已经有完整的系统安装树(如CentOS6的安装镜像)则推荐使用import直接导入的方式进行。

例如,对于已经挂载至/media/cdrom目录的CentOS 6.5 x86_64的安装镜像,则可以使用类似如下命令进行导入。
# cobbler import --name=centos-6.5-x86_64 --path=/media/cdrom

可使用“cobbler distro list”列出所有的distro。

如果有kickstart文件,也可以使用“--kickstart=/path/to/kickstart_file”进行导入,因此import会自动为导入的distro生成一个profile。

管理profile

cobbler使用profile来为特定的需求类别提供所需要安装配置,即在distro的基础上通过提供kickstart文件来生成一个特定的系统安装配置。distro的profile可以出现在PXE的引导菜单中作为安装的选择之一。

因此,如果需要为前面创建的centos-6.5-x86_64这个distro提供一个可引导安装条目,其用到的kickstart文件为/tmp/centos-6.5-x86_64.cfg(只提供了最基本的程序包),则可通过如下命令实现。
# cobbler profile add --name=centos-6.5-x86_64-basic --distro=centos-6.5-x86_64 --kickstart=/tmp/centos-6.5-x86_64.cfg

可使用“cobbler profile list”查看已经创建的profile。

使用cobbler_web

配置cobbler_web的认证功能

cobbler_web支持多种认证方式,如authn_configfile、authn_ldap或authn_pam等,默认为authn_denyall,即拒绝所有用户登录。下面说明两种能认证用户登录cobbler_web的方式。

1、使用authn_pam模块认证cobbler_web用户

首先修改modules中[authentication]段的module参数的值为authn_pam。

接着添加系统用户,用户名和密码按需设定即可,例如下面的命令所示。
# useradd cblradmin
# echo 'cblrpass' | passwd --stdin cblradmin

而后将cblradmin用户添加至cobbler_web的admin组中。修改/etc/cobbler/users.conf文件,将cblradmin用户名添加为admin参数的值即可,如下所示。
[admins]
admin = "cblradmin"

最后重启cobblerd服务,通过http://YOUR_COBBLERD_IP/cobbler_web访问即可。

2、使用authn_configfile模块认证cobbler_web用户

首先修改modules.conf中[authentication]段的module参数的值为authn_configfile。

接着创建其认证文件/etc/cobbler/users.digest,并添加所需的用户即可。需要注意的是,添加第一个用户时,需要为htdigest命令使用“-c”选项,后续添加其他用户时不能再使用;另外,cobbler_web的realm只能为Cobbler。如下所示。

# htdigest -c /etc/cobbler/users.digest Cobbler cblradmin

最后重启cobblerd服务,通过http://YOUR_COBBLERD_IP/cobbler_web访问即可。注意:新版 Cobbler 的 Web 界面使用的是 https,登录URL:https://YOUR_COBBLERD_IP/cobbler_web

centos7:pxe+cobbler示例

#  systemctl start httpd tftpd dhcpd cobblerd rsyncd


猜你喜欢

转载自blog.51cto.com/11476314/2159877