運維系統自動化安裝
實驗1:制作啟動iso迷你版,yum源依賴網絡
1.創建引導光盤,復制光盤下的isolinux文件夾到指定的刻錄光盤的目錄下
cp -r /misc/cd/isolinux/ /app/iso
2.編輯菜單項isolinux.cfg加上一個圖形化安裝和mini模式安裝,一個本地安裝和手動安裝
vim/app/iso/isolinux/isolinux.cfg(下面這些都是可以更改的)
menu title Welcome to CentOSAutoinstall!
labellinux
menu label AutoInstall a ^desktop system
kernel vmlinuz
append initrd=initrd.imgks=cdrom:/ks.desktop.cfg
label mini
menu label AutoInstall a mini ^system
kernel vmlinuz
append initrd=initrd.imgks=cdrom:/ks.mini.cfg
label mannual
menu label ^mannual installed system
kernel vmlinuz
append initrd=initrd.img
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
3.把提前做好的應答文件復制到刻錄光盤的根目錄下
cp /root/ks.mini.cfg /app/iso/:mini版的應答文件
cp /root/ks.desktop.cfg /app/iso/:圖形化的應答文件
4.制作光盤鏡像
mkisofs -R -J-T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "Autoinstallcentosboot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o/root/centos6boot.iso /app/iso
5.可以把它制作成
1.ddif=centos6boot.iso of=/dev/sdb
2.轉換成U盤格式,因為有些U盤不支持這種格式,所以需要轉換一下格式
rpm -q syslinux
isohybrid centos6boot.iso
3.在setup參數設置中把U盤改成第一引導盤,然後重新啟動選擇U盤啟動就可以安裝系統了。
易錯tips:
1.整個完成的目錄結構如下,app/iso作為光盤的根目錄:
[[email protected]]# tree /app/iso/
/app/iso/
├── isolinux
│ ├── boot.cat
│ ├── boot.msg
│ ├── grub.conf
│ ├── initrd.img
│ ├── isolinux.bin
│ ├── isolinux.cfg
│ ├── memtest
│ ├── splash.jpg
│ ├── TRANS.TBL
│ ├── vesamenu.c32
│ └── vmlinuz
├── ks.desktop.cfg
└── ks.mini.cfg
2.應答文件的路徑在光盤的根目錄下
ks=cdrom:/ks.desktop.cfg
ks=cdrom:/ks.desktop.cfg
3.制作光盤鏡像的時候的路徑一定要明確,iso文件的根路徑和制作後存放的路徑
/root/centos6boot.iso/app/iso
4.制作成優盤的時候可以試著掛載,然後查看一下mbr數據是否存在
mount /dev/sdd /mnt/iso/
hexdump -C -n 512 /dev/sdd
5.最重要的是能聯網可以拿到yum源,不然就是白搭。
實驗2:完整版的啟動光盤的制作,包括yum源和ks文件
第一步:復制完整的光盤目錄到要刻錄光盤的路徑下,由於光盤目錄下有一些隱藏文件,我們可以直接復制整個目錄過來並改名,不用提前創建目錄,所以光盤的根目錄就是centos6iso
cp -rv/misc/cd /app/centos6iso
第二步:把復制過來的文件中TRANS.TBL刪除掉,暫時不要,留著創建光盤可能會失敗。
find /app/centos6iso/ -name TRANS.TBL -OK RM {} \;
第三步:刪除掉復制過來的yum源,自己創建,復制過來的不能用,只需要創建下面這個文件就可以把yum源恢復過來。
rm -rf /app/centos6iso/repodata/
createrepo -g/misc/cd/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml/app/centos6iso/
第四步:創建一個目錄存放應答文件
mkdir /app/centos6iso/ksdir
第五步:復制制作好的應答文件到ksdir中
cp/root/{ks.mini.cfg,ks.desktop.cfg} /app/centos6iso/ksdir/
第六步:修改應答文件,因為yum源在制作在光盤中,所以yum源的路徑需要更改成光盤。
cdrom
#url--url="http://172.17.0.1/centos/6"
第七步:修改菜單文件isolinux.cfg,應答文件路徑是在光盤根目錄下的子文件ksdir目錄下。
defaultvesamenu.c32
#prompt 1
timeout 600
displayboot.msg
menubackground splash.jpg
menu titleWelcome to CentOS Autoinstall!
label desktop
menu label Autoinstall a ^desktop system
kernel vmlinuz
append initrd=initrd.img ks=cdrom:ksdir/ks.desktop.cfg
label mini
menu label ^Auto Install a mini system
kernel vmlinuz
append initrd=initrd.imgks=cdrom:ksdir/ks.mini.cfg
label mannual
menu label ^mannual install a system
kernel vmlinuz
append initrd=initrd.img
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
第八步:制作光盤。
mkisofs -R -J -T -v --no-emul-boot--boot-load-size 4 --boot-info-table -V "Autoinstall centosboot" -bisolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6boot.iso/app/centos6iso
Tips:
光盤根目錄的文件夾如下:
[[email protected]]# cd centos6iso/
[[email protected]]# ls
CentOS_BuildTag EULA images ksdir RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Security-6
EFI GPL isolinux Packages repodata RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Testing-6
實驗3:在centos7實現PXE支持centos6和7的安裝,cnetos6也差不多就是tftp服務的啟動需要依賴於xinetd的啟動,主要就是服務的啟動不同。
第一步:僅主機的模式的獨立網段vmnet11,vmware自帶的dhcp功能禁用;禁用iptables和selinux。
第二步:安裝所需要的包,只需要一臺主機充當tftp和dhcp服務器
yum install vsftpd dhcp tftp-server syslinux
第三步:啟動這幾個服務,其他幾個服務可以直接啟動,dhcp服務啟動必須要把配置文件激活,如下
1、cp/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
systemctl start dhcpd
systemctl enable dhcpd
2、systemctlrestart tftp
systemctl enable tftp
3、systemctlrestart vsftpd
systemctl enable vsftpd
第四步:因為安裝兩個系統,所以需要兩張光盤的yum源和啟動文件,記住光盤不要搞錯了,我都掉坑了,出現裝包的時候系統不兼容一直無法安裝httpd,然後才用vsftpd的,一直出錯浪費時間。
mkdir /var/ftp/pub/centos/{6,7} -pv
vim/etc/fstab
/dev/sr0/var/ftp/pub/centos/6 iso9660 defaults 0 0
/dev/sr1/var/ftp/pub/centos/7 iso9660 defaults 0 0
mount -a
第五步:準備應答文件,和yum源放在一個地方,比較方便,然後把系統6的模板文件傳過來制作應答文件並改名ks6.cfg。
mkdir /var/ftp/pub/ksdir
[email protected]:/root/anaconda-ks.cfg /var/ftp/pub/ksdir/
mv anaconda-ks.cfg ks6.cfg
ks6.cfg 內容如下:
# Kickstartfile automatically generated by anaconda.
#version=DEVEL
install
url--url=ftp://192.168.134.162/pub/centos/6
langen_US.UTF-8
keyboard us
network--onboot yes --device eth0 --bootproto dhcp --noipv6
network--onboot yes --device eth1 --bootproto dhcp --noipv6
rootpw --iscrypted$6$awHNUW8Nm4cVeCHm$FFwPpGJqCFCZY/vMoFA5hw4Nz7gve2stV3mMPO9mMdqumJf837vVDkxwZ0Dq/WM/zaJczktCXaau4P83RoVFP1
firewall--disable
authconfig--enableshadow --passalgo=sha512
selinux--disabled
timezoneAsia/Shanghai
bootloader --location=mbr--driveorder=sda --append="crashkernel=auto rhgb quiet"
# Thefollowing is the partition information you requested
# Note thatany partitions you deleted are not expressed
# here sounless you clear all partitions first, this is
# not guaranteedto work
clearpart--all
zerombr
reboot
text
part /boot--fstype=ext4 --size=1024
part /--fstype=ext4 --size=51200
part /app--fstype=ext4 --size=51200
part swap--size=4096
%packages
@base
@chinese-support
@core
@debugging
@basic-desktop
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
mtools
pax
%end
ksvalidatorks7.cfg:檢查語法
ks7.cfg內容如下:
# Systemauthorization information
auth--enableshadow --passalgo=sha512
# Use CDROMinstallation media
url--url=ftp://192.168.134/pub/centos/7
# Usegraphical install
text
reboot
# Run the SetupAgent on first boot
firstboot--disable
ignoredisk--only-use=sda
# Keyboardlayouts
keyboard--vckeymap=us --xlayouts=‘us‘
# Systemlanguage
langen_US.UTF-8
# Networkinformation
network --bootproto=dhcp --device=ens33--onboot=on --ipv6=auto --activate
network --hostname=localhost.localdomain
# Rootpassword
rootpw--iscrypted$6$VWWsz3IDVWgWQxru$IctzHzYw.xr21EW.2FgNgLbkDec5U83f9FLbBGopY4X6dvmqPx790lKGECpPYADdrGQDCZhvTVGvqu2b8.ZAF/
# Systemservices
services--enabled="chronyd"
# Systemtimezone
timezoneAmerica/New_York --isUtc
user--name=magedu--password=$6$m.LU6qXZO229yz/g$7885C9c9HhQoM8yVi1C7b.vg1vCK4K0f8b0rhER5wmY/J7hfa0vTy./uZW.1ts5j5ve0ejW/v9caMmIvttJfz1--iscrypted --gecos="magedu"
# X WindowSystem configuration information
xconfig --startxonboot
# Systembootloader configuration
zerombr
bootloader--location=mbr --boot-drive=sda
autopart--type=plain
# Partitionclearing information
clearpart--all --initlabel --drives=sda
skipx
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
%end
%addoncom_redhat_kdump --enable --reserve-mb=‘auto‘
%end
%anaconda
pwpolicy root--minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy user--minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy luks--minlen=6 --minquality=50 --notstrict --nochanges --notempty
%end
ksvalidatorks7.cfg 檢查語法
第六步:復制菜單文件和pxelinux.0到tftpboot下,並且創建一個default的菜單文件。tftpboot相當於就是系統的根目錄。
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /var/ftp/pub/centos/7/isolinux/isolinux.cfg default
第七步:在tftpboot下創建兩個文件夾存放centos7和centos6的啟動文件。
mkdir /var/lib/tftpboot/centos6
mkdir /var/lib/tftpboot/centos7
cp/var/ftp/pub/centos/6/isolinux/initrd.img /var/lib/tftpboot/centos6
cp /var/ftp/pub/centos/6/isolinux/vmlinuz /var/lib/tftpboot/centos6
cp /var/ftp/pub/centos/7/isolinux/vmlinuz /var/lib/tftpboot/centos7
cp/var/ftp/pub/centos/7/isolinux/initrd.img /var/lib/tftpboot/centos7
第八步:編寫菜單
vim/var/lib/tftpboot/pxelinux.cfg/default
defaultmenu.c32
timeout 600
menu titleCentOS Linux 7
label centos7
menu label Auto Install CentOS Linux ^7
kernel centos7/vmlinuz
append initrd=centos7/initrd.imgks=ftp://192.168.134.162/pub/ksdir/ks7.cfg
label centos6
menu label Auto install Centos linux ^6
kernel centos6/vmlinuz
append initrd=centos6/initrd.img ks=ftp://192.168.134.162/pub/ksdir/ks6.cfg
labelmannualcentos6
menu label ^mannual install centos linux6
kernel centos6/vmlinuz
append initrd=centos6/initrd.imginst.repo=ftp://192.168.134.162/centos/6/
label local
menu default
menu label Boot from ^local drive
laocalboot 0xffff
menu end
第九步:新建一個虛擬機,在同一個網段,不然拿不到yum源和應答文件
整個步驟具體的文件目錄如下:
1、/var/lib/tftpboot
├── centos6
│ ├── initrd.img
│ └── vmlinuz
├── centos7
│ ├── initrd.img
│ └── vmlinuz
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
└── default
2、[[email protected]]# ls
centos ksdir
[[email protected]]# cd centos/
[[email protected]]# ls
6 7
[[email protected]]# cd ..
[[email protected]]# cd ksdir/
[[email protected]]# ls
ks6.cfg ks7.cfg
實驗4:cobbler 實現PXE安裝
首先禁用iptales和selinux,然後找一個獨立的網段,僅主機模式。
第一步:安裝cobbler軟件它相當於代理裝了tftp ,http,,它屬於epel源,安裝dhcp軟件
yum install cobbler dhcp
第二步:啟動各個服務,不包括dhcp,它現在還沒有配置文件
systemctlenable cobblerd httpd tftp dhcpd
systemctlstart cobblerd httpd tftp
第三步:環境檢查cobbler,報出8條錯誤,一共有四條需要改的地方。
cobbler check
vim/etc/cobbler/settings
next_server: 自己的主機ip
server: 自己的主機ip
default_password_crypted:"$1$loV1KZf9$mb82i2T9N3UOWGmHWojOP0"
opensslpasswd -1 生成口令
systemctlrestart cobblerd重新啟動服務
第四步:在第三步的基礎上還需下載一個啟動文件
如果當前節點可以訪問互聯網,根據提示執行“cobbler getloaders”命令即可;否則,需要安裝syslinux程序包,而後復制/usr/share/syslinux/{pxelinux.0,memu.c32}等文件至/var/lib/cobbler/loaders/目錄中,一般都是直接復制到/var/lib/tftpboot/下面。然後同步數據cobbler sync。
第五步:準備dhcp服務器了,讓cobbler直接代理dhcp服務器,然後直接改動模板文件就會生成dhcp的配置文件,然後就可以啟動dhcp服務器了。
vim/etc/cobbler/settings
manage_dhcp:1
vim /etc/cobbler/dhcp.template
subnet192.168.134.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.134.100 192.168.134.254;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
class "pxeclients" {
match if substring (optionvendor-class-identifier, 0, 9) = "PXEClient";
同步數據cobbler sync
第六步:開始準備yum源,導入光盤然後查詢,就可以直接安裝了,菜單文件默認已經配置好了。
obbler import--path=/misc/cd/ --name=centos7.3
cobblerdistro list查詢yum源,也就是查詢系統
cobblerprofile list查詢應答文件
第七步:可以把系統6也加進來,加上光盤,然後導入查詢,可以看到兩個系統。對應兩個應答文件,菜單文件已經默認配置好了,不需要配置。
mount/dev/sr1 /mnt
cobblerimport --path=/mnt --name=centos6.9
cobblerdistro list查詢yum源,也就是查詢系統
cobblerprofile list查詢應答文件
第八步:它默認的應答文件都是最小化安裝,如果想要自己配置應答文件可以自己導入進來,需要註意的就是應答文件必須放在它默認的路徑下。
cobblerprofile add --name=centos6.9desktop --distro=centos6.9-x86_64--kickstart=/var/lib/cobbler/kickstarts/ks6.cfg
第九步:自己配置的應答文件需要把yum源改成cobbler默認的yum源
vim/var/lib/cobbler/kickstarts/ks6.cfg
url--url=$tree
整個實驗做完了,這個和單純pxe不同的就是,應答文件和yum源在不同目錄下,不可以隨便放,都有默認的位置,yum源在/var/www/cobbler/ks_mirror/這個目錄下,它自己會默認放在裏面不用管,如果是自己的配置的應答文件需要自己放在/var/lib/cobbler/kickstarts/,當然不能忘記應答文件的yum源要指向$tree這個變量,如果是它默認的配置的應答文件就不用管了。菜單文件在var/lib/tftpboot/pxelinux.cfg會自己生成菜單文件,不需要修改了。
運維系統自動化安裝