Good day Ironicers.

I do not want to discuss questions like "Is feature X good for release Y?" or "Is feature Z in Ironic scope or not?". I want to get an answer for this: Is Ironic a flexible, easy extendable and user-oriented solution for deployment? Yes, it is I think. IPA is the great software, but Fuel Agent proposes a different and alternative way for deploying. Devananda wrote about "pets" and "cattle", and maybe some want to manage "pets" rather than "cattle"? Let
users do a choice.
We do not plan to change any Ironic API for the driver, internal or external (as opposed to IPA, this was done for it). If there will be no one for Fuel Agent's driver support I think this driver should be removed from Ironic tree (I heard
this practice is used in Linux kernel).

On 12/09/2014 12:23 AM, Devananda van der Veen wrote:

I'd like to raise this topic for a wider discussion outside of the hallway track and code reviews, where it has thus far mostly remained.

In previous discussions, my understanding has been that the Fuel team sought to use Ironic to manage "pets" rather than "cattle" - and doing so required extending the API and the project's functionality in ways that no one else on the core team agreed with. Perhaps that understanding was wrong (or perhaps not), but in any case, there is now a proposal to add a FuelAgent driver to Ironic. The proposal claims this would meet that teams' needs without requiring changes to the core of Ironic.

The Problem Description section calls out four things, which have all been discussed previously (some are here [0]). I would like to address each one, invite discussion on whether or not these are, in fact, problems facing Ironic (not whether they are problems for someone, somewhere), and then ask why these necessitate a new driver be added to the project.

They are, for reference:

1. limited partition support

2. no software RAID support

3. no LVM support

4. no support for hardware that lacks a BMC


When deploying a partition image (eg, QCOW format), Ironic's PXE deploy driver performs only the minimal partitioning necessary to fulfill its mission as an OpenStack service: respect the user's request for root, swap, and ephemeral partition sizes. When deploying a whole-disk image, Ironic does not perform any partitioning -- such is left up to the operator who created the disk image.

Support for arbitrarily complex partition layouts is not required by, nor does it facilitate, the goal of provisioning physical servers via a common cloud API. Additionally, as with #3 below, nothing prevents a user from creating more partitions in unallocated disk space once they have access to their instance. Therefor, I don't see how Ironic's minimal support for partitioning is a problem for the project.


There is no support for defining a RAID in Ironic today, at all, whether software or hardware. Several proposals were floated last cycle; one is under review right now for DRAC support [1], and there are multiple call outs for RAID building in the state machine mega-spec [2]. Any such support for hardware RAID will necessarily be abstract enough to support multiple hardware vendor's driver implementations and both in-band creation (via IPA) and out-of-band creation (via vendor tools).

Given the above, it may become possible to add software RAID support to IPA in the future, under the same abstraction. This would closely tie the deploy agent to the images it deploys (the latter image's kernel would be dependent upon a software RAID built by the former), but this would necessarily be true for the proposed FuelAgent as well.

I don't see this as a compelling reason to add a new driver to the project. Instead, we should (plan to) add support for software RAID to the deploy agent which is already part of the project.


LVM volumes can easily be added by a user (after provisioning) within unallocated disk space for non-root partitions. I have not yet seen a compelling argument for doing this within the provisioning phase.


There are already in-tree drivers [3] [4] [5] which do not require a BMC. One of these uses SSH to connect and run pre-determined commands. Like the spec proposal, which states at line 122, "Control via SSH access feature intended only for experiments in non-production environment," the current SSHPowerDriver is only meant for testing environments. We could probably extend this driver to do what the FuelAgent spec proposes, as far as remote power control for cheap always-on hardware in testing environments with a pre-shared key.

(And if anyone wonders about a use case for Ironic without external power control ... I can only think of one situation where I would rationally ever want to have a control-plane agent running inside a user-instance: I am both the operator and the only user of the cloud.)


In summary, as far as I can tell, all of the problem statements upon which the FuelAgent proposal are based are solvable through incremental changes in existing drivers, or out of scope for the project entirely. As another software-based deploy agent, FuelAgent would duplicate the majority of the functionality which ironic-python-agent has today.

Ironic's driver ecosystem benefits from a diversity of hardware-enablement drivers. Today, we have two divergent software deployment drivers which approach image deployment differently: "agent" drivers use a local agent to prepare a system and download the image; "pxe" drivers use a remote agent and copy the image over iSCSI. I don't understand how a second driver which duplicates the functionality we already have, and shares the same goals as the drivers we already have, is beneficial to the project.

Doing the same thing twice just increases the burden on the team; we're all working on the same problems, so let's do it together.








OpenStack-dev mailing list

OpenStack-dev mailing list

Reply via email to