2011-05-04 11 views
8

¿Alguien está utilizando con éxito MsDeploy para implementar servicios de Windows con un preSync runCommand? Lo tengo trabajando usando una cuenta de administrador, pero no puedo hacerlo funcionar en una cuenta de usuario estándar. Lamentablemente, no puedo usar la autenticación integrada (estamos implementando en un cuadro externo), y la idea de que nuestra contraseña de administrador se encuentre en texto sin formato en los registros de nuestro servidor de compilación no me hace sentir muy cómodo. Para el caso, tampoco lo hace ninguna credencial de usuario, pero no puedo encontrar una forma de evitarlo.Uso de MsDeploy para implementar servicios de Windows con el comando preSync

El comando que estoy usando es la siguiente:

"tools/deploy/msdeploy.exe" -verb:sync 
-preSync:runCommand="tools\Deploy\PreSyncCommand.cmd",waitInterval=30000 
-source:dirPath="C:\BuiltSourcePath" 
-dest:computerName=https://server:8172/msdeploy.axd?site=dummysitename,userName=service-deploy,password=service-deploy-pass,authType=basic,dirPath="C:\DeployPath\" 
-allowUntrusted 

con las normas establecidas en IIS para el sitio ficticio para permitir la autenticación de la cuenta de servicio de las ventanas de implementar, con contentPath y permisos runcommand (para el momento establecido en C: \ ya que no está del todo claro si esto debe establecerse en la ruta temporal a la que MsDeploy transmite, o la ruta de implementación?). La cuenta de despliegue del servicio también tiene control total del directorio de destino. Me sale el siguiente vuelta:

Performing '-preSync'... 
Info: Using ID '7a7d34a1-b5d8-49f1-960a-31c9cf825868' for connections to the remote server. 
Info: Using ID '4d0b910c-aca4-4640-84bd-3597d22d99d1' for connections to the remote server. 
Info: Updating runCommand (C:\TeamCity\buildAgent\work\aec989676b349656\tools\De 
ploy\PreSyncCommand.cmd). 
Warning: Access is denied. 
Warning: The process 'C:\Windows\system32\cmd.exe' (command line '/c "C:\Windows 
\ServiceProfiles\LocalService\AppData\Local\Temp\giz2t0kb.0ay.cmd"') exited with 
code '0x1'. 

Esto ocurre incluso si el contenido de PreSyncCommand.cmd está en blanco. El mismo comando funciona bien si paso las credenciales de administrador. Intenté usar ProcessMonitor para verificar si se está negando el acceso a algo, pero no puedo ver ninguno, así que supongo que sigue siendo una regla de autenticación de MsDeploy. No hay nada en WmSvc.log (la depuración está habilitada), ni en el registro de eventos.

¿Alguna idea? ¡Gracias!

+2

he publicado una entrada de blog sobre cómo hacer esto: http://www.jamescrowley.co.uk/2011/04/28/deploying-windows- services-using-msdeploy/ –

+2

La entrada del blog publicada por James Crowley arriba se ha movido ahora [aquí] (http://www.jamescrowley.co.uk/2011/09/05/deploying-windows-services-using- msdeploy /) –

Respuesta

13

Dado que está utilizando Web Implementar a través WMSVC, necesita la normativa correspondiente delegación de configuración del servidor de destino:

Dentro Administrador de IIS, abrir la función de "Delegación Servicio de Gestión". Agregue una nueva regla que al menos especifique el proveedor runCommand. En la sección Ejecutar como, seleccione Specific User y proporcione credenciales para una cuenta de administrador local en esa máquina. Esta es la identidad bajo la cual se ejecutarán los comandos runCommand. Finalmente, el usuario que está especificando para el proveedor dirPath de destino debe agregarse a la regla de delegación.

que le permite invocar un despliegue utilizando una cuenta sin privilegios, y sin embargo tienen que ejecutado en el equipo de destino con las credenciales administrativas.

Más información sobre IIS función de delegación: http://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/

+0

¡Gracias! Era el elemento * run as * que me faltaba. Funciona perfectamente ahora. –

Cuestiones relacionadas