You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »



Introduction

Purpose

Support kickstart installation method for RPM based Linux operation system, users can provision a baremetal host managed by CloudStack as long as they has kickstart file and corresponding OS installation ISO ready.

References

Document History

Glossary

  • TFTP server: 
    a CentOS installed with tftp-server package interacting with baremetal host during PXE boot phase, managed by CloudStack. Baremetal host will automatically download bootable Linux kernel and initrd.img from tftp server and start install process. 
  • DHCP server: 
    can be either managed by CloudStack or by user's DHCP infrastructure. If using DHCP server not managed by CloudStack, user must set next-server option pointing to TFTP server in order to navigate host the place to get bootable Linux kernel and initrd.img
  • IPMI: 
    protocol used to control power state/boot device of host. CloudStack uses ipmi-tool to send command to host
  • *KickStart file:\* (file:*)
    a text file describing components to be installed and system configuration. see References above
  • OS ISO:
    OS installation CD

Feature Specifications

  • The feature only supports kickstart installation for RPM based Linux distribution, largely RedHat series OS (e.g. Rhel, Fedora, CentOS).
  • support CloudStack security group feature as long as baremetal security group agent is installed by kickstart file
  • only supports CloudStack basic zone
  • support CloudStack userdata
  • support binding ip address allocated to VM to host when adding host. Then VM starting on that host will be assign to fixed IP
  • no CloudStack storage concepts: primary storage, secondary storage, volume, snapshot
  • no CloudStack service VMs: SSVM, CPVM, VR
  • no template copy, download 
  • no VM migration
  • no multiple nics support
  • a stopped VM(the OS running on host) can only start on the host it's lastly on
  • using host tag for allocating host, capacity(cpu, memory) specifying in service offering is never used

Use cases

  1. create a network offering with network service: userdata, sercuritygroup, baremetalpxeservice selected, we assume using external DHCP service in this example.
  2. create a basic zone with aforementioned network offering.
  3. create a Pod. The guest ip range adding to Pod must be in the same subnet of host's IPMI ip. Reserved ip range for CloudStack service VM is never used.
  4. configure hosts and write up information of IPMI ip, IPMI account/password, MAC address of nic which will broadcast DHCP request
  5. install a CentOS VM and configure it with IP in the same subnet of guest ip range. Install CloudStack baremetal agent in it and run cloud-setup-baremetal, write up information printed out
  6. add OS installed in step 5 to CloudStack by API addBaremetalPxeKickStartServer
  7. create a Cluster with hypervisor type "BareMetal"
  8. add a host, provide all information required by UI page. Note the 'hostname' is ipmi ip, 'account' is ipmi account, 'password' is ipmi password. Please make sure cpu number/speed, memory size is matching your real host fact, otherwise the dashboard may not display precisely. IMPORTANT: the host tag must be set to some value, otherwise the host will not be found by host allocator. If multiple host tags are set, only the first one takes effect
  9. create a service offering with the same host tag specified in step 7
  10. adding a template. the URL must be encoded in formula of
    Kickstart_file_location;template_repo_on_nfs_path (for example: http://nfs1.lab.vmops.com/baremetal/rhel5.ks;10.223.110.231:/var/www/html/baremetal/rhel5/images/pxeboot/)
  11. go to instance page, create a VM from template and service offering aforementioned 

Architecture and Design description

Database Changes:

new tables: baremetal_dhcp_devices, baremetal_pxe_devices

New Components:

all components related to baremetal locates in cloudstack_source_root_folder/baremetal/

web services APIs

addBaremetalHost=com.cloud.baremetal.manager.AddBaremetalHostCmd

addBaremetalDhcp=com.cloud.baremetal.networkservice.AddBaremetalDhcpCmd

addBaremetalPxePingServer=com.cloud.baremetal.networkservice.AddBaremetalPxePingServerCmd

listBaremetalDhcp=com.cloud.baremetal.networkservice.ListBaremetalDhcpCmd

listBaremetalPxePingServer=com.cloud.baremetal.networkservice.ListBaremetalPxePingServersCmd

addBaremetalPxeKickStartServer=com.cloud.baremetal.networkservice.AddBaremetalKickStartPxeCmd

UI flow

  • either demonstrate it visually here or link to relevant mockups

Appendix

Appendix A:

Appendix B:

  • No labels