1. 程式人生 > >Linux 自動化安裝介紹

Linux 自動化安裝介紹

linux pex

介紹pex之前先來介紹了dhcp服務。
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%進行觸發,直到續租成功)

6、服務器:(ack|nack)

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 自動化安裝介紹