Automatic applications deployment


I want to automate applications/roles/features deployment (unattended) on Windows 2012 R2 Infrastructure, this project needs many hours of programming, this is why i’m asking here.

I want to deploy the following applications and roles : Active Directory, DNS, Sql Server 2012, Citrix XenApp Server, Citrix XenDesktop server, Citrix Datacollector, Citrix Licence server, Citrix Storefront server.

So the basic deployment will be on 8 servers (already installed on ESXi, with ip configuration only).

I imagined this scenario :

I will fill a CSV file that contains all of information, and execute Powershell scripts to deploy everything, we can imagine 1 script that will call different scripts for each components (sql, ad, dns, citrix etc..)

I don’t want to depend of any tool (sccm, puppet or whatever..), this is the reasons why i want to create it from scratch -> But maybe i’m wrong.

I also read that there is a new feature called Powershell DSC, to simplify application deployment
There is a simple example : if you need 4 iis webserver then, execute this code :

But in my case i’ll have only 1 server per application/roles or feature, if i understand well, this feature is interesting only if you need to deploy the same configuration on (x) servers

What’s your advice? Should i choose to write powershell script from scratch? Or choose a solution like puppet or chef (much easier), but in this case i’ll be dependant of a tool.

The best solution would be to use a sql database -> The final goal of my project is a web application with a database who will execute my powershell scripts to deploy my infrastructure

Of course from this web application, I will populate my database through forms, and my powershell scripts will query this database to get informations (ip address, client name, domain name, password, users…)**

Thank you for your advice.


Chef or Puppet will be the easiest way forward and both tools have been around for long enough for you not to worry about them disappearing off the internents. Both work, pretty much, out of the box and will get you up and running in a considerably lesser time than if you were to design your own system.

Having said that, a benefit of going with a PS solution is it doesn’t require any agents installed on destination boxes(connectivity thanks to WinRM). Ultimately you can wrap it up as a Powershell module, hand it out to your sysadmins and retain full control of what’s going on under the hood.
A PS solution will give you full control, better understanding of underlying process – but that will at cost of time and other design headaches.

To sum up: if you have the time, the will or a specific use case then go with PS. Otherwise do what the big boys do and save yourself reinventing the wheel – or seventeen.

Disclaimer: I did the PS thing for a previous employer.


Automatic applications deployment by licensed under CC BY-SA | With most appropriate answer!

Leave a Reply