运维之pxe、dhcp、cobblerhtml
把一个主机接入TCP/IP网络,要配置哪些网络参数:ip/mask、gateway、dns server;
参数配置方式:
一、静态配置;
二、动态分配:
a、bootp协议
b、dhcp协议:引入了“租约”的bootp;python
DHCP:动态主机配置协议:
arp:address resolving protocol:地址解析协议:IP ---> MAC
rarp:reverse arp:反向地址转换协议:MAC ---> IPlinux
监听的端口:server:67/udp;client:68/udp;web
DHCP工做流程:
一、Client: dhcp discover:发现(广播)
二、Server: dhcp offer:(IP/netmask, gw,dns...)
lease time:租约期限
三、Client:dhcp request
四、Server: dhcp ackredis
DHCP续租:单播
50%,75%,87.5%vim
Linux DHCP协议的实现程序:dhcp, dnsmasqcentos
dhcp:
一、dhcpd:dhcp服务
二、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:
一、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地址;
二、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.c3二、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文件的错误。
三、文件服务器配置(提供安装源和kickstart文件);示例以http为例;
# yum install httpd
提供安装源光盘文件
mkdir /var/www/html/centos7
mount /dev/cdrom /var/www/html/centos7
提供kickstart文件,方法:一、图形化界面安装system-config-kickstart生成;二、复制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,为了安全须要从新设置;
其余所须要注意的信息:
一、关闭或者按需配置selinux
二、默认引导配置缺失,其目录/var/lib/cobbler/loaders,需手动复制或者从互联网下载(# cobbler get-loaders)
三、需安装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的方式。
一、使用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访问便可。
二、使用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