How to deal with named pet(server role with something unique per server) in DSC?

We have a web server farms that is troublesome to code. Every server in the NLB farm has the same config, except for one IP address, assigned to a website, that is unique to each server in the farm(the ip address is unique per server, but it’s assigned to the same website name). That ip is there for an old probing application to determine the state of the web service on each server. Modifying the code of that app to use modern technique is not possible for the moment.

How can we code this optimally in DSC? I know, DSC is not really suited for named pet, but I’m sure we all encounter cases like this at one point :slight_smile:

Do you compile your Configurations per machine with a specified name or do you use Localhost for the node name and use a generic one?

If you are using a per-name configuration you could just pass the name with a set ip address when you compile them in a loop.

If the machines themselves are static you could just make DHCP reservations for them.

Depending on your environment you could also achive this with ephemeral machines by creating them with set MAC addresses (although creating them with a preset static ip would do much the same thing and would probably be better supported).

We compile using a role name. So far we are trying really hard to build our configdata with Roles in mind.

DHCP won’t help since the problem is when we create the website, and then must assign that unique IP to the website. So, Webserver01 has WebsiteIP1 assigned to it, Webserver02 has WebsiteIP2, etc. As such, in our configurationdata, when we create the Webserver Role, we can configure everything, except that IP since it’s different for every member of the nlb farm.

We tried using the very promising Datum module, and that solved the unique IP/website problem, but we encountered other breaking problems with it so we had to back out of using it.


Maybe you can let me know about the “other breaking problems” of my Datum module :wink:
Probably best to hit me on slack (, or ask me to follow you on twitter so we can DM.

I’d be happy to get feedback anyway.

I suspect that if you’re setting up websites, you might have felt blocked with how to pass sub-construct (cimInstance types of parameters). Such as MSFT_xWebApplicationAuthenticationInformation?

Let me know.

Breaking problems is probably the wrong expression to use(english is not my first language), it’s more like we faced a current limitation of Datum(and our lack of expertise to solve it by coding what is missing). As such, we can’t use Datum until it support some kind of variable substitution(variable Interpolation you call it on github Datum variable Interpolation · Issue #21 · gaelcolas/datum · GitHub) I tried using a handler for that feature but I was soon faced with the recursive search problem that I have no idea how to solve.

Funny thing, I asked our Microsoft TAM what could be done to solve our “pet” problem and he sent me a link to the AutoLab DSCworkshop Repo :stuck_out_tongue:

P.S. I am now following you on twitter