IIS7-Webデプロイメントツール-SetParam / SetParamFileでhttpおよびhttpsバインディング+証明書を設定


8

現在、MS Web Deployment Toolを使用して、ライブWebサイトといくつかのWebServicesをステージングボックスから2つのライブサーバーに同期しています。

ステージングボックスは、ポート17000上の任意のIPでサイトをホストしますが、2つのライブサーバーは負荷分散されており、それぞれに異なるIPがあります。

現在、同期操作を使用し、次のようにDestinationBindingパラメータを指定して、展開用に2つの個別のパッケージ(各マシンに1つ)を生成しています。

msdeploy -verb:sync 
  -source:WebServer,computerName=localhost
  -dest:package="machinename.zip"
  -setParam:type="DestinationBinding",scope="SiteName",value="ip_address:port:".

(読みやすくするために複数行に分割してください!)

これを2回実行し、2つのマシンのそれぞれに異なるターゲットファイル名とIPアドレスを指定します。展開に関しては、各パッケージからそれぞれのライブサイトに同期するだけです。

私は知っています、私は知っています-1つのパラメーター化されたパッケージを生成し、おそらく2つのサーバーのそれぞれにSetParamFileスイッチを使用することでそれを行うことができるはずです-私が望んでいると信じていますが、これを行うためのドキュメントは率直に言って、存在した。

次に、このサイトのHTTP バインディング HTTPSバインディングの両方を構成してデプロイする必要があります。使用するssl証明書も含まれます。

ステージングボックスのサイトにSSLバインディングを追加しました-開発証明書を使用します(置換する必要があります-またはステージングボックスでライブ証明書を使用する必要がありますか?) httpとhttpsの両方のエントリでターゲットIPを置き換える方法。

上記の-setParamのDestinationBinding値で複数のバインディングと証明書情報を指定できないようですが、これを行う方法を誰かが知っていますか?

どんな助けも大歓迎です。


1
多分あなたはタグとしてmsdeplyを追加する必要があります。msdeployの数が多いため、stackoverflow.comにもジャンプする可能性があります
MikeJ

今、良い点があります:)
Andras Zoltan

ええ-私はStackOverflowを最初に考えました。msdeployの低レベルの操作は、開発者よりも技術サポート/管理者に役立つ可能性が高いと考えました。私がここにどこにも行かない場合は、おそらくあなたが提案したように、おそらく私はこの質問を引退し、代わりにそこに投稿します。私は開発者であり、アナリストではないことを常に主張することができます。私がそれを知る必要がある場合、他の開発者もおそらくそうするでしょう!
Andras Zoltan

回答:


7

わかりましたので、ここまで来ました-これは質問の編集として投稿していません。チャンスはありますが、これは正しい軌道にあるように見えますが、私が取り組んでいる方法よりも良い方法があるかもしれません。 。図民主主義に決めさせよう!

使い方このリンクを私はして使用する必要がありますXMLファイルの形式を把握することができたsetParamFile場合msdeployためのスイッチを。また、過去に、Web配置ツールをインストールした後、IIS内の組み込みGUIを使用して、declareParamFile XMLの形式を理解していました。

したがって、次のようにapplicationHost.configファイルに2つのバインディングエントリを含む「SiteA」というサイトがあるとします。

<bindings>
  <binding protocol="http" bindingInformation="*:80:" />
  <binding protocol="https" bindingInformation="*:443:" />
</bindings>

(具体的には、ポート80の任意のIPアドレスとポート443の任意のIPアドレス)

使用されている実際の証明書はapplicationHost.Configではなく、Http.sysの構成に保存されます(この記事によると)。msdeployがサイトのパッケージを準備するときに、その情報が埋め込まれます。これは、最後に述べたように、それは祝福ではないかもしれません。

最初のステップは、ターゲットライブサーバーの単一パッケージをパラメーター化するために使用するパラメーターxmlファイルを宣言することです。

<parameters>
  <!-- declare parameter for Http Binding -->
  <parameter name="SiteA-http" description="SiteA Http Binding">
    <parameterEntry kind="DestinationBinding" scope="SiteA" match=":80:" />
  </parameter>
  <!-- declare parameter for Https Binding -->
  <parameter name="SiteA-https" description="SiteA Https Binding">
    <parameterEntry kind="DestinationBinding" scope="SiteA" match=":443:" />
  </parameter>
</parameters>

2つの内部パラメーターエントリの 'match ='属性値に注意してください。これにより、正しいバインディングが確実に置き換えられます。これは、このtechnet記事で説明されているように、すぐに渡されるパラメーター値で変更される既存のバインディング値を選択するRegex です。

これをとして保存しdeclareparameters.xmlます。

これで、ステージングボックスからパラメーター化されたパッケージを生成できます。このパッケージから、次のコマンドラインを使用して展開できます(これは、SiteAが存在するIIS全体を「イメージ」することです)。

msdeploy -verb:sync 
  -source:WebServer,computerName=localhost
  -dest:package="parameterised.zip"
  -declareParamFile:declareparameters.xml

Webサイトが別のWebサーバー上にある場合は、「localhost」をそのWebサーバーの名前に置き換えます。これを機能させるには、Web配置エージェントサービスがターゲットマシンで実行されている必要があります。

ここで、実際のサーバーへのデプロイメントのパラメーター値を実際に提供するパラメーターxmlファイルを宣言します。

<parameters>
  <setParameter name="SiteA-http" value="[fixedIPAddress]:80:"/>
  <setParameter name="SiteA-https" value="[fixedIPAddress]:443:"/>
</parameters>

そして、それを

[targetServerName]parameters.xml

(私の場合、2つのターゲットサーバーがあるため、それぞれが独自のパラメーターxmlを取得し、それぞれに異なるファイル名を付け、それぞれにわずかに異なるIPを設定します)。

最後に、次のコマンドラインを使用して、ターゲットサーバーへのパラメーター化された展開を実行できます。

msdeploy -verb:sync 
  -source:package="parameterised.zip"
  -dest:WebServer,computerName="[targetServerName]"
  -setParamFile=[targetServerName]parameters.xml

これで、HttpまたはHttpsバインディングのいずれかのIPを変更できるようになりました。元のIPが十分に異なる場合は、そのサイトに必要な可能性のある個々のバインディングをいくつでもパラメーター化できます。

これには、これまでのところ1つの欠点があります。代替の回答を歓迎します。SSL構成はソースマシンからパッケージにコピーされます。つまり、ライブサイトのSSL構成がステージングマシンとライブサーバーは、まったく同じSSL証明書を使用する必要があります。

ステージングボックスが健全性チェックに自己署名証明書または内部証明書を使用し、実際のSSL証明書を実際の展開に適用することができれば(XMLファイルからパラメーター化されます)、すばらしいと思います。


これはmsdeployツールの制限と思われます。唯一の解決策は、msdeployが実行できる追加のiisスクリプトを作成することです。このスクリプトは、SSL証明書を使用して、追加のバインディングをラップします。これは信じられないほどの恥です。
Andras Zoltan

0

-replaceコマンドラインスイッチを追加して、ポート番号を置き換えることができます。

msdeploy -verb:sync -source:WebServer、computerName = localhost -dest:package = "machinename.zip" -replace:objectName = binding、targetAttributeName = bindingInformation、match =:443:、replace =:445:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.