Blueprint Download IIS Deployment Automation with UrbanCode Deploy
UrbanCode Deploy integrates with scores of 3rd party tools via its free plugins. One such plugin is the IIS plugin which provides the integration between UrbanCode Deploy and Microsoft's Internet Information Server, IIS. This plugin provides auto-discovery of IIS installations and it gives you the steps to create, configure and delete sites, applications, application pools, and virtual directories; start, stop and check status of a websites or application pools; and install or update applications.
For the purpose of this blueprint, we will automate the process of creating a website and an application pool on IIS, deploying an example application to it, and assigning the application in the application pool.
The application that we will deploy is the PetShop application, an open source ASP.NET application often used in demos. PetShop has two components: an ASP.NET application, which will be installed on the website, and a database component that is deployed to a database server (not part of this blueprint.) Typically, the ASP.NET application will be created by our build system and then be automatically handed to UrbanCode Deploy for deployment. See Going from Continuous Integration to Continuous Delivery for more on this topic.
The IIS installation in this example lives on a stand alone Windows server named petstore-dev. Its full host name is: petstore-dev.deploy.demo.urbancode.com. It serves as the root website for our example application. The website topology is shown hierarchically in the IIS Manager in Screen 1. Currently it hosts only the Default website. There are two application pools, the Classic .NET AppPool, and the DefaultAppPool which is servicing an application in the default Website.
UrbanCode Deploy interacts with IIS, via a UrbanCode Deploy agent. The UrbanCode Deploy agent is installed on the same host as IIS. This gives the agent access to the IIS command line tool, AppCmd.exe; the tool that it uses to perform integration tasks on IIS resources. This architecture makes it possible for UrbanCode Deploy to create and deploy to any websites, and application pools in IIS.
What we are going to do
We have set up a fresh installation of UrbanCode Deploy. We will show how auto-discovery identifies the IIS installation. We will create a component process that will define and sequence the actions necessary to create the PetShopSite website and the PetShopAppPool application pool. Then we will install the PetShop application, and assign the application to the PetShop application pool.
After the component processes are created, we will create a UrbanCode Deploy application deployment process that we can use to deploy the PetShop application to this or any other IIS deployment target. Then we will deploy the application, and show how UrbanCode Deploy reports its progress.
It's worth mentioning that once we have accomplished this, we can reuse the component processes and the application process to create a PetShopSite website and a PetShopAppPool application pool, and deploy the application to any number of IIS installations as often as we want. See Screen 2.Read entire blueprint here
Benefits of using UrbanCode Deploy and the IIS plugin to deploy to IIS
UrbanCode Deploy's integration with IIS provides both auto-discovery and process automation. The IIS plugin steps allow us to create reliable, repeatable, automated component processes — processes we can combine to create orchestrated deployments of any complexity. It eliminates home grown deployment scripts and their maintenance. It replaces error prone manual processes with reliable automated ones that can be launched in any environment by anyone with appropriate credentials.
UrbanCode Deploy's deployment automation simultaneously reduces many types of errors while shortening deployment times. Having a single application deployment process for all environments in the deployment pipeline improves quality and confidence in the process; testing both the deployment process and the deployed artifacts, at every deployment.