This section describes the BareMetalHostProfile
resource used
in Mirantis Container Cloud API
to define how the storage devices and operating system
are provisioned and configured.
For demonstration purposes, the Container Cloud BareMetalHostProfile
custom resource (CR) is split into the following major sections:
The Container Cloud BareMetalHostProfile
CR contains
the following fields:
apiVersion
API version of the object that is metal3.io/v1alpha1
.
kind
Object type that is BareMetalHostProfile
.
metadata
The metadata
field contains the following subfields:
name
Name of the bare metal host profile.
namespace
Project in which the bare metal host profile was created.
Configuration example:
apiVersion: metal3.io/v1alpha1
kind: BareMetalHostProfile
metadata:
name: default
namespace: default
The spec
field of BareMetalHostProfile
object contains
the fields to customize your hardware configuration:
devices
List of definitions of the physical storage devices. To configure more
than three storage devices per host, add additional devices to this list.
Each device
in the list may have one or more
partitions
defined by the list in the partitions
field.
fileSystems
List of file systems. Each file system can be created on top of either device, partition, or logical volume. If more file systems are required for additional devices, define them in this field.
logicalVolumes
List of LVM logical volumes. Every logical volume belongs to a volume
group from the volumeGroups
list and has the sizeGiB
attribute
for size in gigabytes.
volumeGroups
List of definitions of LVM volume groups. Each volume group contains one
or more devices or partitions from the devices
list.
preDeployScript
Shell script that is executed on a host before provisioning the target
operating system inside the ramfs
system.
postDeployScript
Shell script that is executed on a host after deploying the operating
system inside the ramfs
system that is chrooted to the target
operating system.
grubConfig
List of options passed to the Linux GRUB bootloader. Each string in the list defines one parameter.
kernelParameters:sysctl
Available since 2.2.0List of options passed to /etc/sysctl.d/999-baremetal.conf
during bmh
provisioning.
Configuration example:
spec:
devices:
- device:
wipe: true
partitions:
- dev: ""
name: bios_grub
partflags:
- bios_grub
sizeGiB: 0.00390625
...
- device:
wipe: true
partitions:
- dev: ""
name: lvm_lvp_part
fileSystems:
- fileSystem: vfat
partition: config-2
- fileSystem: vfat
mountPoint: /boot/efi
partition: uefi
...
- fileSystem: ext4
logicalVolume: lvp
mountPoint: /mnt/local-volumes/
logicalVolumes:
- name: root
sizeGiB: 0
vg: lvm_root
- name: lvp
sizeGiB: 0
vg: lvm_lvp
postDeployScript: |
#!/bin/bash -ex
echo $(date) 'post_deploy_script done' >> /root/post_deploy_done
preDeployScript: |
#!/bin/bash -ex
echo $(date) 'pre_deploy_script done' >> /root/pre_deploy_done
volumeGroups:
- devices:
- partition: lvm_root_part
name: lvm_root
- devices:
- partition: lvm_lvp_part
name: lvm_lvp
grubConfig:
defaultGrubOptions:
- GRUB_DISABLE_RECOVERY="true"
- GRUB_PRELOAD_MODULES=lvm
- GRUB_TIMEOUT=20
kernelParameters:
sysctl:
kernel.panic: "900"
kernel.dmesg_restrict: "1"
kernel.core_uses_pid: "1"
fs.file-max: "9223372036854775807"
fs.aio-max-nr: "1048576"
fs.inotify.max_user_instances: "4096"
vm.max_map_count: "262144"