Hardware configuration on Foreman

Hello guys,

I've been discussing about that with few of you in FOSDEM and Cfgmgmtcamp.
Foreman right now lacks a way of configuring and upgrading the hardware of
bare-metal hosts.
What I have in mind is things like: upgrading bios, flashing RAID controler
firmware, configuring RAID, flashing NIC controler firmware, etc…

After discussion, it seems that managing that would require some new
features on both smart-proxy and Foreman side.
The basic idea may be to use the embeded smart-proxy in discovery image to
flash and configure new hosts.
When discovering a new host, we would use the "local" smart-proxy to
upgrade all firmwares.
In order to achieve that, we would need to add some Hardware Profile (in
the discovery plugin ?) and find a way to map some firmwares to classes of
"Hardware Profile".

Like : I want all my DELL/HP R620/DL360 to have that list of firmwares
installed at that version and my RAID configuration beeing configured with
a RAID1 of my 2 first drives and a RAID6 of all others disks.

I'm not sure how we would have to implement that and what would be the
workflow. And there is stil lots of questions:

  • Should we add a new route API in smart-proxy with a vendor abstraction
    and then some vendor implementation ?
  • How should we handle the RAID configuration ? We could add a layout
    like we have for partioning on OS level ?
  • How do we store firmwares ? Inside Foreman DB or in a HTTP repository ?
    Do we push it to smart-proxy or smart-proxy fetch them ?
  • Do we extend Compute Profle for Hardware Profile ?
  • How will be handled firmware upgrade once the host is provisioned ?
  • We may take some time to look at other similar project ?

Do you guys have any idea / opinion ?

Cheers,
Romain / fitzdsl

> Hello guys,
>
> I've been discussing about that with few of you in FOSDEM and Cfgmgmtcamp.
> Foreman right now lacks a way of configuring and upgrading the hardware of
> bare-metal hosts.
> What I have in mind is things like: upgrading bios, flashing RAID
> controler firmware, configuring RAID, flashing NIC controler firmware,
> etc…
>
> After discussion, it seems that managing that would require some new
> features on both smart-proxy and Foreman side.
> The basic idea may be to use the embeded smart-proxy in discovery image to
> flash and configure new hosts.
> When discovering a new host, we would use the "local" smart-proxy to
> upgrade all firmwares.
> In order to achieve that, we would need to add some Hardware Profile (in
> the discovery plugin ?) and find a way to map some firmwares to classes of
> "Hardware Profile".
>
I think, first of all, we need to add to the discovery plugin many more
facts about that hardware.

>
> Like : I want all my DELL/HP R620/DL360 to have that list of firmwares
> installed at that version and my RAID configuration beeing configured with
> a RAID1 of my 2 first drives and a RAID6 of all others disks.
>
> I'm not sure how we would have to implement that and what would be the
> workflow. And there is stil lots of questions:
> * Should we add a new route API in smart-proxy with a vendor abstraction
> and then some vendor implementation ?
>
IMHO we should create an API, which talks about raid, disks etc
so you could query things like
GET /raids
GET /disks

POST /raids {"type":"5", "size":"100GB",:"DISKS":["uuid1","uuid2"…]}

  • How should we handle the RAID configuration ? We could add a layout
    > like we have for partioning on OS level ?
    >
    If we can abstract it, then it might become a similar object to a nic in
    foreman?

  • How do we store firmwares ? Inside Foreman DB or in a HTTP repository ?
    > Do we push it to smart-proxy or smart-proxy fetch them ?
    >
    We were talking about letting the proxy pull some more content based on
    hardware, (e.g. raid tools for dell if its a dell hardware).
    I would assume its already packaged and we could leverage a standard yum
    repo?

  • Do we extend Compute Profle for Hardware Profile ?
    >

Is that under the assumption that discovery == new compute resource?

> * How will be handled firmware upgrade once the host is provisioned ?
>
good question, I think it has to start with a fact?

> * We may take some time to look at other similar project ?
>
Sure, i heared about xcat, and i know that razor guys are thinking about
something similar, do you know about anything elsE?

>
> Do you guys have any idea / opinion ?
>

thanks!
Ohad

··· On Mon, Feb 17, 2014 at 9:38 AM, Romain Vrignaud wrote:

Cheers,
Romain / fitzdsl


You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

>
>
>
>
>> Hello guys,
>>
>> I've been discussing about that with few of you in FOSDEM and Cfgmgmtcamp.
>> Foreman right now lacks a way of configuring and upgrading the hardware
>> of bare-metal hosts.
>> What I have in mind is things like: upgrading bios, flashing RAID
>> controler firmware, configuring RAID, flashing NIC controler firmware,
>> etc…
>>
>> After discussion, it seems that managing that would require some new
>> features on both smart-proxy and Foreman side.
>> The basic idea may be to use the embeded smart-proxy in discovery image
>> to flash and configure new hosts.
>> When discovering a new host, we would use the "local" smart-proxy to
>> upgrade all firmwares.
>> In order to achieve that, we would need to add some Hardware Profile (in
>> the discovery plugin ?) and find a way to map some firmwares to classes of
>> "Hardware Profile".
>>
> I think, first of all, we need to add to the discovery plugin many more
> facts about that hardware.
>
Agreed

>
>> Like : I want all my DELL/HP R620/DL360 to have that list of firmwares
>> installed at that version and my RAID configuration beeing configured with
>> a RAID1 of my 2 first drives and a RAID6 of all others disks.
>>
>> I'm not sure how we would have to implement that and what would be the
>> workflow. And there is stil lots of questions:
>> * Should we add a new route API in smart-proxy with a vendor
>> abstraction and then some vendor implementation ?
>>
> IMHO we should create an API, which talks about raid, disks etc
> so you could query things like
> GET /raids
> GET /disks
>
> POST /raids {"type":"5", "size":"100GB",:"DISKS":["uuid1","uuid2"…]}
>
I guess that some routes won't be shared across vendor but we could try to
abstract the more we can.

> * How should we handle the RAID configuration ? We could add a layout
>> like we have for partioning on OS level ?
>>
> If we can abstract it, then it might become a similar object to a nic in
> foreman?
>
Would make sense I think.

> * How do we store firmwares ? Inside Foreman DB or in a HTTP repository
>> ? Do we push it to smart-proxy or smart-proxy fetch them ?
>>
> We were talking about letting the proxy pull some more content based on
> hardware, (e.g. raid tools for dell if its a dell hardware).
> I would assume its already packaged and we could leverage a standard yum
> repo?
>
I may be wrong but tools to manage firmware are packaged in rpm but
firmwares itself not. I think traditional workflow is to retrieve them from
vendor site and then to use
(packaged) tools to flash them. If I'm right, we need a way to store the
firmwares themselves.

>
> * Do we extend Compute Profle for Hardware Profile ?
>>
>
> Is that under the assumption that discovery == new compute resource?
>
I wouldn't say that. IMHO it's just that we'll need a way to classify
hardware by "group of similar hardware"

>
>> * How will be handled firmware upgrade once the host is provisioned ?
>>
> good question, I think it has to start with a fact?
>
I think we should have a mechanism/workflow like "Build" but when used the
host reboot on the "discovery" image instead of rebuilding.
I'm not sure what you mean "with a fact".

>
>> * We may take some time to look at other similar project ?
>>
> Sure, i heared about xcat, and i know that razor guys are thinking about
> something similar, do you know about anything elsE?
>


··· 2014-02-18 8:05 GMT+01:00 Ohad Levy : > On Mon, Feb 17, 2014 at 9:38 AM, Romain Vrignaud wrote:

Do you guys have any idea / opinion ?

thanks!
Ohad

Cheers,
Romain / fitzdsl


You received this message because you are subscribed to the Google Groups
“foreman-dev” group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


You received this message because you are subscribed to the Google Groups
“foreman-dev” group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

>> * Should we add a new route API in smart-proxy with a vendor abstraction
>> and then some vendor implementation ?
>
> IMHO we should create an API, which talks about raid, disks etc
> so you could query things like
> GET /raids
> GET /disks
>
> POST /raids {"type":"5", "size":"100GB",:"DISKS":["uuid1","uuid2"…]}

+1, this makes a ton of sense - and easy if we finish the plugin
support in the proxy.

>> * How should we handle the RAID configuration ? We could add a layout
>> like we have for partioning on OS level ?
>
> If we can abstract it, then it might become a similar object to a nic in
> foreman?

That's possible, yes.

>> * How do we store firmwares ? Inside Foreman DB or in a HTTP repository
>> ? Do we push it to smart-proxy or smart-proxy fetch them ?
>
> We were talking about letting the proxy pull some more content based on
> hardware, (e.g. raid tools for dell if its a dell hardware).
> I would assume its already packaged and we could leverage a standard yum
> repo?

Even they're not rpm'd, it would be trivial to create packages using
fpm and add them to a mirror. Alternatively we could start with
something simple like dropping them in a pre-determined path in
~foreman/public/…

>> * Do we extend Compute Profle for Hardware Profile ?
>
> Is that under the assumption that discovery == new compute resource?

Romain and I spoke about this in Ghent. The idea is to use a form of
Compute Profile for filtering the list of Discovered Hosts. I.e I
could create a profile like "8Gb Ram, 2 Cpus" and then apply that to
the Discovers#index to see only hosts which match the profile. I don't
think it's too much work in the Discovery plugin to re-use/extend the
Profiles feature for this.

>> * How will be handled firmware upgrade once the host is provisioned ?
>
> good question, I think it has to start with a fact?

I'm inclined to say we only support firmware upgrades before
provisioning, at least to start with. This is a 'cattle' model, after
all - it should be simple to rebuild any host, right?

>> * We may take some time to look at other similar project ?
>
> Sure, i heared about xcat, and i know that razor guys are thinking about
> something similar, do you know about anything elsE?

Nope, but Lutter is interested in collaborating on the discovery rpm
image, so maybe we should include him in the discussion?

Greg

··· On 18 February 2014 07:05, Ohad Levy wrote:

Hello there,
My name is Bruno, new to foreman. Some of the repetitive tasks Foreman has been able to help me accomplish are:
OS Deployment to Multiple Servers
Network Configuration
Kick Start Partitioning as well as Raid Configuration`(Software Raid).
I have been tasked to come up with a solution to do Hardware Raid Configuration, which we usually do through BIOS.
So is this possible to Automate with Foreman?

Thanks

Please open a new thread instead of reviving an ancient thread. It’s also better to open it in the support or community section.