Centos7+puppet+foreman,實現部署OS Centos 7 Puppet之foreman介紹安裝測試 pxe+http+kickstart實驗原理

 

1、簡介

  1. 須要實現操做系統的部署

        foreman提供了一個基於kickstart的部署工具,輸入一臺服務器的部署網卡的mac地址和hostname、ip等信息,就能自動的幫咱們部署完,而且,還能夠生成一個部署iso,用於該服務器的從新部署。html

    

     foreman經過代理DNS、DHCP、TFTP完成了kickstart、cobbler、jumpstart等各類自動化安裝系統工具的圖形統一管理串口,實現的結果是隻須要在foreman上指定各類模板(pxe、ks),不一樣的模板還能夠嵌套各類片斷(snippet)達到統1、簡化的目的。完成以後,即可以添加節點,關聯定義的各類模板生成各類pxe和ks文件實現自動化安裝。linux

 

  二、foreman工做流程

  

    

Steps
  1. On the New Host page, the default VM configuration is shown and compute profiles can be applied.
  2. An unused IP address is requested from the DHCP smart proxy associated with the subnet.
  3. The IP address field is filled in on the New Host page.
  4. n/a
  5. The New Host page is submitted.
  6. Foreman contacts the compute resource to create the virtual machine.
  7. The compute resource creates a virtual machine on a hypervisor.
  8. The VM’s MAC address is returned from the compute resource and stored on the host.
  9. A reservation is created on the DHCP smart proxy associated with the subnet.
  10. DNS records are set up:
    1. A forward DNS record is created on the smart proxy associated with the domain.
    2. A reverse DNS record is created on the DNS smart proxy associated with the subnet.
  11. A PXELinux menu is created for the host in the TFTP smart proxy associated with the subnet.
  12. Foreman contacts the compute resource to power on the VM.
  13. The compute resource powers up the virtual machine.
  14. The host requests a DHCP lease from the DHCP server.
  15. The DHCP lease response is returned with TFTP options (next-server, filename) set.
  16. The host requests the bootloader and menu from the TFTP server.
  17. The PXELinux menu and OS installer for the host is returned over TFTP.
  18. The installer requests the 「provision」 template/script from Foreman.
  19. Foreman renders the template and returns the resulting kickstart/preseed to the host.
  20. Autosigning configuration for Salt (or Puppet) is added on the Salt or Puppet CA smart proxy.
  21. The installer notifies Foreman of a successful build in the postinstall script.
  22. The PXELinux menu is reverted to a 「local boot」 template.
  23. The host requests its configuration from Salt or Puppet.
  24. The host receives appropriate configuration using data defined in Foreman.
  25. Configuration reports and facts are sent from Salt or Puppet to Foreman and stored.

  三、具體部署圍着以下流程:

    安裝軟件源---》安裝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:最後一項配置,依賴以前的幾項配置,選各類配置如軟硬件架構,各類模板

架構

   四、foreman的安裝能夠參考

    Centos 7 Puppet之foreman介紹安裝測試

2、設置資源及host菜單 

  一、解決安裝源

    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

  二、瞭解host導航菜單

    

    架構,定義x86_64,i386,unix,windows等

    硬件型號,定義硬件具體型號

    安裝介質,定義安裝源媒介或者路徑

    操做系統,定義操做系統具體型號好比centos,redhat,bsdfree等

    模板

      分區表

      置備模板

  三、設置安裝介質

    咱們如今添加安裝介質,能夠是URL或者nfs,咱們用剛剛添加源的URL

      http://192.168.216.234/repo/centos7

    因爲架構和硬件型號及操做系統,咱們裝玩foreman後本機就已經識別好,因此先添加安裝介質

     流程:主機---》安裝介質---》建立媒體---》添加:name、path、操做系統

    

  四、克隆置備模板並自定義編寫ks

    編輯模板須要具備ks知識,我這裏隨便克隆一下,也沒改,先測試一下

    流程:主機---》置備模板---》選則kickstart default pxelinux 模板 克隆按鈕---》編輯相應的信息---》name,code---》類型-這裏選pxelinux---》組合-這裏操做系統選centos7---》提交

    圖示以下:

      1)主機---》置備模板---》

    2)選則kickstart default pxelinux 模板 克隆按鈕---》

      3)編輯相應的信息---》name,code---》

    4)類型-這裏選pxelinux---》

    5)組合-這裏操做系統選centos7---》提交

 

  五、設置操做系統(operating system)

     流程:主機---》操做系統--->點擊主機」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」已經說明如何克隆模板,這裏不作介紹了)

       具體請參考另一篇文章,具體介紹模板,文章更新後在加上鍊接

    

3、設置代理及tftp文件

  新版本我沒有找到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還須要copy那個幾個文件

      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一塊兒部署了,只是以前沒有找到方法耽誤了很長時間。下面介紹如何操做

4、開始部署節點

  一、主機導航菜單建立主機

  流程:主機---》建立主機---》主機---》操做系統---》接口---》puppet類---》參數---》附加信息

    1)主機---》建立主機

 

    2)主機---》

 

    3)操做系統---》

 

    4)接口---》

      點擊編輯添加箭頭指向的信息,也就是你須要建立主機的mac/ip/域名

 

    虛擬機得mac在下圖能夠看到

 

    5)puppet類---》參數---》

      這裏咱們暫時不用設置

    6)附加信息

 

 

  二、提交後

 

  

  三、建立好後自動建立pxe文件

    以前還納悶沒有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 須要什麼添加什麼便可,開始自動部署之旅吧

   

 

 

5、排錯

  一、出現以下錯誤的狀況

 

   注意出錯的信息: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

 

轉載請註明出處:http://www.javashuo.com/article/p-aenabsqb-gr.html 

相關文章
相關標籤/搜索