WebDeploy parameterization on runtime

Deze post gaat over het parameteriseren van het web deployment package op runtime. De file [projectname].SetParameters.xml wordt automatisch gegenereerd op basis van settings in de web.config en de project settings. Denk bijvoorbeeld aan connectionstrings. Voor aanvullende parameters kun je een file Parameters.xml toevoegen aan de root van je web application. Bij het aanmaken van het web deployment package zullen de waarden uit de Parameters.xml file worden toegevoegd aan de SetParameters.xml file. Bij het importeren van het deployment package in IIS zal automatisch een dialoog venster verschijnen dat vraagt om de waarde van de parameters. Om het makkelijk te maken kun je default values opnemen. In onderstaand voorbeeld worden in de web.config authorization section twee groepen toegevoegd die rechten hebben op de webapplicatie. Denk bijvoorbeeld aan de BizTalk Server Operators.

<?xml version=”1.0″ encoding=”utf-8″ ?>
<parameters>
<parameter name=”Role1″ description=”Please enter the first authorized group” defaultValue=”enter_role_name” tags=””>
<parameterEntry kind=”XmlFile” scope=”\web.config$”
match=”/configuration/system.web/authorization/allow[@roles=’replace1′]/@roles” />
</parameter>
<parameter name=”Role2″ description=”Please enter the second authorized group” defaultValue=”enter_role_name” tags=””>
<parameterEntry kind=”XmlFile” scope=”\web.config$”
match=”/configuration/system.web/authorization/allow[@roles=’replace2′]/@roles” />
</parameter>
</parameters>

Another example is the replacement of appSettings. Also note the SetParameter entries to set the application pool and the virtual directory. Note: if you omit “/@value” at the end of the match string, a deployment dialog wizard will not appear. So, don’t forget!

<?xml version=”1.0″ encoding=”utf-8″ ?>
<parameters>
<parameter name=”QueueServer” description=”Please enter the name of the QueueServer where messages have to be sent” defaultValue=”Enter QueueServer” tags=””>
<parameterEntry kind=”XmlFile” scope=”\web.config$” match=”/configuration/appSettings/add[@key=’QueueServer’]/@value” />
</parameter>
<setparameter name=”IIS Web Application Pool Name” value=”SecureWebsite” />
<setparameter name=”IisVirtualDirectoryPhysicalPath” value=”C:inetpubwwwrootRfs.Integration.Common.REST.MessageService” />
</parameters>

Voor het aanmakan van een deployment package selecteer je onderstaand context menu:

context

De output is als volgt:

file1

Het deployment package zelf is de zip file ESB.Portal. Er is een command file ESB.Portal.deploy.cmd die het mogelijk maakt de web applicatie te deployen van de command line. Je kunt echter ook gewoon een uitrol doen door het importeren van de deployment package in IIS. Hier een voorbeeld voor de uitrol naar Productie. Je kunt ook installatie files opnemen voor Test, GAT en Acceptatie.

SET deployscripts=%~dp0
CD ….ESB.Portal
call .ESB.Portal.deploy.cmd /y -setParamFile:”%deployscripts%PROD.ESB.Portal.SetParameters.xml” 1>”%deployscripts%log_portal_deploy.txt” 2>&1
CD ..DeployScriptsESB.Portal

<?xml version=”1.0″ encoding=”utf-8″?>
<parameters>
<setParameter name=”IIS Web Application Name” value=”Default Web Site/ESB.Portal” />
<setParameter name=”IIS Web Application Pool Name” value=”EsbPortalAppPool” />
<setParameter name=”IisVirtualDirectoryPhysicalPath” value=”C:inetpubwwwrootESB.Portal” />
<setParameter name=”Role1″ value=” BizTalk Ontwikkelaars” />
<setParameter name=”Role2″ value=”BizTalk Server Administrators” />
<setParameter name=”EsbExceptionDb-Web.config Connection String” value=”Data Source=[server];Initial
Catalog=ExceptionDb;Integrated Security=SSPI;” />
</parameters>

Take aways:

  • Voor het parameteriseren van de connection strings hoef je geen entry op te nemen in de project settings, tabblad Package/Publish SQL.
  • De locatie van het gegenereerde web deployment package kun je opgeven in de project settings, tabblad Package/Publish Web.

output

  • Zorg op hetzelfde tabblad dat je de optie ‘Include IIS settings as configured in IIS’ aanzet. Deze setting zorgt voor de juiste vulling van de SetParameter.xml file. Het gaat om de volgende settings (die anders ontbreken).
  • <setParameter name=”IIS Web Application Name” value=”Default Web Site/ESB.Portal” />
    <setParameter name=”IIS Web Application Pool Name” value=”DefaultAppPool” />
    <setParameter name=”IisVirtualDirectoryPhysicalPath” value=”c:inetpubwwwrootESB.Portal” />

Leave a Reply

Your email address will not be published. Required fields are marked *