わかりましたので、ここまで来ました-これは質問の編集として投稿していません。チャンスはありますが、これは正しい軌道にあるように見えますが、私が取り組んでいる方法よりも良い方法があるかもしれません。 。図民主主義に決めさせよう!
使い方このリンクを私はして使用する必要があります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ファイルからパラメーター化されます)、すばらしいと思います。