No momento, estamos usando a MS Web Deployment Tool para sincronizar um site ativo e alguns WebServices de uma caixa de teste para dois servidores ativos.
A caixa de teste hospeda o site em qualquer IP na porta 17000, enquanto os dois servidores ativos têm balanceamento de carga e têm um IP diferente para cada um deles.
No momento, eu gero dois pacotes separados para implantação - um para cada máquina - usando a operação de sincronização e especificando um parâmetro DestinationBinding da seguinte maneira:
msdeploy -verb:sync
-source:WebServer,computerName=localhost
-dest:package="machinename.zip"
-setParam:type="DestinationBinding",scope="SiteName",value="ip_address:port:".
(Divida em várias linhas para facilitar a leitura!)
Eu corro isso duas vezes, com um nome de arquivo e endereço IP de destino diferente para cada uma das duas máquinas. Quando se trata de implantação, simplesmente faço uma sincronização de cada pacote com seu respectivo site ativo.
Eu sei, eu sei - eu deveria conseguir fazer isso gerando um pacote parametrizado e, talvez, usando o comutador SetParamFile para cada um dos dois servidores - acredite, eu gostaria, mas a documentação sobre isso é francamente não- existente.
Agora, preciso configurar e implantar a ligação HTTP e HTTPS para este site; incluindo também o certificado SSL que deve ser usado.
Adicionei uma ligação SSL para o site na caixa de teste - que usa um certificado de desenvolvimento (que precisará ser substituído - ou a caixa de teste deve usar o certificado ativo?) E agora a linha de comando acima tem o efeito de substituir o IP de destino nas entradas http e https.
Parece que não posso especificar várias ligações, além das informações de certificação no valor DestinationBinding no -setParam acima, para que alguém saiba como eu faria isso?
Qualquer ajuda muito apreciada.
fonte
Respostas:
Ok, então cheguei até aqui - não estou publicando isso como uma edição da pergunta, com a possibilidade de que, embora pareça estar no caminho certo, possa haver uma maneira melhor do que estou trabalhando . Figura eu deixaria a democracia decidir!
Usando esse link, consegui descobrir o formato do arquivo XML que deve ser usado com a
setParamFile
opção para msdeploy. No passado, eu também havia descoberto o formato do XML declareParamFile usando a GUI incorporada no IIS depois de instalar a Web Deployment Tool.Portanto, dado um site chamado 'SiteA', com duas entradas de ligação no arquivo applicationHost.config da seguinte maneira:
(O que significa, especificamente - qualquer endereço IP na porta 80 e qualquer endereço IP na porta 443)
O certificado real usado não é armazenado no applicationHost.Config, mas na configuração do Http.sys (de acordo com este artigo ). Quando o msdeploy prepara um pacote para o site, ele incorpora essas informações - o que pode não ser uma bênção, como mencionei no final.
A primeira etapa é declarar um arquivo xml de parâmetros que usaremos para parametrizar um único pacote para os servidores ativos de destino:
Observe os valores do atributo 'match =' nas duas entradas de parâmetros internas. Isso garante que a ligação correta seja substituída. Este é um Regex (conforme descrito neste artigo técnico ) que seleciona os valores de ligação existentes que devem ser alterados com o valor do parâmetro que será passado em um momento.
Guardamos isso como
declareparameters.xml
.Com isso, agora podemos gerar um pacote parametrizado, em nossa caixa de teste, a partir do qual podemos implantar, usando esta linha de comando (isso é para 'imagem' de todo um IIS no qual nosso SiteA está presente):
Se o site estiver em um servidor diferente, substitua 'localhost' pelo nome desse servidor. O serviço Web Deploy Agent deve estar em execução na máquina de destino para que isso funcione.
Agora, declaramos um arquivo xml de parâmetros que realmente fornecerá valores de parâmetros para uma implantação em um servidor ativo:
E guardamos isso como
(no meu caso, tenho dois servidores de destino, cada um obtém seus próprios parâmetros xml com um nome de arquivo diferente e IPs ligeiramente diferentes em cada um).
Por fim, podemos executar a implantação parametrizada no (s) servidor (es) de destino com esta linha de comando:
Portanto, agora podemos alterar os IPs da ligação Http ou Https e, se os originais forem suficientemente diferentes, podemos parametrizar qualquer número de ligações individuais que possam ser necessárias para esse site.
Até o momento, existe uma desvantagem - portanto, qualquer resposta alternativa apreciada - a configuração do SSL é copiada da máquina de origem no pacote - o que significa que, para que a configuração do SSL no site ativo esteja correta na implantação, tanto a máquina de teste quanto os servidores ativos devem usar exatamente os mesmos certificados SSL.
O que seria ótimo é se a caixa de teste pudesse usar um certificado interno ou autoassinado para verificação de integridade e, em seguida, aplicar o certificado SSL real na implantação real - novamente, parametrizado a partir dos arquivos XML.
fonte
Você pode substituir o número da porta adicionando o comutador da linha de comandos -replace
msdeploy -verb: sync -source: WebServer, computerName = localhost -dest: package = "machinename.zip" - substitua: objectName = ligação, targetAttributeName = bindingInformation, correspondência =: 443:, substitua =: 445:
fonte