msdeploy via jenkins & conta de serviço: conectada mas “não autorizava”?

5

Plano de fundo / meta

As partes móveis:

  • Eu tenho uma conta de serviço, vamos chamá-la MyDomain\svcMyService .
  • Eu tenho um servidor remoto, vamos chamá-lo de MyDomain\MyServer .
  • Eu tenho um servidor Jenkins, vamos chamá-lo de MyDomain\MyJenkins .

No Jenkins, tenho uma tarefa de implantação. Ele pega alguns artefatos e chama msdeploy para empurrá-los para o MyServer.

Esta etapa de implantação falha e eu gostaria de descobrir o motivo.

O comando MSDeploy que estou usando

O comando é gerado automaticamente pelo Jenkins e acaba sendo o seguinte (dados sensíveis omitidos):

 "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:iisApp="E:\Jenkins\jobs\NotARealJobName\workspace" -dest:iisApp="MyWebSite/MyWebApp",ComputerName="https://MyServer:8172/MsDeploy.axd",UserName=MyDomain\svcMyService,Password="NotARealPassword" -allowUntrusted 

O erro

A mensagem de erro que vejo na saída do msdeploy é:

Error Code: ERROR_USER_UNAUTHORIZED More Information: Connected to the remote computer ("MyServer") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.

Error: The remote server returned an error: (401) Unauthorized.

Minha compreensão do que tenho que fazer

Esta pode ser uma lista incompleta ou incorreta. Por favor, me diga se é onde o problema poderia estar.

Eu acho que tenho que:

  • Instale o WebDeploy no IIS (a versão 3.6 é a mais recente neste caso).
  • Ativar o serviço de gerenciamento no IIS.
  • Crie um pool de aplicativos que seja executado como MyDomain\svcMyService .
  • Sim, o mesmo nome de usuário que implanta também está sendo executado. Não é o melhor, eu sei. Fora das minhas mãos no momento.
  • Crie o diretório do meu aplicativo da Web do IIS.
  • Conceder permissões neste diretório.
    • Permissões completas para svcMyService
    • Permissões completas para WDeployAdmin
    • Permissões completas para NetworkService (já que o WMSvc é executado como)
  • Crie o site da Web com a porta apropriada
    • O site deve ser executado no pool de aplicativos da conta de serviço
    • O site deve se conectar à pasta usando a conta svcMyService .
  • Crie um aplicativo da web no site.
    • O site deve se conectar à pasta usando a conta svcMyService .
    • Adicione a conta svcMyService como um gerenciador de implantação no nível do site e do aplicativo.
  • Verifique se as contas locais WDeployConfigWriter e WDeployAdmin não expiraram e se as senhas não podem ser alteradas.
  • Verifique se a delegação de gerenciamento do IIS está usando WDeployConfigWriter e WDeployAdmin contas e atualize essas credenciais para cada delegação se você tiver alterado a senha para essas contas locais.

Resolução de problemas até agora

Vou manter essa lista atualizada enquanto tento solucionar problemas.

Check WMSvc IIS Logs - parece que meu usuário não tem os direitos para publicar

  • A amostra do registro está abaixo:

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken 2015-09-14 17:10:06 [Server IP] HEAD /MsDeploy.axd - 8172 - [Jenkins IP] - - 401 2 5 15

Eu vejo que todos os status são 401.2 com um código win32 de 5.

De acordo com este link de solução de problemas , "Se o usuário for autenticado, mas não tiver os direitos necessários para publicar, a entrada de log será semelhante a" that ( 401 2 5 ).

Artigos referenciados

por SeanKilleen 14.09.2015 / 19:19

1 resposta

5

Eu encontrei a resposta neste antigo post do fórum de 2011 - parece realmente obscuro.

A solução encontrada nesse fórum era para:

  • Abra o Regedit
  • Abra o caminho HKEY_LOCAL_MACHINE\Software\Microsoft\WebManagement\Server
  • adicione um DWORD chamado WindowsAuthenticationEnabled com um valor de 1
  • Reinicie o WMsvc e o IIS

Depois de executar essas etapas, parece que funcionou para mim na primeira vez.

    
por 14.09.2015 / 19:50