Allow a ramdisk deploy user to specify their boot ISO¶
https://storyboard.openstack.org/#!/story/2007633
With support for virtual media, there are cases where an operator may wish to boot a machine with a specific virtual media image to facilitate the deployment of a machine or even just the completion of an action like firmware upgrades.
Providing an interface to signal “boot to this” iso, seems logical.
Problem description¶
A detailed description of the problem:
The
ramdisk
deployment interface allows a user to define a kernel and ramdisk to be utilized to boot a ramdisk instance which after the initial deployment the instance is considered a deployed machine in active state.At present, because of the
ramdisk
deployment interface constraints, users are unable to specify ISOs for virtual media. They must supply a kernel/ramdisk and in the virtual media case it must be rebuilt.
Proposed change¶
Allow a
instance_info/boot_iso
parameter to be leveraged to be the medium utilized for booting from an explicit ISO image which the conductor would support downloading, caching, and providing to the baremetal machine. This change would be focused on the virtual media boot interface code in relation to usage of Redfish.Teach the code related to the pass-through to provide the same basic capability to append parameters to the command line through decomposition of the ISO, appending to
grub2
andisolinux
configurations with the supplied values, and repackaging of the ISO file for deployment.
Alternatives¶
Use an external provisioning tool, and
adopt
the node into Ironic, if applicable.Pre-mastered machine specific configurations into ISO images which would ultimately result in pushing the preparation and execution workload to the API user.
Data model impact¶
None, this leverages the existing data model.
State Machine Impact¶
None
REST API impact¶
None, this change leverages existing JSON data fields with-in Ironic’s data model.
Client (CLI) impact¶
“openstack baremetal” CLI¶
None
“openstacksdk”¶
None
RPC API impact¶
None
Driver API impact¶
None
Nova driver impact¶
None
Ramdisk impact¶
None
Security impact¶
None
Other end user impact¶
None
Scalability impact¶
The distinct possibility exists, if a user requests multiple concurrent deployments, that configuration injection could consume a large amount of disk space.
Also, we may wish to enable some sort of logic to prevent mass consumption of disk space as part of the conductor, for the reasons of cleanup, however the conductor has no real way to understand if this is a forever usage, or not. Ideally operator documentation would be updated to help scale planning for this condition. Alternatively we may wish to introduce a “one-shot” indicator flag so we don’t attempt to persist ISOs after takeover on active machines.
Performance Impact¶
A large number of concurrent deployments may slow the conductor due to overall system performance constraints, depending on the exact options and settings leveraged.
Other deployer impact¶
None
Developer impact¶
None is anticipated, however we would likely focus on implementing this in the redfish virtual media code path, and should likely try to ensure that we do not make such changes redfish interface specific as other drivers are present in Ironic which support Virtual Media.
Implementation¶
Assignee(s)¶
- Primary assignee:
Julia Kreger <juliaashleykreger@gmail.com>
Work Items¶
Implement support to pass an explicit boot ISO into the ramdisk interface.
Implement support to inject configuration into the boot ISO.
Document this functionality for the ramdisk interface covering how to leverage this feature.
Dependencies¶
None
Testing¶
Unit tests should be sufficient for ensuring this functionality is not broken.
A tempest test may also be viable, but we may wish to partner with the Metal3 community on integration testing, as ultimately this is essentially just an item of integration testing when virtual media AND ramdisk interfaces are leveraged.
Upgrades and Backwards Compatibility¶
N/A
Documentation Impact¶
We will want to update the documentation on the ramdisk deployment interface to detail this capability.
References¶
None