Linux 自動化安裝介紹
阿新 • • 發佈:2018-06-08
linux pex介紹pex之前先來介紹了dhcp服務。
arp協議 (address resolving protocol):IP --> MAC
rarp協議 (reverse arp ):MAC ---> IP 6、服務器:(ack|nack)
arp協議 (address resolving protocol):IP --> MAC
rarp協議 (reverse arp ):MAC ---> IP
工作流程大致有6個步驟:
1、客戶端: dhcp discover 請求報文 廣播
2、服務器:dhcp offer(IP/mask,gw....)
3、客戶端: dhcp request (請求使用地址)
4、服務器:dhcp ack 確認
5、客戶端 : rquest 單波給服務器續租, 50%時候出發,可以自定義,如果沒有聯系上 75%時候繼續。(沒有續租上的情況按照剩余時間的50%進行觸發,直到續租成功)
dhcp安裝使用過程
1、安裝
[root@node1 pxeboot]# yum -y install dhcp
2、配置文件
[root@node1 pxeboot]# cd /etc/dhcp/ [root@node1 dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ./dhcpd.conf option domain-name "example.org"; #當前主機域名 option domain-name-servers 8.8.8.8,114.114.114.114; #dns 用逗號隔開 default-lease-time 6000; #默認續租時間 max-lease-time 72000; #最大續租時間 log-facility local7; #日誌 option routers 192.168.1.1; #網關 也可以定義在subnet中 subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.230 192.168.1.254; }
3、啟動
[root@node1 haproxy]# systemctl restart dhcpd #服務端端口 [root@node1 haproxy]# ss -lntup|grep dhcpd udp UNCONN 0 0 *:67 *:* users:(("dhcpd",pid=10216,fd=7)) #客戶端端口 udp UNCONN 0 0 *:68 *:* users:(("dhclient",pid=4981,fd=6))
4、客戶端測試?
#在虛擬機中設置一個橋接模式的網卡,自動獲取ip
[root@node3 html]# ifdown ens33 && ifup ens33 #如果同一網絡有多個dhcp服務器的話
[root@node3 html]# dhclient -d
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens34/00:0c:29:a8:a5:41
Sending on LPF/ens34/00:0c:29:a8:a5:41
Listening on LPF/ens33/00:0c:29:a8:a5:37
Sending on LPF/ens33/00:0c:29:a8:a5:37
Sending on Socket/fallback
DHCPREQUEST on ens34 to 255.255.255.255 port 67 (xid=0x15cfab63)
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x46d0deea)
DHCPACK from 192.168.1.200 (xid=0x46d0deea) #自定義的dhcp服務器
bound to 192.168.1.231 -- renewal in 2631 seconds.
DHCPACK from 192.168.1.1 (xid=0x15cfab63) #家裏路由器 dhcp
bound to 192.168.1.108 -- renewal in 3416 seconds.
[root@node3 html]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a8:a5:37 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.231/24 brd 192.168.1.255 scope global dynamic ens33
valid_lft 5882sec preferred_lft 5882sec
inet6 fe80::20c:29ff:fea8:a537/64 scope link
valid_lft forever preferred_lft forever
[root@node3 html]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 101 0 0 ens33
5、固定ip分配
#服務端配置
host passacaglia {
hardware ethernet 00:0c:29:a8:a5:37;
fixed-address 192.168.1.229;
}
#客戶端地址
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a8:a5:37 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.229/24 brd 192.168.1.255 scope global dynamic ens33
valid_lft 5998sec preferred_lft 5998sec
inet6 fe80::20c:29ff:fea8:a537/64 scope link
valid_lft forever preferred_lft forever
6、服務器查看ip租約情況
[root@node1 haproxy]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5
lease 192.168.1.230 {
starts 5 2018/06/08 07:22:19;
ends 5 2018/06/08 09:02:19;
cltt 5 2018/06/08 07:22:19;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:34:f5:7a;
client-hostname "node2";
}
pex
Preboot Execution Environment
工作流程大致如下
1、客戶端通過dhcp服務獲取 ip/mask,gw,dns,filename,next-server
2、客戶端通過引導文件加載臨時內核,從而加載anaconda配置文件
3、通過anaconda或者傳遞給內核的參數方式下載安裝數據包,進行安裝
先介紹下kickstart
圖形化配置
yum -y install system-config-kickstart
system-config-kickstart
centos7 ks
#命令段
####必備命令
#認證方式
auth --enableshadow --passalgo=sha512
#bootloader append後面是傳遞給內核的參數 quiet
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# 鍵盤
keyboard --vckeymap=us --xlayouts=‘us‘
# 語言
lang en_US.UTF-8
#時間
timezone Asia/Shanghai --isUtc --nontp
#清空分區
clearpart --none --initlabel
#創建boot分區
part /boot --fstype="xfs" --ondisk=sda --size=512
#創建pv.id
part pv.156 --fstype="lvmpv" --ondisk=sda --size=17411
#創建vg 通過pv.id指定那個pv
volgroup vg0 --pesize=4096 pv.156
#創建邏輯卷
logvol / --fstype="xfs" --size=15360 --name=root --vgname=vg0
logvol swap --fstype="swap" --size=2047 --name=swap --vgname=vg0
#管理員密碼 第一段是加密方式 第二段是密鑰 第三段加密密碼 密碼生成方式 openssl passwd -1 -salt `openssl rand -hex 4`
rootpw --iscrypted $6$cH7JVkcFapV4O/vE$QOt4bAVZ72Ck5XjCeIfL1lnV55XHGoobTePENyn79gy1Cs52t9bperY8G9A4Gif/1yIy6JhmTenj4xxZIK2mM.
###可選命令
install
# Network information
network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --activate
network --bootproto=dhcp --device=ens34 --onboot=off --ipv6=auto --activate
network --hostname=localhost.localdomain
#安全關閉
selinux --disabled
firewall --disabled
#安裝完成後
reboot
###
#安裝源 cdrom
#cdrom
#安裝源是網絡
url --url="http://mirrors.aliyun.com/centos/7.4.1708/os/x86_64/"
# 安裝界面圖像顯示 去掉就是顯示文本
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# System services
services --disabled="chronyd"
#程序包段
%packages
@^minimal
@core
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb=‘auto‘
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
檢查
[root@localhost ~]# ksvalidator ks3.cfg
介紹制作鏡像安裝
[root@localhost ~]# cd /mnt/t1/
[root@localhost t1]# ls
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
[root@localhost t1]# mkdir /mnt/t2
[root@localhost t1]# cp -r isolinux /mnt/t2
[root@localhost t1]# cd /mnt/t2/isolinux/
[root@localhost isolinux]# cp /root/ks3.cfg ../ks.cfg
[root@localhost t2]# ls
isolinux ks.cfg
[root@localhost mnt]# vim t2/isolinux/isolinux.cfg
timeout 1
label linux
menu default
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.ks=cdrom:/ks.cfg text
#註意default只能有一個
[root@localhost mnt]# genisoimage -o centos7-boot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "centos7 x86_64 boot" t2/
[root@localhost mnt]# ll -h
總用量 53M
-rw-r--r--. 1 root root 53M 5月 4 22:51 centos7-boot.iso
配置好網卡 ,dhcp,直接啟動就好了。
pex
1、安裝tftp
[root@node1 haproxy]# yum -y install tftp-server tftp
#udp 69
[root@node1 haproxy]# systemctl start tftp.socket
#工作目錄
[root@node1 haproxy]# ls /var/lib/tftpboot/
2、dhcp配置引導文件名稱,引導文件地址
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.230 192.168.1.254;
filename "pxelinux.0";
next-server 192.168.1.200;
}
3、掛載光盤當yum源
[root@node1 ~]# cd /mnt/t2/centos/7.5.1804/os/x86_64/
CentOS_BuildTag GPL Packages/ TRANS.TBL
.discinfo images/ repodata/ .treeinfo
EFI/ isolinux/ RPM-GPG-KEY-CentOS-7
EULA LiveOS/ RPM-GPG-KEY-CentOS-Testing-7
配置nginx
server{
listen 8081;
root /mnt/t2 ;
index index.html;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
location / { #匹配根下面所有,但是優先級是最低的 相當於/*
allow all;
}
}
4、準備kickstart腳本
阿裏鏡像地址
http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/
這裏的url可以不配置,在default後面可以添加(centos7 )
centos6的話url必須配置在這裏default不能配置
[root@node1 t2]# vim kickstarts/centos7.5.cfg
auth --enableshadow --passalgo=sha512
#url --url="http://192.168.1.200:8081/centos/7.5.1804/os/x86_64/"
graphical
firstboot --enable
ignoredisk --only-use=sda
keyboard --vckeymap=us --xlayouts=‘us‘
lang en_US.UTF-8
network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network --bootproto=dhcp --device=ens34 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain
selinux --disabled
firewall --disabled
reboot
rootpw --iscrypted $6$FHRgZBjmXVi3kSbe$35zlnY5/LZOBrFgGpLEm5vnVivcvxDoP1NfolrFp.Wf6ACbZn2dMI1WJroDfB5aYfh6u5GHP10LlpFjTU8/vL1
services --disabled="chronyd"
timezone Asia/Shanghai --isUtc --nontp
user --name=zander --password=$6$VjPXeSzaoEtsCW4f$1xvYPZLOjBhr71KclgucATwVyl3Nyp0tOp7acRbFUBgZNVh.jbyzDPvZBzTk1PHkWCxgBgPhWOkZZm4sYdNN6. --iscrypted --gecos="zander"
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
clearpart --none --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=512
part pv.156 --fstype="lvmpv" --ondisk=sda --size=17411
volgroup vg0 --pesize=4096 pv.156
logvol / --fstype="xfs" --grow --maxsize=15360 --size=1024 --name=root --vgname=vg0
logvol swap --fstype="swap" --size=2047 --name=swap --vgname=vg0
%packages
@^minimal
@core
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb=‘auto‘
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
5、內核啟動腳本配置
[root@node1 t2]# yum -y install syslinux
[root@node1 t2]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@node1 t2]# cp centos/7.5.1804/os/x86_64/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
[root@node1 t2]# cp /usr/share/syslinux/{menu.c32,chain.c32,memdisk,mboot.c32} /var/lib/tftpboot/
[root@node1 t2]# cd /var/lib/tftpboot/
[root@node1 tftpboot]# mkdir pxelinux.cfg
[root@node1 pxelinux.cfg]# vim pxelinux.cfg/default
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu
LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.1.200:8081/centos/7.5.1804/os/x86_64/ inst.ks=http://192.168.1.200:8081/kickstarts/centos7.5.cfg text
Linux 自動化安裝介紹