The baremetal driver is a hypervisor driver for OpenStack Nova Compute. Within the OpenStack framework, it has the same role as the drivers for other hypervisors (libvirt, xen, etc), and yet it is presently unique in that the hardware is not virtualized - there is no hypervisor between the tenants and the physical hardware. It exposes hardware through the OpenStack APIs, using pluggable sub-drivers to deliver machine imaging (PXE) and power control (IPMI). With this, provisioning and management of physical hardware is accomplished by using common cloud APIs and tools, such as the Orchestration module (heat) or salt-cloud. However, due to this unique situation, using the baremetal driver requires some additional preparation of its environment, the details of which are beyond the scope of this guide.
Note | |
---|---|
Some OpenStack Compute features are not implemented by the baremetal hypervisor driver. See the hypervisor support matrix for details. |
For the Baremetal driver to be loaded and function properly,
ensure that the following options are set in
/etc/nova/nova.conf
on your nova-compute
hosts.
[default] compute_driver=nova.virt.baremetal.driver.BareMetalDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver scheduler_host_manager=nova.scheduler.baremetal_host_manager.BaremetalHostManager ram_allocation_ratio=1.0 reserved_host_memory_mb=0
Many configuration options are specific to the Baremetal driver. Also, some additional steps are required, such as building the baremetal deploy ramdisk. See the main wiki page for details and implementation suggestions.
Configuration option=Default value | Description |
db_backend=sqlalchemy | (StrOpt) The backend to use for bare-metal database |
deploy_kernel=None | (StrOpt) Default kernel image ID used in deployment phase |
deploy_ramdisk=None | (StrOpt) Default ramdisk image ID used in deployment phase |
driver=nova.virt.baremetal.pxe.PXE | (StrOpt) Baremetal driver back-end (pxe or tilera) |
driver=nova.cells.rpc_driver.CellsRPCDriver | (StrOpt) Cells communication driver to use |
instance_type_extra_specs= | (ListOpt) a list of additional capabilities corresponding to instance_type_extra_specs for this compute host to advertise. Valid entries are name=value, pairs For example, "key1:val1, key2:val2" |
ipmi_power_retry=5 | (IntOpt) maximal number of retries for IPMI operations |
net_config_template=$pybasedir/nova/virt/baremetal/net-dhcp.ubuntu.template | (StrOpt) Template file for injected network config |
power_manager=nova.virt.baremetal.ipmi.IPMI | (StrOpt) Baremetal power management method |
pxe_append_params=None | (StrOpt) additional append parameters for baremetal PXE boot |
pxe_bootfile_name=pxelinux.0 | (StrOpt) This gets passed to Neutron as the bootfile dhcp parameter when the dhcp_options_enabled is set. |
pxe_config_template=$pybasedir/nova/virt/baremetal/pxe_config.template | (StrOpt) Template file for PXE configuration |
pxe_deploy_timeout=0 | (IntOpt) Timeout for PXE deployments. Default: 0 (unlimited) |
pxe_network_config=False | (BoolOpt) If set, pass the network configuration details to the initramfs via cmdline. |
sql_connection=sqlite:///$state_path/baremetal_$sqlite_db | (StrOpt) The SQLAlchemy connection string used to connect to the bare-metal database |
terminal=shellinaboxd | (StrOpt) path to baremetal terminal program |
terminal_cert_dir=None | (StrOpt) path to baremetal terminal SSL cert(PEM) |
terminal_pid_dir=$state_path/baremetal/console | (StrOpt) path to directory stores pidfiles of baremetal_terminal |
tftp_root=/tftpboot | (StrOpt) Baremetal compute node's tftp root path |
use_unsafe_iscsi=False | (BoolOpt) Do not set this out of dev/test environments. If a node does not have a fixed PXE IP address, volumes are exported with globally opened ACL |
vif_driver=nova.virt.baremetal.vif_driver.BareMetalVIFDriver | (StrOpt) Baremetal VIF driver. |
virtual_power_host_key=None | (StrOpt) ssh key for virtual power host_user |
virtual_power_host_pass= | (StrOpt) password for virtual power host_user |
virtual_power_host_user= | (StrOpt) user to execute virtual power commands as |
virtual_power_ssh_host= | (StrOpt) ip or name to virtual power host |
virtual_power_ssh_port=22 | (IntOpt) Port to use for ssh to virtual power host |
virtual_power_type=virsh | (StrOpt) base command to use for virtual power(vbox,virsh) |