Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 http://blogs.technet.com/b/privatecloud/archive/2013/08/30/introducing-powershell-desired-state-configuration-dsc.aspx There is a simple example : if you need 4 iis webserver then, execute this 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

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.

like image 519
Adeel ASIF Avatar asked Jun 18 '14 14:06

Adeel ASIF


People also ask

What is automated deployment?

Deployment automation is what enables you to deploy your software to testing and production environments with the push of a button. Automation is essential to reduce the risk of production deployments.

What is meant by application deployment?

Application Deployment, also known as Software Deployment, is the process of installing, configuring, updating, and enabling one application or suite of applications that make a software system available for use, like facilitating a certain URL on a server.

Why automated deployment is important?

Deployment automation lets you release new features and applications more quickly and frequently while removing the need for human intervention in application deployments. If your business is ready to upgrade your software deployment systems, deployment automation offers many benefits to grow your overall efficiency.


1 Answers

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.

like image 123
Raf Avatar answered Oct 11 '22 00:10

Raf