PowerShell desired state configuration
Octopus is a deployment orchestration/application release automation tool. Many companies can benefit from configuration management tools like Puppet/Chef, but for various reasons are unable to use them. On the Windows platform, PowerShell's Desired State Configuration support is designed as an alternative to Puppet/Chef, and makes it easy to automate tasks like configuring Windows features and checking for drift.
However there are limits to using PowerShell DSC for our customers - they may not always be on the same AD domain, there may be security issues, there's no auditing, and no nice central way to manage scripts for the team.
Octopus could build in support for DSC, and this would make it much easier for customers to create DSC configurations and apply them to machines managed by Octopus.
Thanks everyone who provided feedback on this ticket. We published a blog post yesterday showing how to do PowerShell DSC with Octopus – everything from deploying DSC scripts, detecting drift, getting email notifications when drift occurs, and automatically fixing the drift:
With that in mind, I think many of the comments on this suggestion are “done”. But there might be some areas of DSC support that we still don’t do. I’d really appreciate if you could read the post, and let us know of any scenarios we’ve missed. If it looks like we’ve done nearly everything, I might close this UserVoice suggestion and we can open new, more targeted suggestions for any gaps.
I am looking into DSE at the moment and there is something I do not understand, and perhaps there is where octopus can help
when you read about DSE or watch videos it talks about ' Notifying' e.g. you can set the LCM to Notify.
My question is HOW does it notify as this is never explained (at least in the docs I have seen), for example does it use SNMP, SMTP, Syslog or something else ?
And where do you set these 'notification' options e.g. IP address or SMTP server to example
Octopus needs to be able to support reboots here. Sucks so much that it's not available. Unfortunate that Windows still requires this, but without it, it's hard for Octopus to handle our end to end configuration and deployment.
I was hoping that a framework or something to the sorts would be implemented for DSC in Octopus Deploy as well. Yes, one can write everything from scratch and do it in that manner. Or, Octopus Deploy can pre- can some of the code and make it east to manage DSC without having to write everything.
Jarrod Johnson commented
Would love to see something like this. Your competitor, Inedo, just released a product called Otter that works with their build/deployment product Buildmaster which looks like exactly what I was hoping Octopus would implement in their own octo way. I haven't dug into this much but they look like they've taken the approach @EricHexter suggested and built a separate product that their deployment product can hook into during deployments. This seems like a good approach at first glance. I hope Octopus can follow suit with something even better!
Would love to see DSC supported as a first class feature. Please don't underestimate as it could be stitched together, I think a framework could be built that would make this the tool to use with DSC. I am not so much a developer as I am an infrastructure person, but looking for something like this to manage DSC with!
It would be fantastic. DSC in pull mode is hard to implement, tend to like the push mode better, but yo uhave to provision DSC ressoruces in module before. Also going from dev to test to prod is not easy. Octopus could really help.
I owuld put DSC config in Git (stash) and then Octopus would take them and push them with dsc ressources module
Kevin Callahan commented
It would be great to see DSC get 1st class support in Octopus.
But its not super hard to do DSC with Octopus today. I use DSC to install Windows Features and Configure IIS based on DSC stored in GIT.
If you are looking to use DSC to manage IIS, I have a tool that will produce the DSC from an existing server https://github.com/kevinsea/dsc-generator . You just package the file as nuget and use Octopus to execute it.
Eric Hexter commented
Have you considered building a DCS tool that is separate from octopus deploy? I would really like a chef like product that takes care of configuration drift that is not tied to my deployments.
There are cases where during a deployment, I want to validate my machine dependencies, but maintaining drift is a separate issue that can occur independent of deployments occurring.
Joe Mendonca commented
Can I have this now please? :)
TeamCity + Octopus + Powershell DSC is a powerhouse trio of tools in the Windows world. Connecting the dots would mean a complete continuous delivery pipeline of code/configuration/environment.
Keep up the amazing work, Paul. Many of us are eagerly awaiting to get our hands on this support.
Jason Brown commented
DSC is already kinda-sorta supported. Since it's just powershell, you can run it like any other powershell step - as long as you have the appropriate WMF version on the target boxes.
Or are you runnning into a roadblock that I haven't taken into account?
what a great idea