FAI + SaltStack anybody?

Diego Zuccato diego.zuccato at unibo.it
Fri Oct 6 10:59:47 CEST 2023


Il 06/10/2023 10:36, Sinh Lam ha scritto:
> Reading through your original post - I think there might be some 
> confusion as to what SaltStack does and what FAI does (if not, I 
> apologize).  SaltStack is a configuration management tool that is 
> normally used to ensure the target minion's configuration is exactly as 
> it should, while FAI is a provisioning tool that essentially builds the 
> server that SaltStack is used to manage.

No need to apologize even if I already knew the difference between FAI 
and Salt  :)

> With the above said, I do not see what you mean there is a chicken and 
> the egg problem.

To approve a minion key, Salt does have to trust the request is coming 
from the right minion, but it can't know till the key is approved.

> I do not believe that salt can do the actual installation of the 
> server’s OS because there’s no minion running to begin with.  You should 
> really leave that to FAI.

Yes, sure. Other tools (like xCat) try to do both and are IMVHO way less 
versatile.

>  Your concern was how to move the minion 
> around servers that are getting provisioned/re-provisioned so you don’t 
> have to approve the minion each time and I’m sure there’s a couple of 
> ways to do this but right now I see two :
> 
> 1) turn on auto-accept - you don’t have to worry about approving any 
> minions because they’ll be auto-approved

Can't do that on public networks. [*]

> 2) issue a call to the salt master to accept the new minion when it is 
> registered during fai.  This involves you knowing the minion id/name of 
> the key.

That's what I'd like to make FAI do. If only there was a 'hook' system 
on FAI server, triggering scripts at the different stages... The nearest 
thing I could think of is a custom fai-monitor but it seems quite unsafe :(

> This is how I’m planning on using SaltStack with FAI -
> I have a dedicated network that is tightly controlled so to that point I 
> know what connects to it and I know why those servers are connected to 
> that particular network.  In essence, I trust this particular network.  
> Because of this, I have auto-accept turned on my salt master.

Can't do that: my networks are often exposed. The alternative would mean 
having to dynamically reconfigure switches to move ports to different 
VLANs... Quite a big can of worms on its own :(

> I have FAI install the base os on the server, toward the end of the 
> process, a couple things will happen:
> * a script will be used to auto-register this server with our CMDB
> * a script will be used to enroll this minion with the salt-master and 
> set the minion_id (if needed).

How does your script authenticate the requests? Or are you just relying 
on the "secured network" to bypass authentication?

[...]
> That’s it.  FAI does the OS (and handles the registering of the server 
> with our CMDB and the minion with the master), and salt stack takes care 
> of the configuration of the server.

That's the desiderable outcome :)

> The glue I believe you’re talking about is a source of truth to populate 
> pillar data and grains so your salt states can actually do something 
> useful.

No, that's already taken care of :)

> And MAC addresses can be spoofed quite easily, so you really shouldn’t 
> rely on that as your ‘root of trust’.  I deal with a lot of VMs and each 
> one of those VMs I can easily specify whatever MAC address I want (you 
> really shouldn’t).  But spoofing a MAC while it’s in the early parts of 
> pxe/net boot process is harder (if not impossible), you still shouldn’t 
> use it as the ‘root of trust’.

Yup, I know. Already did it in DOS :)
But stronger authentication either requires TPM or interaction.

-- 
Diego Zuccato
DIFA - Dip. di Fisica e Astronomia
Servizi Informatici
Alma Mater Studiorum - Università di Bologna
V.le Berti-Pichat 6/2 - 40127 Bologna - Italy
tel.: +39 051 20 95786


More information about the linux-fai mailing list