Razor doesn't download boot.cfg from repo_url for ESXi

25 views
Skip to first unread message

Patrick Gibson

unread,
Nov 9, 2017, 5:32:31 PM11/9/17
to puppet-razor
Hello,

Trying to setup installation of ESXi 6.0 hosts using the included vmware_esxi.task.  I've setup all the razor components, task, policy, tags, repo, etc. My repo is an offhost webserver(internal to network, no firewalls involved).  I am able to take the boot.cfg off the esxi installation media and place it on my razor server and it will use that boot.cfg.erb to install the host, after some tweaking.  Tweaking involved includes adding  a "prefix=http://<httpserver>/repos/vmware-esxi-6.0.0" to the boot.cfg.erb to look like this:

bootstate=0
title
=Loading ESXi installer
prefix
=http://<httpserver>/repos/vmware-esxi-6.0.0
kernel
=tboot.b00
kernelopt
=ks=#{file_url('ks.cfg')}
modules
=b.b00 --- jumpstrt.gz --- useropts.gz --- k.b00 --- chardevs.b00 --- a.b00 --- user.b00 --- uc_intel.b00 --- uc_amd.b00 --- sb.v00 --- s.v00 --- net_enic.v00 --- scsi_fni.v00 --- scsi_sni.v00 --- ima_be2i.v00 --- scsi_be2.v00 --- net_igb.v00 --- net_ixgb.v00 --- scsi_mpt.v00 --- net_qlcn.v00 --- qlnative.v00 --- mtip32xx.v00 --- ata_pata.v00 --- ata_pata.v01 --- ata_pata.v02 --- ata_pata.v03 --- ata_pata.v04 --- ata_pata.v05 --- ata_pata.v06 --- ata_pata.v07 --- block_cc.v00 --- ehci_ehc.v00 --- elxnet.v00 --- emulex_e.v00 --- weaselin.t00 --- esx_dvfi.v00 --- esx_ui.v00 --- ima_qla4.v00 --- ipmi_ipm.v00 --- ipmi_ipm.v01 --- ipmi_ipm.v02 --- lpfc.v00 --- lsi_mr3.v00 --- lsi_msgp.v00 --- lsu_hp_h.v00 --- lsu_lsi_.v00 --- lsu_lsi_.v01 --- lsu_lsi_.v02 --- lsu_lsi_.v03 --- lsu_lsi_.v04 --- misc_cni.v00 --- misc_dri.v00 --- net_bnx2.v00 --- net_bnx2.v01 --- net_cnic.v00 --- net_e100.v00 --- net_e100.v01 --- net_forc.v00 --- net_mlx4.v00 --- net_mlx4.v01 --- net_nx_n.v00 --- net_qlge.v00 --- net_tg3.v00 --- net_vmxn.v00 --- nmlx4_co.v00 --- nmlx4_en.v00 --- nmlx4_rd.v00 --- nvme.v00 --- ohci_usb.v00 --- rste.v00 --- sata_ahc.v00 --- sata_ata.v00 --- sata_sat.v00 --- sata_sat.v01 --- sata_sat.v02 --- sata_sat.v03 --- sata_sat.v04 --- scsi_aac.v00 --- scsi_adp.v00 --- scsi_aic.v00 --- scsi_bnx.v00 --- scsi_bnx.v01 --- scsi_hps.v00 --- scsi_ips.v00 --- scsi_meg.v00 --- scsi_meg.v01 --- scsi_meg.v02 --- scsi_mpt.v01 --- scsi_mpt.v02 --- scsi_mpt.v03 --- scsi_qla.v00 --- uhci_usb.v00 --- vsan.v00 --- vsanheal.v00 --- vsanmgmt.v00 --- xhci_xhc.v00 --- tools.t00 --- xorg.v00 --- imgdb.tgz --- imgpayld.tgz
build
=
updated
=0


This basically validates that all internal components are working for me. The only part that fails is the kickstart line is not being read.

When I try to use the included boot,cfg,erb, such as the one found at https://raw.githubusercontent.com/puppetlabs/razor-server/master/tasks/vmware_esxi.task/boot.cfg.erb,  the build process doesn't get far.  It successfully downloads the mboot.c32 from the pxelinux_esxi.cfg.erb step but fails because it can not find the tboot.b00 file on the remote repo.

The point of breakdown, I believe, is at the time when the boot.cfg.erb is supposed to download the original boot.cfg from the repo and insert the repo_url and file_url.  This never happens(I've been watching the access log on the webserver).  I'm a little lost as to how to troubleshoot this issue.  Thoughts?  I've submitted a puppet support ticket as well but I thought I'd throw this out there.

<%=
   
# This code finds the `boot.cfg` file in the repository, parses it, and
   
# makes a set of modifications intended to make it net-boot from Razor.
   
#
   
# I chose this path because the boot.cfg file varies between releases of
   
# ESXi (such as 5.0 to 5.5), and could quite legitimately vary between
   
# smaller jumps than that -- after all, it is inside their boot loader,
   
# and they can change the construction of the installer CD without
   
# breaking anything...
   
#
   
# The alternative was to copy in the boot.cfg, modify it the way this code
   
# will do on the fly, and then use that.  That is actually the exact
   
# process documented for setting up ESXi PXE boot -- statically make this
   
# change -- too.
   
#
   
# Given the changes are purely mechanical and well understood, this will
   
# do for the majority of cases without the risk / cost that a slight
   
# variant in the CD breaks everything, I think. --daniel 2013-10-14
   
(File.read(repo_file('/boot.cfg')) rescue '').split("\n").map do |line|
     
case line
       
when /^kernel=/
          'kernel=' + repo_url(line.sub('kernel=', ''))
        when /
^modules=/
          line.gsub('/', repo_url('
/'))
        when /^kernelopt=/
          "kernelopt=ks=#{file_url('
ks.cfg')}"
        else
          line
      end
    end.join("\n")
%>



Reply all
Reply to author
Forward
0 new messages