xCAT-genesis-builder is indeed how genesis is built, though I don't think 
anyone has done a lot of work to polish it up to do more.  All it does is 
Dracut up a very small amount.

In principle a runimage should be possible for anything, though depending on 
what package you are talking about, it may be a challenging undertaking to stub 
out various dependencies/extract the core procedure.  I'm surprised that 
something would be reliant on redfish and yet have a lot of dependencies.  Does 
this vendor manifest the service processor as an Ethernet device or similar?  
Genesis at least in our distribution has a pretty healthy python runtime that 
could run redfish against an Ethernet target, though enrichments are coming to 
pyghmi  to make redfish manipulation from genesis easier comes after holiday 
season. 

-----Original Message-----
From: Thomas HUMMEL <thomas.hum...@pasteur.fr> 
Sent: Thursday, December 20, 2018 4:44 AM
To: xcat-user@lists.sourceforge.net
Subject: [External] [xcat-user] Running a service in genesis

Hello,

We're using xCAT 2.14.5 on CentOS 7.6 to provision stateless CentOS 7.6 images 
on switch-based discovered HPC servers.

The setup is quite standard for that matter.chain looks like this :

"devhpc-compute",,,"runcmd=bmcsetup,osimage=centos7.6-x86_64-netboot-compute",,,

and it all works fine.

We also want to setup some BIOS parameters (like disabling HyperThreading for 
instance) at discovery time. We naturally came with adding a runimage task in 
chain as a solution. Something like this :


"devhpc-compute",,,"runcmd=bmcsetup,runimage=<image-which-setup-bios-url>,osimage=centos7.6-x86_64-netboot-compute",,

where image-which-setup-bios installs and runs the proprietary manufacturer 
tool which enables to set up bios options.

The problem is that, while it works fine with some manufacturers, for some 
others, the tool they provide to do that inband (that is from inside the OS) is 
too rich for the lightweight genesis base (as it requires to run some Redfish 
aware daemons and other services).
As a matter of fact we didn't even manage to install it via the runimage 
mechanism or via a discovery shell destiny.

Besides, we cannot even run rpm in the genesis chroot (as NSS parts are 
missing, not to mention systemd which might as well cause issues)

We investigate several path to workaround the issue :

1. trying to build a richer genesis image

Our understanding is that genesis is generated with the xCAT-genesis-builder 
which itself uses dracut-install

- the xCAT-genesis-builder tool seems to be in beta version ?

- if feasible, it would be tedious and would mean to manually install every 
files (as opposed to install some package), correct ?

2. the manufacturer tool installs correctly in the final standard CentOS
7.6 image (the one that ends up chain) so we thought it would be cool to be 
able to chain TWO images at the end of discovery. But it would mean to be able 
to do something like

a) ending up chain with osimage A wich would :

- install the manufacturer tool and run it
- remotely change the pxe target to osimage B on xCAT master node
- reboot

b) [image B]

Not to mention a longer time to bring up the actual final image (image B)

3. it may be acceptable to finally setup bios out of band (that is from the 
xCAT master for instance, which the manufacturer tool enables to do) as long as 
it is somehow synchronized with discovery.

So we thout about using the prescripts mechanism, but on the wrong assumption 
that at the end of discovery, genesis performed the API call equivalent to 
nodeset <node> <osimage-which-ends-up-chain> and that the prescript (which 
would remotely set up the node bios) would be executed just as when we run a 
nodeset <node> osimage on the master


Unfortunately, it doesn't seem to work like that : prescripts seem to be called 
only when we actually launch nodeset/xcat-client from the master ?

So the question is :

- how exactly does the genesis the pxe target files (igpe scripts in
/tftpboot/xcat/xnba/nodes/<node>) get changed at the end of the chain (when 
chain ends up with osimage=<image>) ?
Is it on genesis request (genesis -> master) or on master initiative ?


- is there a way to execute prescripts or some kind of other hook, on the 
master at discovery time or synchronized with discovery time (we tend to 
exclude postscript/postbootscripts for now as it isn't discovery anymore at 
that time) ?

Thanks

--
Thomas HUMMEL


_______________________________________________
xCAT-user mailing list
xCAT-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xcat-user


_______________________________________________
xCAT-user mailing list
xCAT-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xcat-user

Reply via email to