運維之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