s16.运维自动化之系统部署 -- 实战案例:实现PXE自动化安装Ubuntu 18.04

623 阅读4分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

1.在Ubuntu 18.04 上实现PXE自动化安装Ubuntu 18.04

参考文档:c-nergy.be/blog/?p=131…

blog.csdn.net/Linuxprobe1…

1.1 安装httpd并启动

root@ubuntu1804:~# apt -y install apache2
root@ubuntu1804:~# systemctl start apache2
root@ubuntu1804:~# systemctl enable --now apache2
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
root@ubuntu1804:~# systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Sun 2021-11-28 14:31:40 CST; 1min 8s ago
 Main PID: 2012 (apache2)
    Tasks: 55 (limit: 2287)
   CGroup: /system.slice/apache2.service
           ├─2012 /usr/sbin/apache2 -k start
           ├─2015 /usr/sbin/apache2 -k start
           └─2016 /usr/sbin/apache2 -k start
​
Nov 28 14:31:40 ubuntu1804 systemd[1]: Starting The Apache HTTP Server...
Nov 28 14:31:40 ubuntu1804 systemd[1]: Started The Apache HTTP Server.

1.2 安装dnsmasq

root@ubuntu1804:~# apt -y install dnsmasq

053.jpg

在安装过程中,你会看到一些关于端口53已经在使用的错误…在这个阶段,你可以忽略这些错误

1.3 创建您的TFTP文件夹结构

root@ubuntu1804:~# mkdir -p /tftp/boot
​
root@ubuntu1804:~# tree /tftp/
/tftp/
└── boot
​
1 directory, 0 files

1.4 将需要的文件复制到TFTP文件夹中

root@ubuntu1804:~# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
root@ubuntu1804:~# cp -r /mnt/install/netboot/* /tftp/boot/
​
root@ubuntu1804:~# tree /tftp/boot/
/tftp/boot/
├── ldlinux.c32 -> ubuntu-installer/amd64/boot-screens/ldlinux.c32
├── pxelinux.0 -> ubuntu-installer/amd64/pxelinux.0
├── pxelinux.cfg -> ubuntu-installer/amd64/pxelinux.cfg
├── ubuntu-installer
│   └── amd64
│       ├── boot-screens
│       │   ├── adtxt.cfg
│       │   ├── exithelp.cfg
│       │   ├── f10.txt
│       │   ├── f1.txt
│       │   ├── f2.txt
│       │   ├── f3.txt
│       │   ├── f4.txt
│       │   ├── f5.txt
│       │   ├── f6.txt
│       │   ├── f7.txt
│       │   ├── f8.txt
│       │   ├── f9.txt
│       │   ├── ldlinux.c32
│       │   ├── libcom32.c32
│       │   ├── libutil.c32
│       │   ├── menu.cfg
│       │   ├── prompt.cfg
│       │   ├── rqtxt.cfg
│       │   ├── splash.png
│       │   ├── stdmenu.cfg
│       │   ├── syslinux.cfg
│       │   ├── txt.cfg
│       │   └── vesamenu.c32
│       ├── initrd.gz
│       ├── linux
│       ├── pxelinux.0
│       └── pxelinux.cfg
│           └── default -> ../boot-screens/syslinux.cfg
└── version.info
​
5 directories, 30 files

1.5 将安装文件复制到web服务器中

root@ubuntu1804:~# mkdir -p /var/www/html/ubuntu/18
root@ubuntu1804:~# cp -r /mnt/* /var/www/html/ubuntu/18

054.jpg

1.6 配置您的系统使用dnsmasq服务

root@ubuntu1804:~# vim /etc/dnsmasq.conf
#接口信息
#使用IP addr查看系统上的接口名称
interface=eth0,lo 
bind-interfaces
domain=raymonds.cc
​
#DHCP设置
#dhcp设置范围
dhcp-range=172.31.7.1,172.31.7.254,255.255.248.0,2h
#网关设置选项
dhcp-option=3,172.31.0.2 
#设置DNS服务器选项
dhcp-option=6,180.76.76.76,223.6.6.6
#dns转发信息
server=8.8.8.8#指定TFTP选项
#pxeboot文件的位置
dhcp-boot=/boot/pxelinux.0,pxeserver,172.31.2.18
#启用tftp服务
enable-tftp
#tftp的根文件夹
tftp-root=/tftp
​
root@ubuntu1804:~# systemctl enable --now dnsmasq
Synchronizing state of dnsmasq.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable dnsmasq
root@ubuntu1804:~# systemctl status dnsmasq
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-11-28 15:05:15 CST; 7s ago
  Process: 3631 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
  Process: 3622 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
  Process: 3621 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)
 Main PID: 3630 (dnsmasq)
    Tasks: 1 (limit: 2287)
   CGroup: /system.slice/dnsmasq.service
           └─3630 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --t
​
Nov 28 15:05:15 ubuntu1804 dnsmasq[3630]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth nett
Nov 28 15:05:15 ubuntu1804 dnsmasq-dhcp[3630]: DHCP, IP range 172.31.7.1 -- 172.31.7.254, lease time 2h
Nov 28 15:05:15 ubuntu1804 dnsmasq-dhcp[3630]: DHCP, sockets bound exclusively to interface eth0
Nov 28 15:05:15 ubuntu1804 dnsmasq-tftp[3630]: TFTP root is /tftp
Nov 28 15:05:15 ubuntu1804 dnsmasq[3630]: using nameserver 8.8.8.8#53
Nov 28 15:05:15 ubuntu1804 dnsmasq[3630]: reading /etc/resolv.conf
Nov 28 15:05:15 ubuntu1804 dnsmasq[3630]: using nameserver 8.8.8.8#53
Nov 28 15:05:15 ubuntu1804 dnsmasq[3630]: using nameserver 127.0.0.53#53
Nov 28 15:05:15 ubuntu1804 dnsmasq[3630]: read /etc/hosts - 5 addresses
Nov 28 15:05:15 ubuntu1804 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

1.7 编辑响应文件

root@ubuntu1804:~# apt -y install system-config-kickstart
root@ubuntu1804:~# export DISPLAY=172.31.0.1:0.0
root@ubuntu1804:~# system-config-kickstart
​
(system-config-kickstart.py:6335): libglade-WARNING **: 16:32:17.475: Could not load support for `gnome': libgnome.so: cannot open shared object file: No such file or directory
#应答文件制作参考2.3 kickstart文件创建
​
root@ubuntu1804:~# cat /var/www/html/ks/ubuntu18.cfg 
#Generated by Kickstart Configurator
#platform=AMD64 or Intel EM64T#System language
lang en_US
#Language modules to install
langsupport en_US
#System keyboard
keyboard us
#System mouse
mouse
#System timezone
timezone Asia/Shanghai
#Root password
rootpw --disabled
#Initial user
user raymond --fullname "raymond" --iscrypted --password $1$GF21pNEY$zv4EuFzf5LjeBhaCGIu4p0
#Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use Web installation
url --url http://172.31.2.18/ubuntu/18
#System bootloader configuration
bootloader --location=mbr --append net.ifnames=0 
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel 
#Disk partitioning information
part /boot --fstype ext4 --size 1024 
part swap --size 2048 
part / --fstype ext4 --size 1 --grow 
#System authorization infomation
auth  --useshadow  --enablemd5 
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled 
#Do not configure the X Window System
skipx
%packages
openssh-server

1.8 编辑引导文件

root@ubuntu1804:~# vim /tftp/boot/pxelinux.cfg/default 
# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path ubuntu-installer/amd64/boot-screens/
include ubuntu-installer/amd64/boot-screens/menu.cfg
default ubuntu-installer/amd64/boot-screens/vesamenu.c32
prompt 0
timeout 1
default install
label install
append ks=http://172.31.2.18/ks/ubuntu18.cfg initrd=ubuntu-installer/amd64/initrd.gz –

1.9 修改网络引导器中的txt.cfg文件

root@ubuntu1804:~# vim /tftp/boot/ubuntu-installer/amd64/boot-screens/txt.cfg
default install
label install
    menu label ^Install
    menu default
    kernel ubuntu-installer/amd64/linux
    append ks=http://172.31.2.18/ks/ubuntu18.cfg vga=788 initrd=ubuntu-installer/amd64/initrd.gz live-installer/net-image=http://172.31.2.18/ubuntu/18/install/filesystem.squashfs clock-setup/ntp=false ip=dhcp ksdevice=bootif --- quiet 
label cli
    menu label ^Command-line install
    kernel ubuntu-installer/amd64/linux
    append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet

1.10 通过pxeboot一台BIOS计算机测试您的设置

安装过程

055.jpg

056.jpg