How to Implement PowerShell DSC with existing continuous Deployment Process?

I am doing PowerShell DSC POC. I configured the Pull server and one client machine. It is working fine and I am very much happy about PowerShell DSC feature.

Now I want to integrate this feature with our continuous Integration process. We are using Nolio for MSI deployment and do the other configurations. As of now I want to use DSC only for configurations and Nolio will continue for deployment process (due to reduce the Migration complexity). Later we planned to replace the Nolio with DSC including deployment. Here is my questions.

  1. We have monthly releases. As per my understanding I need to install the MSI(will deploy websites) in all machines including Pull Server and Nodes. Then I will do the configuration settings using Pull Server configuration. Once I configured the Pull server how could I do the second deployment. Will Pull server node create any problem at the time of deployment like reverting the installed files as per old configurations? Is there any way to stop the Pull server settings at the time of deployment?

  2. If I want to install MSI also from DSC, I am planning to do that like below.

[ul]Change the Pull server configuration to install the MSI from other configuration settings.
Install the MSI in Pull server and all Node machines.
Do all other configurations in Pull server.
Change the configuration to apply pull server configurations to Node from Install MSI.[/ul]

Is this good process?

Could you please anyone help me to achieve this? Please share if you have any other best practices.

Thanks in advance.

We have some PowerShell Summit sessions on continuous integration, next week in Charlotte. Those are recorded, and will be posted on YouTube.com/powershellorg by the end of April. It would be worth your time to view those, once they’re up.

I’m not sure I follow everything in your post. Is DSC what’s driving the installation of this MSI, or are you trying to deploy something separately from DSC? You shouldn’t try to do both; if DSC is going to be managing this particular installation, then when an update is required, you should just update your DSC configs and let it do its job. If you’ve got an existing delivery pipeline managing this MSI, then I wouldn’t recommend putting it into a DSC config.

That said, you can make compiling and publishing DSC configurations part of your delivery pipeline. Those are the same steps you’d do manually: load up your configuration script, data, and any custom resources you need to deploy, compile the MOF documents, zip up the resource modules, generate checksums for everything, and push it all over to the proper directory on the DSC Pull Server.

Steve Murawski did this over at Stack Exchange before most of us even knew what to make of DSC. :slight_smile: There are some tooling modules published to GitHub - PowerShellOrg/DSC: DSC Tools and Documentation (in particular. the DscBuild module) along these lines. (The “master” branch is still largely what was used at Stack, and the “development” branch contains lots of newer, not necessarily backwards-compatible code which has been added since then.)

Thanks Dave and Don for your responses.

@Don, Sure I will look that videos once it is up.

@Dave, Yes Now I have some clear picture about deployment. I have to install the MSI using DSC configuration and use the same configuration file for to do other webconfig changes. Thanks once again for your valuable suggestions.