Hacker News new | past | comments | ask | show | jobs | submit login
This repo is for the DSC v3 project (github.com/powershell)
44 points by bsnnkv 4 months ago | hide | past | favorite | 37 comments



I’m the “PowerShell guru” at work and I really want to get into DSC, but there’s always some basic product issue holding me back.

What worries me is that Microsoft is pushing DSC as an alternative to Group Policy but this is like saying C# is an alternative to Excel. Sure, technically you can sum up tabular data with both but the user experience is not even remotely the same.

Everything I have found in the past related to DSC boiled down to “you can write your own things using this baroque nonstandard system” which doesn’t appeal to me. I’d rather write a script or tick a checkbox in a GPO. The in between space occupied by DSC doesn’t feel like a good fit for anyone.

Worse, DSC was always a half-baked solution made by a tiny team. This new version seems extra underfunded. There’s no documentation to speak of! I can’t even find what operating systems they support, for example.

I want declarative state configuration as a concept, but I don’t think PowerShell DSC can deliver this. The industry has moved on to container images, scale set images, and monolithic executables as produced by dotnet and go.


DSC has so many problems. We rarely use it. Ansible works great


Yep, DSC is cool, if it fits exactly your use case its very cool, and generally it seems like a huge PITA to manage on any level and nobody uses it but very expert level powershell people doing DoD stuff or similar.


The exact use case is if you have to deploy slightly customized windows installs on a daily basis.

You know you need it when you have a document that details all the steps in setting up windows itself and a couple of common softwares. Then someone ham fists something every once in a while and causes confusion for everyone.



There is no actual documentation at these links, they’re basically single page announcements or blog articles.


There's a tutorial in the first link.


Tutorial != documentation.


The Alternatives MS provides to Group Policy are SCCM compliance, intune compliance and Settings Catalog via Intune. GP sucks and I think anything else is better, especially with it's weird double negatives in setting descriptions and names.


I work mostly in the windows world and I've looked at dsc a few times. It never seemed to be viable for the reasons you mention.


DSC would be worth the effort to adopt if the modules were all solid (most are not from what I have seen).


I see a lot of misinformation in your post.

1. I'm loosely following the development for DSC (v3 or v2-tooling) and never have I heard Steve Lee, Michael Greene or Michael Lombardi advocate DSC as an alternative to GPOs.

2. How do you get to the conclusion that DSC is a non-standard system. What's your point of reference with that statement? I am not aware of any standard out there, but I'd love to be educated. I have the same question about the baroque-statement. Yes, DSC is old, but so are Chef and Puppet.

3. Why do you say DSC is half-baked? It was never intended to be an Alternative to Chef and Puppet, if that is what you're comparing it to. It's intended as a foundation for tools like Chef and Puppet.

3a. You want declarative state as a concept and that is exactly what DSC delivers.

4. The industry has not moved on to container images. These are two separate "movements" and there still is very much a need for bare-metal services. And this is still very prevalent with Microsoft services like AD, Exchange, SharePoint, SQL, or other Software like Veeam, ... I don't understand once more what your point of reference is with this statement.

The only part where I agree is that DSC is underfunded. That is factually true with v2, where in fact it wasn't funded at all for a decade. I believe DSC v3 is backed by Microsoft with a small budget, but it still isn't clear to me what the end goal is.

I think it is a good decision to remove the need to compile into MOF, which simplifies a lot of the process. At the same time I wonder why they would remove the LCM, which complicates the entire process of having state re+applied to a machine when it deviates locally.

And then of course, DSC v3 still doesn't do much if there's no tooling around it. Azure has configuration management based on DSC, but it is a pain to learn and to configure in my experience. I really, really wish Microsoft would have a holistic approach, but my impression is that they don't and just fiddle around individual components, without a clear picture of the desired end result.


> DSCv3 doesn't depend on PowerShell. You can use DSCv3 without PowerShell installed

So what's the point of PowerShell if most new CLI tools from Microsoft aren't PS modules and can't take advantage of the .NET object model, even on Windows (see also winget)? Why is DSCv3 under the powershell organisation if it's just a regular Rust CLI?


DSCv3 is compatible to v2, except with MOF files, in my understanding. You can continue to use PowerShell with it.

I can only speculate, but since there is no more LCM, a binary was needed to properly run DSCv3 on your machine.


I see now that not all the PS files are for tests, there's one adapter PS module for compatibility.

But that's still damning: If Microsoft themselves are building their PS modules as ConvertTo/From-Json wrappers for native CLIs (or being shipped at all, like winget's PS module), instead of shipping C# cmdlets and a domain model for .NET, then PowerShell is superfluous and we should be dropping it, even on Windows, for a JSON-aware shell or a more common shell with tools like jq.


DSCv3 is compatible to v2, except with MOF files, in my understanding. You can continue to use PowerShell with it.

I can only speculate, but since there is no more LCM, a binary was needed to properly run DSCv3 on your machine.


Seems like classic Microsoft to me.


PSConf EU happened a few weeks ago, and Steve Lee the project manager for PowerShell, DSC, Windows OpenSSH, gave a talk on DSC v3 which is available on YouTube:

https://youtube.com/watch?v=lyiyzYPeh8s

Other talk recordings and content are available at https://psconf.eu/recordings/videos-2024/

NB. DSC v3 hasn’t shipped yet (well it’s open source but y’know, no official releases yet, it’s in preview).


Why do they make it so difficult to find a code sample that concisely shows what this is and why you should use it?

I’ve visited about 15 links and found some go code[1] that doesn’t really make it clear.

It’s like Terraform, but for Windows workstations?

1. https://powershell.github.io/DSC-Samples/tutorials/first-res...


When our team moved to Office 365, we wanted something declarative, and the only option was [Microsoft365DSC](https://microsoft365dsc.com/). We of course tried it, but the experience is subpar, went through hoops to set it up on Windows (no Linux, Mac support) and the output was a mix of imperative code and declarative specs, with GUI tool to help you manage. Seriously hope some Microsoft expert will create a Terraform provider for Microsoft 365. currently we have to use the Office 365 sluggish admin dashboards.


Nice, very nice... I'm glad this exists, given Microsoft's bullish attitude towards migrating everyone to their cloud. I think projects like this one will help those of us who will remain off their cloud as long as possible. I think this software would go well deployed to on-prem installations of netboot.xyz.


> You can use DSCv3 without PowerShell installed and manage resources written in bash, python, C#, Go, or any other language.

> Non-PowerShell resources define their schemas with JSON files, not MOF files.

> Configuration documents are defined in JSON or YAML files, not PowerShell script files.

Will have to look at this properly next week, but each of those is promising!



Is DSC basically nix for windows?


No, it's a configuration management tool (similar to Salt, Puppet & Chef) where you declare what you want the end result to be and it takes care of the rest. I used v1 a long time ago, but moved to Salt shortly after and now we do everything in Terraform.


Isn’t that what Nix is though? A declarative language to specify how to produce a $THING; it will produce a package, a system image, or a cluster.


The thing is, Chef and friends aren't declarative at all. They're imperative scripts cosplaying in declarative-ish syntax. The more you use it, the more it begins to look like a complex bash script with way too many levels of indirection.


Nix actually works ;)


The design of this project is a dead end. If you want something that looks like it's ten years old, use Ansible or Puppet.

Disclosure, I'm working on https://github.com/purpleidea/mgmt/ so I think I have some reason to comment about this kind of tooling.


Microsoft is like Google in this space.

The previous iteration got killed right when it could have started gaining traction due to Microsoft's shift to "cross platform" and PowerShell Core.

The previous iteration of the Local Configuration Manager for Linux was written Python while the Windows version was a distinct codebase entirely.

But even regardless of that I have zero confidence that Microsoft can break into this space and that the Windows culture would shift in this direction. The mentality is just not there with the typical (majority of) admins.


What's the latest cool stuff or standard tooling in config management? I still use puppet...

The only thing I've heard is if stuff along the lines of if your using puppet in 2024 your doing it wrong, but not sure what the alternative is?


Pulumi worked great for me at my last job. I've heard it's not so fun with Python, but I thought it was really nice to use with Typescript.


If you count Nix and Guix, there's that.

Otherwise the classics (Ansible/Puppet/Chef/Saltstack) seem to still hold their positions somewhat.

(I don't count Terraform/Pulumi/OpenTofu in this category)


I use a Chef setup based on how Airbnb did config management in 2013. It ain’t broke, and Ruby is an amazing language for DSLs like system configuration. I never got along with Puppet because I’m annoyed I can’t use Ruby for everything.


The answer a few years ago was nothing (eg just use Railway or other actual PaaS) or Terraform.

Anything else mature and worth trying?

Although I guess you mean individual machine config not operations in general!


going by the post you reply to it is code again.


DSC has a really really wide variety of windows modules and unfortunately there isn't really anything comparable, Puppet and Ansible do have interfaces to DSC modules but it's kind of janky compared to just using DSC.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: