Project

General

Profile

« Previous | Next » 

Revision 14dd0353

Added by Ohad Levy over 13 years ago

  • ID 14dd0353b2c7d16084a13c7b1ab52630887cabe3

fixes #470 - Add gpxe scripts support

This commit implements the following:
  • dynamic gpxe script that kickstart purly with gpxe - see usage example below
  • add static network option to kickstart, ie if added ?static=true to the url, network configuration would be static
    at the moment this should only be used with gpxe, or alternatviily you would need to
    provide the network information as a kernel argument (see gpxe_kickstart_config file as an example for that.

gpxe usage example

press ctrl-b for interactive mode
#get network from dhcp
dhcp net0
#or set static
ifopen
set net0/ip <your host ip>
set net0/netmask <netmask>
set net0/gateway <your gateway>
set net0/dns <dns server>

  1. tell gpxe to ask foreman for instructions
    kernel http://foreman/unattended/gpxe_kickstart_config
    boot

View differences:

app/controllers/unattended_controller.rb
class UnattendedController < ApplicationController
layout nil
before_filter :get_host_details, :allowed_to_install?, :except => [:pxe_kickstart_config, :pxe_debian_config]
before_filter :handle_ca, :except => [:jumpstart_finish, :preseed_finish, :pxe_kickstart_config, :pxe_debian_config]
before_filter :handle_ca, :except => [:jumpstart_finish, :preseed_finish, :pxe_kickstart_config, :gpxe_kickstart_config, :pxe_debian_config]
skip_before_filter :require_ssl, :require_login, :authorize, :load_tabs, :manage_tabs
after_filter :set_content_type, :only => [:kickstart, :preseed, :preseed_finish,
:jumpstart_profile, :jumpstart_finish, :pxe_kickstart_config, :pxe_debian_config]
:jumpstart_profile, :jumpstart_finish, :pxe_kickstart_config, :gpxe_kickstart_config, :pxe_debian_config]
before_filter :set_admin_user, :only => :built
def kickstart
......
@mediapath = os.mediapath @host
@epel = os.epel @host
@yumrepo = os.yumrepo @host
# force static network configurtion if static http parameter is defined, in the future this needs to go into the GUI
@static = !params[:static].empty?
unattended_local "kickstart"
end
......
@initrd = "#{prefix}-#{Redhat::PXEFILES[:initrd]}"
end
# Returns a valid GPXE config file to kickstart hosts
def gpxe_kickstart_config
end
def pxe_debian_config
@host = Host.find_by_name params[:host_id]
prefix = @host.operatingsystem.pxe_prefix(@host.arch)
app/models/host.rb
false
end
# Returns a url pointing to boot file
def url_for_boot file
"#{os.media_uri(self)}/#{os.url_for_boot(file)}"
end
private
# align common mac and ip address input
def normalize_addresses
app/models/redhat.rb
"kickstart"
end
def url_for_boot(file)
PXEDIR + "/" + PXEFILES[file]
end
end
app/views/unattended/gpxe_kickstart_config.erb
#!gpxe
kernel <%= "#{@host.url_for_boot(:kernel)}" %> ks=<%= foreman_url("kickstart")%>/static=yes ksdevice=bootif network kssendmac ip=${net0/ip} netmask=${net0/netmask} gateway=${net0/gateway} dns=${net0/dns}
initrd <%= "#{@host.url_for_boot(:initrd)}" %>
boot
app/views/unattended/kickstart.rhtml
<%= "selinux --disabled\n" if @osver != 3 -%>
keyboard us
skipx
network --bootproto dhcp
network --bootproto <%= @static ? "static" : "dhcp" %> --hostname <%= @host %>
rootpw --iscrypted <%= root_pass %>
firewall --disabled
authconfig --useshadow --enablemd5 <%= @osver != 3 and @osver != 4 ? '--disablenis' : '' %>
......
<% else -%>
<%= @host.diskLayout %>
<% end -%>
skipx
text
reboot

Also available in: Unified diff