Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

WIP Wiki

More here: http://wiki.cloudstack.org/display/DesignDocs/Adding+support+to+your+PXE+provisioning+software+in+CloudStack+Baremetal

Table of Contents

How Baremetal Works

From Advance Install docs:

- CloudStack programs the PXE server with the host MAC address, host IP address, and boot image file based on the bare metal template the user has chosen.

- CloudStack programs the DHCP server with the MAC address and IP.

- CloudStack enables PXE boot on the host and powers it on using IPMI interface.

- The host broadcasts a DHCP request and receives a reply from the DHCP server. This reply consists of an IP address for the host, PXE boot server address, and a pointer to the boot image file.

- The host then contacts the PXE boot server and downloads the image file using TFTP protocol. The image file is a live kernel and initrd with PING software installed.

- The host starts the boot process using the downloaded file from the TFTP server.

- After these steps complete successfully, the host is ready for the workload.

Prerequisite Setup

PXE Server

Setup PXE Server. Add steps for CentOS/Ubuntu

Syslinux: http://www.kernel.org/pub/linux/utils/boot/syslinux/

DHCP Server

Setup dhcpd. Add steps for CentOS/Ubuntu

CIFS/Samba Server

Setup samba.

Create samba share directory as root or sudo user, make it writable by everyone:

mkdir -p /sambashare

chmod 777 /sambashare

Edit /etc/smb.conf or /etc/samba/smb.conf:

(optional: make workgroup = WORKGROUP //expected default in window7, but not needed)

#Change security to share (deprecated though)

security = share

#Add this at the end of the file, the root share folder/name is Share

[Share]
   path = /sambashare
   writable = yes
   guest ok = yes
   guest only = yes
   create mode = 0777
   directory mode = 0777
   share modes = yes

Template Creation

Install an OS on one server that is identical (resources, disk etc.) to the servers which will be eventually used as baremetal hosts which are servers on which an OS is provisioned using IPMI/PXE.

Next we need to save the disk image as a template. The idea is to use this template/disk-image to PXE boot via CloudStack (CS). CS controls the baremetal host using IPMI and provisions a template using DHCP and PXE/TFTP.

Get latest PING: http://ping.windowsdream.com/ | Docs: http://ping.windowsdream.com/ping/doc-3.00/intro.html

PING is a small Linux system that backups/creates the image of the template OS on to a network/local disk.

IPMI Setup

The baremetal hosts are required to have IPMI over LAN enabled. Log in to the IPMI console (web or otherwise, for example for iDRAC6/7 goto iDRAC Setting->Networking/Security->IPMI Settings->Enable IPMI over LAN)

Install ipmitool. For Mac OSX, build it from http://sourceforge.net/projects/ipmitool/ version 1.8.11 (.12 may fail)
check if ipmitool works: ipmitool -H 10.147.42.18 -U root -P myipmipassword chassis power status -vvv

Management Server

Setup Management Server, MySQL as usual. FIXME!

Wiki pages

Adding support to your PXE provisioning software in CloudStack Baremetal

TODOs

- New image based provisioning for Baremetal aka Improve or replace PING

- NFS support for templates

- Baremetal agent inside host, or plugin arch for supporting various provisioning/configuration tools such as Chef, Puppet

- Packaging, Dev/test env, installation

Image based provisioning for Baremetal

Issues: https://issues.apache.org/jira/browse/CLOUDSTACK-40

Top level goals:

- Backup/Restore image for baremetal (Generic, YAST, Kickstart, Raw-gziped)

- Supports NFS and CIFS

- Notification

- Organized API/Docs

- Ease of use and reliability

- ASF compatible licensing and opensource

- Maintainability: Development should be on going or it should be stable enough

Comparison of various baremetal solutions as of Sep 2012: (add/suggest more)

Name

Comment/Vendor

License

WWW

PXE/IPMI

NFS/CIFS

ISO Provisioning

Image Provisioning Backup/Restore

Notification | Post-script

API/Docs

Ease of Setup/Use

Development

Consideration

PING

Used by CloudStack 2.2.14

GPL

http://ping.windowsdream.com/ping.html

YES

Only CIFS/Samba

YES
(Unreliable)

YES
PartImage

No | No?

Okay

Easy if everything Works

Inactive (~2007)

Perl based
Old, unreliable

NO

LinMing

 LinMing

 Proprietary

-http://www.linmin.com-

YES

N/A

 

N/A

N/A

N/A

 N/A

 N/A

NO

Cobbler

Fedora/RedHat, now on Github

GPL

https://github.com/cobbler/cobbler/wiki

YES

 

 

 

 

 

 

Active
Python based

 

CrowBar2

OpenStack/Dell

Apache2

https://github.com/dellcloudedge/crowbar

 

 

 

 

 

 

 

Very Active
Python

Likely

Razor

Puppet

 

 

 

 

 

 

 

 

 

Active

Likely

Foreman

Works with Puppet

GPL3

http://theforeman.org

 

 

 

 

Notification API! Have to check :D

 

 

 

 

MAAS/JUJU

Ubuntu/Canonical

GPL3

https://wiki.ubuntu.com/ServerTeam/MAAS

YES

 

YES

TODO

 

 

 

Active
Python/Go based

Unlikely

Kickstart/Jumpstart

 

 

 

 

 

 

 

 

 

 

 

 

SpaceWalk

 

 

 

 

 

 

 

 

 

 

 

 

iPXE/gPXE (ISO)

The Etherboot Project Community

 

http://ipxe.org

YES

 

 

 

 

 

 

 

 

Clonezilla

 

 

http://clonezilla.org/downloads/stable/iso-zip-files.php

 

 

 

 

 

 

 

 

 

TODO TODOS:

- Evaluate all of them and ipmitool vs. gnuipmi vs. own java implementation of ipmitool

- Nail down one of two mature projects

- Discuss with Frank and everyone (w/o keynote) on the ASF ML, get suggestions, feedback

- Start working on integration with CS-BM