foreman提供了一個基於kickstart的部署工具,輸入一臺服務器的部署網卡的mac地址和hostname、ip等信息,就能自動的幫咱們部署完,而且,還能夠生成一個部署iso,用於該服務器的從新部署。html
foreman經過代理DNS、DHCP、TFTP完成了kickstart、cobbler、jumpstart等各類自動化安裝系統工具的圖形統一管理串口,實現的結果是隻須要在foreman上指定各類模板(pxe、ks),不一樣的模板還能夠嵌套各類片斷(snippet)達到統1、簡化的目的。完成以後,即可以添加節點,關聯定義的各類模板生成各類pxe和ks文件實現自動化安裝。linux
安裝軟件源---》安裝foreman---》web界面設置 Provisioning Setup---》手動配置智能代理(dhcp、dns、tftp等)---》web界面部署第一個節點---》開啓虛擬機開始自動安裝oswebpack
web界面設置包括以下:(其中第一個節點加入foreman後,foreman會利用這個臺節點建立一些信息,咱們也能夠按照需求新建一些信息,這個示例利用了這些信息,咱們主要是配置安裝源及模板的設置。)web
architectures:定義軟件架構apache
hardware models:軟件架構vim
installation media:安裝源windows
partition tables:分區方法centos
provisioning templates:部署模板服務器
operating systems:最後一項配置,依賴以前的幾項配置,選各類配置如軟硬件架構,各類模板
架構
1)先掛載光盤
2)用httpd作源
咱們前面已經部署了foreman因此係統已經部署了apache服務,
把掛載的光盤內容放在httpd目錄
mkdir -p /mnt/repo/centos7
mount /dev/cdrom /media
查看http目錄關注標紅的行便可,知道其默認目錄爲
cat /etc/httpd/conf.d/05-foreman.conf
root@www pxelinux.cfg]# cat /etc/httpd/conf.d/05-foreman.conf # ************************************ # Vhost template in module puppetlabs-apache # Managed by Puppet # ************************************ <VirtualHost *:80> ServerName www.puppet-foreman.com ## Vhost docroot DocumentRoot "/usr/share/foreman/public" ## Directories, there should at least be a declaration for /usr/share/foreman/public <Directory "/usr/share/foreman/public"> Options SymLinksIfOwnerMatch AllowOverride None Require all granted </Directory>。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。
。。。。。。。 <Directory ~ /usr/share/foreman/public/(assets|webpack)> # Use standard http expire header for assets instead of ETag <IfModule mod_expires.c> Header unset ETag FileETag None ExpiresActive On ExpiresDefault "access plus 1 year" </IfModule>。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。
。。。。。 </VirtualHost> PassengerPreStart http://www.puppet-foreman.com:80 [root@www pxelinux.cfg]#
得知目錄進行mv
mv /mnt/repo/ /usr/share/foreman/public/
3)建立安裝源文件
vim /etc/yum.repo.d/all_deps.repo
[root@www pxelinux.cfg]# cat /etc/yum.repos.d/all_deps.repo [centos7] name=centos7 baseurl=http://192.168.216.234/repo/centos7 gpgcheck=0 enabled=1
添加好源後記得yum clean all yum makecache
架構,定義x86_64,i386,unix,windows等
硬件型號,定義硬件具體型號
安裝介質,定義安裝源媒介或者路徑
操做系統,定義操做系統具體型號好比centos,redhat,bsdfree等
模板
分區表
置備模板
咱們如今添加安裝介質,能夠是URL或者nfs,咱們用剛剛添加源的URL
http://192.168.216.234/repo/centos7
因爲架構和硬件型號及操做系統,咱們裝玩foreman後本機就已經識別好,因此先添加安裝介質
流程:主機---》安裝介質---》建立媒體---》添加:name、path、操做系統
編輯模板須要具備ks知識,我這裏隨便克隆一下,也沒改,先測試一下
流程:主機---》置備模板---》選則kickstart default pxelinux 模板 克隆按鈕---》編輯相應的信息---》name,code---》類型-這裏選pxelinux---》組合-這裏操做系統選centos7---》提交
圖示以下:
1)主機---》置備模板---》
2)選則kickstart default pxelinux 模板 克隆按鈕---》
3)編輯相應的信息---》name,code---》
4)類型-這裏選pxelinux---》
5)組合-這裏操做系統選centos7---》提交
流程:主機---》操做系統--->點擊主機」CentOS 7.6.1810「 ---》操做系統參數---》分區表---》安裝介質---》模板---》提交
1)主機---》操做系統--->點擊主機」CentOS 7.6.1810「 ---》
2)操做系統參數---》
3)分區表---》
4)安裝介質
5)模板---》提交
注意:建立主機能夠添加三個模板,一個是pxelinux模板,一個是置備模板,一個是徹底模板,而且不是鎖定狀態,因此須要克隆一個新的模板,
一、三個原始模板分別是:完成模板:kickstart default finish
置備模板:kickstart default
pxelinux模板:kickstart default pxelinux
二、能夠運行一下看看效果
三、克隆時咱們分別在原名稱上添加test字樣便可,隨便更名字
(上面小結「4」已經說明如何克隆模板,這裏不作介紹了)
具體請參考另一篇文章,具體介紹模板,文章更新後在加上鍊接
新版本我沒有找到Infrastructure->Provisioning setup導航,這個導航能夠就像一個初始化指導同樣如圖下,輸入可用信息,而後生成配置步驟
os部署須要tftp及dhcp,dns能夠暫時不部署
[root@www repodata]# foreman-installer \ > --enable-foreman-proxy \ > --foreman-proxy-tftp=true \ > --foreman-proxy-tftp-servername=192.168.216.234 \ > --foreman-proxy-dhcp=true \ > --foreman-proxy-dhcp-interface=ens33 \ > --foreman-proxy-dhcp-gateway=192.168.216.234 \ > --foreman-proxy-range="192.168.216.155 192.168.216.165"
若是是沒聯網的機器關閉下面這個源
> --foreman-configure-epel-repo=false 關閉
tftp須要提供bootloader,及內核文件,具體什麼做用能夠參考pxe+http+kickstart實驗原理
文檔上也有寫:https://www.theforeman.org/manuals/1.21/index.html#4.3.9TFTP
做用:
vmlinuz kenrnel file
vesamenu.32 圖形菜單
isolinux.cfg 開機菜單設定
initrd.img 開啓過程當中核心組件參數
cd /usr/share/foreman/public/repo/centos7 cp isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #這個其實不用拷了,後面說說 cp images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/boot cp isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/
一、tftp默認目錄必須存在
二、pxe引導先決條件:(/usr/share/syslinux中)
pxelinux.0
menu.c32
chain.c32
三、內核文件放在/var/lib/tftpboot/boot/
四、須要準備/var/lib/tftpboot/pxelinux.cfg/default
其實這個文件不須要手動寫,咱們在定義host得時候其實能夠pxe和ks一塊兒部署了,只是以前沒有找到方法耽誤了很長時間。下面介紹如何操做
流程:主機---》建立主機---》主機---》操做系統---》接口---》puppet類---》參數---》附加信息
1)主機---》建立主機
2)主機---》
3)操做系統---》
4)接口---》
點擊編輯添加箭頭指向的信息,也就是你須要建立主機的mac/ip/域名
虛擬機得mac在下圖能夠看到
5)puppet類---》參數---》
這裏咱們暫時不用設置
6)附加信息
以前還納悶沒有pxe文件怎麼執行安裝菜單那,原理foreman建立主機後就已經生成了以mac爲名稱的文件
下面是示例,由於以前又克隆一個主機因此是新的主機,所喲mac地址不一樣
[root@www pxelinux.cfg]# ll total 16 -rw-r--r-- 1 foreman-proxy foreman-proxy 557 Jun 4 11:53 01-00-50-56-2f-4e-fe -rw-r--r-- 1 foreman-proxy foreman-proxy 1058 Jun 3 17:49 default drwxr-xr-x 2 root root 142 Jun 3 15:33 test [root@www pxelinux.cfg]# cat 01-00-50-56-2f-4e-fe # This file was deployed via 'Kickstart default PXELinux test' template DEFAULT menu MENU TITLE Booting into OS installer (ESC to stop) TIMEOUT 100 ONTIMEOUT installer LABEL installer MENU LABEL Kickstart default PXELinux test KERNEL boot/centos7-test1-pPa2hWu9wvb7-vmlinuz APPEND initrd=boot/centos7-test1-pPa2hWu9wvb7-initrd.img ks=http://www.puppet-foreman.com/unattended/provision?token=241cc771-e27d-4f81-99a9-30e4cbc7628b network ksdevice=bootif ks.device=bootif BOOTIF=00-00-50-56-2f-4e-fe kssendmac ks.sendmac inst.ks.sendmac IPAPPEND 2
建立虛擬機的步驟這裏就省略了,能夠自行建立便可
啓動虛擬機
看到菜單
回車下一步就自行安裝了,上面已經部署了分區及置備的ks 須要什麼添加什麼便可,開始自動部署之旅吧
注意出錯的信息:failed to fetch kickstart 獲取ks失敗
由於實驗環境沒有設置dns,因此咱們能夠把pxe文件的裏面的ks=http://www.puppet-foreman.com域名換成你的ip便可。
參考1:https://www.theforeman.org/manuals/1.20/index.html#7.3GettingHelp
參考2:http://www.javashuo.com/article/p-doadlpfk-hr.html
參考3:http://www.javashuo.com/article/p-pbnudqkc-m.html
參考4:https://projects.theforeman.org/projects/foreman/wiki/TemplateWriting#PXE-Menus
參考5:https://projects.theforeman.org/projects/foreman/wiki
參考6:https://projects.theforeman.org/projects/foreman/wiki/Dynamic_disk_partitioning