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

Compare with Current View Page History

« Previous Version 16 Next »

References

  CLOUDSTACK-9913 - Getting issue details... STATUS

Introduction

Metal-as-a-Service (MaaS) is a project by Canonical to enable provisioning of baremetal servers. MaaS has plenty of features which make it very lucrative to be used as a baremetal orchestrator in Cloudstack. Some of the features of MaaS include

  • Full API Support
  • Official support for CentOS, Ubuntu and Windows images
  • IPv6 support
  • Can be deployed in a HA configuration
  • Network bonding support
  • Disk erase support
  • Device auto-discovery
  • Support for various power types and Chasis
  • Disk and partition management

This feature aims to add MaaS as an external baremetal provisioner in Advanced networks in Cloudstack. This does not replace the existing baremetal offering by Cloudstack.

High level use cases

  1. A user should be able to provision baremetal servers using MaaS in a zone with Advanced networking
  2. The provisioned servers should support bonding on the interface (if it is possible)
  3. The provisioned servers should be able to be added to multiple networks
  4. When the servers are released, the disk should be erased before returning to the user

Document History

VersionAuthorDateChanges
v1.0Syed Ahmed09-May-2017Initial Draft
    

Functional requirements & non-requirements

 

  1. Allow a configurable option to enable MaaS for baremetal provisioning in Cloudstack
  2. Allow a configurable option to pass the information (IP, keys etc) required to connect to Cloudstack
  3. Adding a baremetal host by admin  in Cloudstack
    1. should also add and commission the host on MaaS
    2. If the host is already present in MaaS it should be picked up by Cloudstack
  4. Removing a baremetal host from Cloudstack should not remove the host from MaaS. This is done to prevent cases where Cloudstack may run into a bad state, should not affect MaaS
  5. When a Baremetal is provisioned with a network, the ToR switches should be configured correctly to reflect the right VLAN
  6. When additional networks are
    1.  added to the baremetal from Cloudstack, the Top-of-Rack (ToR) switch should also be configured with respective VLANs
    2. removed from the baremetal from Cloudstack, the ToR switches should also release the VLANs
  7. A user should be able to add a baremetal template which corresponds to the MaaS image. The URL field in the template specifies which MaaS template to use.
  8. A user should be able to delete a baremetal template from Cloudstack
  9. When a baremetal is provisioned:
    1. if the host has more than one physical interface connected to the switch as described by the rack config, MaaS will bond the interfaces
    2. if only one physical interface is present, MaaS should use that interface
  10. When a baremetal is deleted:
    1. The ToR switch should be configured to remove the VLANs
    2. The disk should be deleted by MaaS.
    3. A config option to select between full disk erase or a fast disk erase may be used

Architecture and Design description

Assumptions

  1. MaaS will have its own network where it can PXE boot hosts (PXE network)
  2. MaaS will run and control a DHCP server in the PXE network
  3. When no VLAN is configured on the ToR switches, the host will be in the PXE network (ie default trunk VLAN is the PXE network)
  4. the IPMI is reachable from both Cloudstack and MaaS server
  5. MaaS images will be managed independently from Cloudstack
  6. CentOS, Ubuntu and Windows are the only OSes that are currently supported
  7. Only root disks are supported. No data disk support

Design

Adding MaaS provider

There are two settings to enable MaaS in Cloudstack. The first setting defines which class to use for the baremetal resource

external.baremetal.resource.classname = org.apache.cloudstack.compute.maas.MaasResourceProvider

This setting will enable MaaS as the handler for baremetal resources instead of <DEFAULT_BAREMETAL_CLASS>

The MaasResourceProvider is configured via the following setting

external.baremetal.system.url = MaasIP=172.31.0.75;MaasKey=fGWswZhpUQrrKUxprD;MaasSecret=CUaKSPXngrtRGRACtLLQKCYLqrQxPgTC;MaasConsumerKey=6sxtWH3XCfKgkspC8J

6sxtWH3XCfKgkspC8J:fGWswZhpUQrrKUxprD:CUaKSPXngrtRGRACtLLQKCYLqrQxPgTC

 

Adding Hosts

efgh

Adding templates

hijk

Bonding Support

lmnop

Root disk deletion

qrstuv

Curtin Setup for Cloud-init

abcd

IP Clearance

No external dependecies are being added for this feature. All code will be developed within Cloudstack’s scope.

  • No labels