本節PPT連接html
咱們以前安裝系統都是一臺一臺的裝python
如今咱們學習並行安裝---網絡安裝linux
使用KickStart 項目的軟件cobbler(網頁版的kickstart)軟件安裝(見ppt圖片)ios
PXE,是指預啓動執行環境,解決了網絡啓動web
部署以前肯定一下環境是否設置好了,是否和教程中一致redis
kickstart的原理(白海明講)apache
客戶機內存至少2個Gdjango
客戶端想要裝系統,他的電腦必需要支持網絡啓動功能,要支持這個功能必需要有一個網卡,vim
網卡有一個功能PXE,具體來講這是一個芯片,這個芯片的做用就是在主板加電之後,網卡也會跟着加電,加點之後,這個芯片就會向網絡發送4個dhcp包,來得到IPcentos
...
要關閉NetworkManager,不然會報錯
systemctl stop NetworkManager
systemctl disabled NetworkManager
# 而後再ifup eth0 # 這個命令不用
[root@Luffy-pizza ~]# systemctl is-active NetworkManager inactive [root@Luffy-pizza ~]# systemctl is-enabled NetworkManager disabled
以前在使用6的時候咱們講過要一清兩刪
7不用這麼麻煩,只用刪除/etc/sysconfig/network-scripts/ifcfg-eth0和eth1 裏面的UUID 就能夠了
配置yum源,在下載系統的網站中
https://opsx.alibaba.com/mirror在centos列後面能夠找到幫助
點擊幫助,複製命令便可
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
修改默認的 yum源
若是無法上網,從如下方法依次排查
78 ping www.baidu.com ping 外網 79 ping 223.5.5.5 ping 設置的DNS 看DNS對不對 80 route -n 查看路由 81 ping 10.0.0.254 ping網關
還要修改epel源,依賴
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
使用命令yum makecache 在服務器上生成緩存
注意:若是阿里雲的很差使,通常使用清華的,
yum repolist 查看yum源
確認作完了,關機halt ,作快照
根據PXE-KickStart 原理詳細見PPT中本節PPT連接
克隆作好的模板機一臺,修改主機名
[root@hah ~]# hostnamectl set-hostname kickstart [root@hah ~]# cat /etc/hostname kickstart
dhcp是給咱們的客戶端分發IP地址的,
首先關掉虛擬機的dhcp
[root@kickstart ~]# rpm -qa dhcp dhcp-4.2.5-68.el7.centos.1.x86_64 [root@kickstart ~]# rpm -ql dhcp ..
/etc/dhcp/dhcpd.conf 就是須要配置的配置文件
[root@kickstart ~]# cat /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # [root@kickstart ~]# 告訴咱們這個文件是空的,咱們去 一個文件中找例子
PPT中寫好了,詳細的解釋看PPT
cat >>/etc/dhcp/dhcpd.conf<<EOF subnet 172.16.1.0 netmask 255.255.255.0 { range 172.16.1.100 172.16.1.199; option subnet-mask 255.255.255.0; default-lease-time 21600; max-lease-time 43200; next-server 172.16.1.201; filename "/pxelinux.0"; } EOF
上面地址從100-199,有100個地址,可是實際咱們只能用一半(在第1和第5步都會消耗一個IP)
可是有幾百,幾千臺服務器,咱們怎麼來部署系統,通常是,利用交換機分批次的安裝
最好不要讓dhcp開機自啓動,咱們可不但願一開機就裝系統
[root@kickstart ~]# systemctl start dhcpd.service [root@kickstart ~]# systemctl is-enable dhcpd.service Unknown operation 'is-enable'. [root@kickstart ~]# systemctl is-enabled dhcpd.service disabled
開一個窗口查看日誌
[root@kickstart ~]# tail /var/log/messages -f
Mar 14 03:50:44 Luffy-pizza dhcpd: Listening on LPF/eth1/00:0c:29:95:f5:98/172.16.1.0/24
Mar 14 03:50:44 Luffy-pizza dhcpd: Sending on LPF/eth1/00:0c:29:95:f5:98/172.16.1.0/24
已經開始監聽了
啓動了以後,再克隆一臺虛擬機,記得添加一個網卡,而且在一個LAN區段
確保內存、硬盤、LAN區段設置好,啓動虛擬機
啓動後,首先‘掃描eth0’,沒有等到,而後就關閉了,而後在eth1等到了,
分配了IP172.16.1.100 從DHCP172.16.1.201
最後由於TFTP沒有配置,提示超時(在PPT中也有講解)
查看咱們的日誌tailf /var/log/messages
Mar 14 03:58:31 Luffy-pizza dhcpd: DHCPDISCOVER from 00:0c:29:94:c5:9b via eth1 # DHCP 發現了 Mar 14 03:58:32 Luffy-pizza dhcpd: DHCPOFFER on 172.16.1.100 to 00:0c:29:94:c5:9b via eth1 # 發IP Mar 14 03:58:33 Luffy-pizza dhcpd: DHCPREQUEST for 172.16.1.100 (172.16.1.201) from 00:0c:29:94:c5:9b via eth1 # 客戶端說收到了 Mar 14 03:58:33 Luffy-pizza dhcpd: DHCPACK on 172.16.1.100 to 00:0c:29:94:c5:9b via eth1 Mar 14 04:01:01 Luffy-pizza systemd: Started Session 5 of user root. Mar 14 04:01:01 Luffy-pizza systemd: Starting Session 5 of user root.
dhcp服務完成以後,客戶端有了IP,咱們怎麼知道客戶端向誰要對應的配置,和對應的文件?
一個是經過日誌,一個是經過抓包來看。咱們經常使用的抓包軟件一個叫wireshark
可是傳輸的數據在LAN區段中,經過vm8是抓不到的,須要在LINUX下安裝 wireshark
yum install -y wireshark
確認有兩個網卡,而且能夠ping 通 ping 172.16.1.61
默認監聽的是eth0,加上參數修改
tshark -ni eth1 -n的做用是禁止將端口解析成服務名,回車,就開始監聽LAN區段了
重啓新建的要裝系統的客戶端虛擬機,就能夠看到日誌
TFTP服務的做用是給客戶端下載啓動文件,PXE的鏡像和軟件
安裝
[root@kickstart ~]# yum -y install tftp-server
啓動
[root@kickstart ~]# systemctl start tftp.socket
這個時候在查看日誌或者看客戶端啓動過程,提示的是找不到文件
咱們切換到TFTP服務的根目錄下
[root@kickstart ~]# cd /var/lib/tftpboot/ [root@kickstart tftpboot]# ll total 0 [root@kickstart tftpboot]#
裝完軟件syslinux就有了
[root@kickstart tftpboot]# yum install syslinux -y
找一下prelinux.0文件的位置
[root@kickstart tftpboot]# rpm -ql syslinux |grep pxelinux.0 /usr/share/syslinux/gpxelinux.0 /usr/share/syslinux/pxelinux.0
將文件複製到/var/lib/tftpboot/
[root@kickstart tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
繼續重複上面的重啓客戶端的操做,出現了新的問題,即ppt中(那些年咱們才過的坑(3))
由於缺乏pxelinux.0這個小系統的配置文件(default文件決定了安裝界面是什麼樣子),這個文件在系統安裝盤中能夠找到
解決方案見PPT
下圖表示出了tftboot文件下的文件都是來自哪裏
ppt裏面叫安裝HTTP服務
見PPT,做用也在ppt中標明
OK!能夠裝系統了
一、新建虛擬機的內存至少2個G,不然會報錯(磁盤空間不足),客戶機啓動以後,添加了兩塊網卡,其中一塊是LAN區段的,和咱們的DHCP服務器在一個局域網,客戶機就發UDP廣播請求IP地址,
二、DHCP服務器在分配IP的同時,給了客戶機一個next server 告訴他去tftp服務下載引導系統啓動的文件(如pxelinux.0),會常常改的文件叫pxelinux.cfg/default,配置咱們安裝系統的樣式,
[root@kickstart html]# vim /var/lib/tftpboot/pxelinux.cfg/default
三、選擇完成以後,下載好了文件,那麼安裝系統的軟件包在哪裏找呢?在http服務找軟件包
在http服務下載自動應答文件(就不用手動選擇語言和分區等操做)
注:
1)、由於咱們沒有修改內核的參數,因此新裝的系統的IP網卡的名字是ens34.即自動生成的
經過在default配置文件中添加參數能夠修改網卡名
append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/ net.ifnames=0 biosdevname=0
2)、沒有IP地址,由於DHCP服務沒有開啓
[root@kickstart html]# systemctl start dhcpd.service [root@kickstart html]# systemctl start tftp.socket [root@kickstart html]# systemctl start httpd.service
即自動應答文件,裝系統的過程都在這個文件裏面放着呢
見PPT中3中不一樣的編輯ks文件的方法
系統默認的ks文件
[root@kickstart ~]# cat anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom # 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=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.201 --nameserver=223.5.5.5 --netmask=255.255.255.0 --ipv6=auto --activate network --bootproto=static --device=eth1 --ip=172.16.1.0 --netmask=255.255.255.0 --ipv6=auto --activate network --hostname=Luffy-pizza # Root password rootpw --iscrypted $6$g.4ZvAHfTTcmO4Pj$LV0z.V8qYH0DP89NxCJS2SejOfcSvQZDq.TuFT6SsffDVsp7Z.tyDQEYXRSt3KGcsxzqvjoLtVNfLLL/9lxQE0 # System services services --disabled="chronyd" # System timezone timezone Asia/Shanghai --isUtc --nontp user --groups=wheel --name=pizza --password=$6$Zm0fYVfS3AY3MIvL$tvzUY8g2Vx883oFL9lL35LHvvkdlrFh4kxRXht6FbJ9BTjJD846SFD7AGCZt/POvzMKmPOOWQs8BCtQUkx8Ri/ --iscrypted --gecos="pizza" # System bootloader configuration bootloader --location=mbr --boot-drive=sda # Partition clearing information clearpart --none --initlabel # Disk partitioning information part swap --fstype="swap" --ondisk=sda --size=1024 part /boot --fstype="xfs" --ondisk=sda --size=1024 part / --fstype="xfs" --ondisk=sda --size=100351 %packages @^minimal @compat-libraries @core @debugging @development %end %addon com_redhat_kdump --disable --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@kickstart ~]#
白海明手動配置好的ks文件
#platform=x86, AMD64, 或 Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts # old format: keyboard us # new format: keyboard --vckeymap=us --xlayouts='us' # Root password rootpw --iscrypted $1$0ZMwWP.q$wjRkxcadGHkUBDxxzVUYK. # Use network installation url --url="http://192.168.10.42/dvd" # System language lang en_US repo --name="Red Hat Enterprise Linux" --baseurl=http://192.168.10.42/dvd --cost=100 # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text firstboot --disable # SELinux configuration selinux --disabled # System services services --enabled="chronyd" ignoredisk --only-use=sda # Firewall configuration firewall --disabled # Network information network --bootproto=dhcp --device=ens33 # Reboot after installation reboot # System timezone timezone America/New_York # System bootloader configuration bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda #autopart --type=lvm # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="xfs" --size=500 part swap --fstype="swap" --size=2048 part / --fstype="xfs" --grow --size=1 %packages @core %end
李導配置好的
# Kickstart Configurator for CentOS 7 by yao zhang
install
url --url="http://172.16.1.201/CentOS7/"
text
lang en_US.UTF-8
keyboard us
zerombr # 把mbr清空
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.202 --nameserver=223.5.5.5 --netmask=255.255.255.0 --activate
network --bootproto=static --device=eth1 --ip=172.16.1.202 --netmask=255.255.255.0 --activate
network --hostname=Cobbler
#network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
#rootpw 123456 明文的密碼
clearpart --all --initlabel # 清空分區
part /boot --fstype xfs --size 1024
part swap --size 1024
part / --fstype xfs --size 1 --grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@^minimal # @軟件包的名字
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
wget
vim
bash-completion
%end
%post
systemctl disable postfix.service # 腳本 和ks文件放在一塊兒
%end
查找幫助文件,去官網http://access.redhat.com/documenttion/en-us/red.......有中文
生成暗文密碼的命令在PPT中
default文件決定了怎麼安裝系統,去哪裏找系統,暫時瞭解這幾行就能夠了,就這幾行起做用
# 註釋...說明一下centos7 kickstart configure
default ks
timeout 50
prompt 0
label ks
kernel vmlinuz
append initrd=initrd.img ks=http://172.16.1.201/ks_config/CentOS7-ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth1
注:ksdevice指定網卡
將default保存
在服務器建立目錄並上傳ks文件,或者是編寫
腳本也放在這個目錄下
作完以後,試一下能不能訪問到default中的ks文件的目錄
[root@kickstart ks_config]# curl http://172.16.1.201/ks_config/CentOS7-ks.cfg
試一下能不能下載軟件
[root@kickstart ks_config]# curl http://172.16.1.201/CentOS7/
能夠歡快的裝系統了!!
注:kickstart重啓後沒有將光盤掛載放在啓動任務中,開機須要再次掛載,才能正常安裝系統
把主機名改成cobbler
hosts文件添加10.0.0.202 cobbler
修改網卡(0和1),改成靜態的
由於個人配置文件中是已經設置成了靜態的,因此不用修改,可是沒法聯網
全部的設置都是正確的,直到我先重啓cobbler,在關閉kickstart後,能夠上網了!
在開啓kickstart後,kickstart沒有收到影響!
---------------------------------------------------------------------------------------------------------------
有一個坑,使用Centos6部署cobbler的時候,一直安裝不上Django14.須要單獨下載文件安裝
在centos7中不存在這個問題!
--------------------------------------------------------------------------------------------------------------------
開始安裝cobbler
# cobbler在epel源中,跟新epel源,將默認的yum源改成epel curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd python-django # 幫助文檔在官網manuals中
# 啓動cobbler systemctl start cobblerd.service
# 啓動http systemctl start httpd.service # 檢查 cobbler check # 按照提示一個一個修正。裏邊大部分均可以解決
[root@Cobbler ~]# cobbler check The following are potential configuration items that you may want to fix: 1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it. server後面不能寫127.0.0.1,寫本地IP地址或者主機名
2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network. next_server不能是172.0.0.1,改爲和上面同樣的
3 : change 'disable' to 'no' in /etc/xinetd.d/tftp
將默認關閉的yes改爲no 4 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements. 下載引導
5 : enable and start rsyncd.service with systemctl
開啓rsrsyncd.service並設置開機自啓動 6 : debmirror package is not installed, it will be required to manage debian deployments and repositories 7 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one 默認的密碼cobbler,並提供了修改命令openssl passwd -1
8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them fencing tools 工具 和腦裂有關
Restart cobblerd and then run 'cobbler sync' to apply changes.
cobbler是能夠本身去管理dhcp服務的,先配置一下他們,開兩個窗口,一個檢查,一個配置
主要配置文件的位置 /etc/cobbler/settings
默認配置文件修改 /etc/cobbler/dhcp.template
防止誤重裝,防止不停的重裝 sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings 配置Cobbler統一管理DHCP 將0改成1 sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings 配置DHCP Cobbler模版,修改IP地址,並刪除22和23兩行 sed -i.ori 's#192.168.1#172.16.1#g;22d;23d' /etc/cobbler/dhcp.template
# 解決了上面的大部分問題。只剩下兩個,不用解決也行,根據提示運行命名
# 啓動服務,同步配置 systemctl start rsyncd systemctl enable rsyncd systemctl enable tftp.socket systemctl start tftp.socket systemctl restart cobblerd.service cobbler sync # 修改完後 就啓動了 # web操做cobbler https://10.0.0.202/cobbler_web 帳號密碼默認均爲cobbler --實際中已經修改爲了123456 接下來就在網頁上操做,enjoy!
並無訪問成功,在網上找到解決方案 https://blog.51cto.com/12643266/2339793 跟新django版本
還是使用的密碼cobbler
和kickstart相似,首先須要一個鏡像
左邊的Action---import DVD
prefix是名字,必定要寫上 。默認的路徑是/var/www/cobbler/ks_mirror裏面
arch 是64位,以前默認是i386
path必定要寫上,/mnt/下必定要有光盤,要將光盤掛載到/mnt/下。mount /dev/cdrom /mnt/
點擊run開始同步,完成以後events中顯示complete,正在同步就是running
它不像kickstart能夠直接讀取光盤內容,必需要導入到系統目錄中
Configuration---settings
Configuration---distros:發行版本,就是導入進來了什麼系統,能夠修改一些參數,好比
加入net.ifnames=0 biosdevname=0 修改網卡名
修改這一項就能夠了,save
Configuration---Kickstart Templates: 放了默認的ks文件,只是 通常都不用,只是爲了學習用的吧
看一個編輯好的配置文件
# Cobbler for Kickstart Configurator for CentOS 7 by yao zhang install url --url=$tree # 使用了tree變量,變量在Distros中定義了 text # 文本模式安裝 lang en_US.UTF-8 # 字符集 keyboard us # 鍵盤語言 zerombr # 清空mbr bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # 啓動的 #Network information network_config是一個文件名,在/var/lib/snippets下 $SNIPPET('network_config') # 經過這一條短命令實現網絡配置, #network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7 timezone --utc Asia/Shanghai authconfig --enableshadow --passalgo=sha512 rootpw --iscrypted $default_password_crypted clearpart --all --initlabel part /boot --fstype xfs --size 1024 part swap --size 1024 part / --fstype xfs --size 1 --grow firstboot --disable # 系統初始化的軟件 selinux --disabled firewall --disabled logging --level=info reboot %pre $SNIPPET('log_ks_pre') #記錄日誌 $SNIPPET('kickstart_start') # 開啓ks $SNIPPET('pre_install_network_config') # 安裝以前對網絡的預配置 # Enable installation monitoring $SNIPPET('pre_anamon') # 監控系統安裝的步驟 %end %packages @^minimal @compat-libraries @core @debugging @development bash-completion chrony dos2unix kexec-tools lrzsz nmap sysstat telnet tree vim wget %end %post systemctl disable postfix.service %end
把這個文件保存到Configuration---Kickstart Templates中
在系統中查看在不在
[root@Cobbler centos7.4-x86_64]# ll /var/lib/cobbler/kickstarts/ total 60 -rw-r--r-- 1 root root 1028 Mar 14 16:44 centos7.ks
Configuration---Profiles
單擊上傳的系統,或者進入編輯
將kickstart 選擇咱們我剛剛建立的ks文件
kernel options 能夠加上那兩個內核參數,也能夠不加
save!
咱們要自動安裝系統,它是根據system裏面的配置來安裝了。因此咱們能夠建立一個自定義的system
單擊add,下面的內容才能繼續添加
mac地址在(虛擬機網卡---高級---能夠找到MAC地址)
save!!
作完修改要點擊一下Action下的Sync 。至關於在命令行執行 cobbler sync
注意:有時候在恢復快照的時候,虛擬機的MAC地址會變,要留意