Skip to content

Puppet module for deploying a PXE boot server

Notifications You must be signed in to change notification settings

oasys/puppet-pxe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Puppet Powered PXE Provisioning

Puppet Forge Build Status

Super awesome Puppet powered PXE menu and image management for network based installations. Seriously. Its awesome.

Features

  • Automatic image fetching
  • Menu management for easy selection at boot time
  • Host specific menu management
  • Supported OSs
    • Debian
    • Ubuntu
    • CentOS
    • RetHat (with baseurl)
    • Fedora
    • Scientific
    • CoreOS

Dependencies

You will need a running TFTP configured. The module now depends on the puppetlabs/tftp module.

Sample Usage

Basic setup

class { 'tftp': }
class { 'pxe': }

This will setup a tftp server and directory and install pxelinux into it with a base configuration.

Images

Here is a sample of how one might stage the network installation images and build menus for selection at boot time.

First, we start by dragging in the pre-reqs for the whole process.

include pxe

Next, lets build a hash for each of the image sets we intend to be booting.

permute { 'Debian Installers':
  resource => 'pxe::installer',
  unique   => {
    arch => ['amd64','i386'],
    ver  => ['squeeze','wheezy'],
    os   => 'debian'
  },
  common   => {
    file   => 'os_<%= @os %>',
    kernel => 'images/<%= @os %>/<%= @ver %>/<%= @arch %>/linux',
    append => 'initrd=images/<%= @os %>/<%= @ver %>/<%= @arch %>/initrd.gz text',
  },
}

We can also append common options that will be supported across each of the menu entries created by the resource_permute function.

$redhat_common = {
  "baseurl" => "http://mirror.dyrden.net/rhel<%= ver %>server-<%= arch %>/disc1/images/pxeboot"
}

Now we permute and combine the hashes to generate the individual resources that fetch the images and place them in the correct directory structure.

resource_permute('pxe::images', $ubuntu)
resource_permute('pxe::images', $redhat, $redhat_common)

Menus

include pxe

pxe::menu { 'Main Menu':
  file     => 'default',
  template => 'pxe/menu_default.erb';
}

pxe::menu::entry { 'Installations':
  file    => 'default',
  append  => 'pxelinux.cfg/menu_install',
}

pxe::menu { "Operating System (${arch})":
  file => 'menu_install',
}

pxe::menu { 'Debian':
  file => 'os_debian',
}

Host Configs

pxe::menu::entry { "server1.dyrden.net":
  file    => "01-aa-bb-cc-dd-ee-ff",
  kernel  => "images/debian/i386/squeeze/squeeze",
  append  => "vga=791 initrd=images/debian/i386/squeeze/squeeze.gz",
}

About

Puppet module for deploying a PXE boot server

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 62.7%
  • Puppet 34.6%
  • Ruby 2.7%