title: Automatic applications deployment
body: <p>I want to automate applications/roles/features deployment (unattended) on Windows 2012 R2 Infrastructure, <strong>this project needs many hours of programming, this is why i'm asking here.</strong></p>
  
  <p>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.</p>
  
  <p>So the basic deployment will be on 8 servers (already installed on ESXi, with ip configuration only).</p>
  
  <p>I imagined this scenario :</p>
  
  <p>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..)</p>
  
  <p><strong>I don't want to depend of any tool</strong> (sccm, puppet or whatever..), this is the reasons why i want to create it from scratch -> But maybe i'm wrong.</p>
  
  <p>I also read that there is a new feature called <strong>Powershell DSC</strong>, to simplify application deployment <a href="http://blogs.technet.com/b/privatecloud/archive/2013/08/30/introducing-powershell-desired-state-configuration-dsc.aspx" rel="nofollow">http://blogs.technet.com/b/privatecloud/archive/2013/08/30/introducing-powershell-desired-state-configuration-dsc.aspx</a>
  There is a simple example : if you need 4 iis webserver then, execute this code :</p>
  
  <pre><code>Configuration DeployWebServers
  {
  
      Node ("test1.domain.com","test2.domain.com","test3.domain.com","test4.domain.com")
      {
      Windows-Feature IIS
      {
           Name = "Web-Server"
           Ensure = "Present"
      }
  
      }
  }
  
  DeployWebServers -OutputPath "C:\scripts"
  Start-DscConfiguration -path "C:\scripts" -Verbose -Wait -Force
  </code></pre>
  
  <p>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 <strong>(x) servers</strong></p>
  
  <p><strong>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.</strong></p>
  
  <p><strong>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</strong></p>
  
  <p>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...)**</p>
  
  <p>Thank you for your advice.</p>