Thanks.

To clarify, confluent is not strictly based on xCAT code, but instead is more 
like how I would have suggested xCAT 2 would have been done if I knew then all 
the things I know now and the general landscape behaved in the way it does. 
Most straightforward point to illustrate, confluent is a python project, while 
xCAT is a perl project.

Since I had been inspired by xCAT 1 and contributed largely to xCAT 2 design 
and also confluent, there are similarities:
-The noderange syntax and capabilities are familiar (though the confluent 
implementation is faster and the code is easier to read)
-The general command style is similar (though with tab completion and client 
side argument parsing)
-The concept of defining things at group or node level and formulaic expansion 
is similar (though confluent is faster, safer at evaluating formulae, generally 
a lower learning curve, but lacking the full power of regex currently)
-Broadly speaking, look and feel has a lot in common

However with an evolved landscape and learning a lot of things since xCAT 2, 
there are differences:
-Ensuring it can run without root (e.g. better managing ownership, switching 
away from loop mount from media import, leveraging systemd managed ambient 
capabilities for exceptions while using an interpreted language)
-Making many things faster (xCAT did all inheritance and evaluation on read, 
confluent does it on write, no fork per individual request, attribute expansion 
without an expensive ‘safe’, among other things)
-The multi-manager model evolves to no longer externalize the multi-system 
access to a SQL database, and all participant managers are more equal
-A tighter focus on security (more careful handling of TLS certs, no movement 
of private keys, forming a collective forces user to help prove mutual 
authentication, SELinux enabled during dev and testing, deployment having a 
more simplified and restricted mechanism to get node credentials, conveniences 
that may be needed but are arguably insecure are opt-in rather than always on, 
not even crypted root password in kickstart/autoyast files)
-A client-server model that is natively more sysfs-like or REST-like that is 
available either through a bespoke protocol or normal HTTP over REST without 
either side being a frontend for the other.
-An extended discovery facility that can discover some equipment in standby 
power mode, and advances PXE discovery to occur without offering an address 
(PXE discovery without a dynamic range is supported)
-More easy access to the bits and pieces that comprise functionality so that 
its easier to still use things like discovery from confluent, but use a 
different software for the engine of OS deployment (e.g the cluster-wide switch 
fdb is available to external software, discovery can be stopped at the mac 
collection step without ever offering an OS to boot, etc).
-Moving away from a SQL database model with a translation layer to pretend to 
be key-value to a natively key-value datastore with categorized attribute names 
to resemble the ‘table.column’ behavior of xCAT, and a reworked structure to 
avoid oddities like the same conceptual thing should be ‘ipmi.bmc’ or ‘mp.mpa’ 
by happenstance of plugin preference.
-Rather than OS deployment content being a bit spread out across the filesystem 
and held together only by database definition, have OS deployment profiles be a 
directly, using symlinks or copies as appropriate to keep things in one place 
for easy modification/examination without crazy amounts of disk space being 
used.
-Customization of os deployment in confluent is always on the OS profile, and 
the server side never makes per-node ‘kickstart’ files, moving that onto the 
node, and comma delimited sequences of scripts to run are replaced with editing 
script content freely. The first bits are strictly less powerful, but easier to 
understand and modify, and the latter is pretty much more powerful apart from 
not supporting different behaviors of a single profile across two nodes.
-Canned scripts are segmented by general OS category they are designed for. No 
longer is there a single ssh script that has a lot of conditionals to handle 
distro to distro differences.
-No dependency or conflict with an external DHCP server, more emphasis on 
static IP configuration being supported (though DHCP is also supported), easier 
to use without dedicated networks or in cases where new DHCP servers are 
forbidden.
-Moving away from hard requirement of name forward/reverse lookup as bound to 
node name, allowing cases where the deployment network is not the ‘primary’ 
network a bit easier.
-Going with the current winner of the general interpreted language popularity 
contest: python. It’s probably the least objectionable choice overall, though 
no choice can make everyone happy.

There are probably others, but this gives the general idea. It was a bit rough 
to go clean slate but it forced re-evaluating every little design choice in a 
more modern context with some experience under the belt and making some choices 
that make migration difficult. Conceptually it may be like ‘xCAT 3’ in my mind, 
but I don’t have the vision to make a migration from xCAT 2 to confluent 
trivial, so I’m reluctant to suggest it would be that straightforward.

Currently, it stops short of some xCAT functionality. The most loud feedback 
has been lack of stateless.  Currently I have two things in mind:
-Ability to import an xCAT genimage stateless and ‘confluent-ify’ it’s startup
-Talk to warewulf guys to see if they want to do a joint effort as they too are 
trying to reinvent themselves

I have ideas about ways to improve stateless for modern era, but I’m hoping 
that a clean Warewulf collaboration would leave room for that to be on the same 
page for more people.

From: Vinícius Ferrão via xCAT-user <xcat-user@lists.sourceforge.net>
Sent: Saturday, September 12, 2020 5:57 PM
To: xCAT Users Mailing list <xcat-user@lists.sourceforge.net>
Cc: Vinícius Ferrão <fer...@versatushpc.com.br>
Subject: [External] Re: [xcat-user] confluent 3.0.1 release

Hi Jarrod,

Indeed Confluent have a lot of cool features, and still using xCAT as basis. 
Mainly the SSH infrastructure and security features are the best additions IMO. 
A lot of folks, including myself, are adapting xCAT to be more secure 
(SELinux/Firewall) and more compliant, changing or removing entire postscripts 
for example, because they are now dated, specially the SSH ones.

With this in mind, aren’t xCAT devs willing to incorporate those changes so 
everybody can benefit from it?

Thanks all.


On 10 Sep 2020, at 16:05, Jarrod Johnson 
<jjohns...@lenovo.com<mailto:jjohns...@lenovo.com>> wrote:

For those that may be interested, confluent 3 is out now:
https://hpc.lenovo.com/users/hpc/update/2020/09/10/20brelease.html

This marks the first time that confluent may be used for OS deployment for 
those that are interested.
_______________________________________________
xCAT-user mailing list
xCAT-user@lists.sourceforge.net<mailto: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