Right now, 99% of people are going “Don’t you mean CALs?”. Nope. In the hosting world licensing via SPLA is very different – it makes every other kind of licensing from every vendor look easy. I reckon SPLA is managed in MSFT by these guys. SALs are a way of licensing some products in hosting on a per user basis. Some products have a choice of per-proc or per-user, and some, like RDS, only support the per-user SAL.
I worked in hosting in the past for several years but never had to count SALs … they weren’t popular because:
- They’re near impossible to count in a multi-tenant environment: firewalled, no-trust, maybe no domains, and a significant chance that the hoster has no access to the VMs.
- You can’t rely on the customer to count the users correctly … hell, they’ll probably ask why the should be counting anything or claim that they don’t know what a user account is.
I was asked if I had a solution to this earlier this week. I didn’t at the time, but a conversation on Windows Weekly got me thinking.
Step 2: Use Hyper-V
Of course! There is a reason as you will see.
Step 2: Contractually Require VM Access
Anyone signing up a contract using SALs must allow the hoster local admin rights in the VMs. That’s probably there by default, but the tenant might delete those rights. Maybe you have an Orchestrator task to verify rights. If that fails, it sends emails to the tenant and puts the VMs into a saved state after X days. Naughty!
Step 3: Audit via Scheduled PowerShell Script
Each VM will have a scheduled task to scan for user accounts, usage, and numbers. Maybe this is a script that is scheduled via the VM template. That’s a bit static and very messy to change – Forget ConfigMgr in this environment. Maybe you use your local admin rights via Orchestrator to do this scan?
I wonder if you can kick off runbooks with dynamically queried VM names (pulled by querying a customer’s currently deployed VMs?
Step 4: Get the Results
Honestly, I don’t know Orchestrator beyond the marketing – so maybe it can pull out results from the VM. Maybe not. If not, or if you do use an internally scheduled script, you could write the results to pre-defined keys in the VMs registry. You could then query those results via KVP via the integration components.
Anyway … that’s one way. I’m sure there’s lots others?