Ok jadi saya sampai sejauh ini - saya tidak memposting ini sebagai edit untuk pertanyaan, dengan harapan bahwa meskipun ini tampaknya berada di jalur yang benar, mungkin ada cara yang lebih baik daripada apa yang telah saya kerjakan . Figur saya akan membiarkan demokrasi memutuskan!
Dengan menggunakan tautan ini, saya dapat mengetahui format file XML yang harus digunakan dengan setParamFile
saklar untuk msdeploy. Saya juga, di masa lalu, menemukan format untuk XML declareParamFile dengan menggunakan GUI yang tertanam dalam IIS setelah menginstal Web Deployment Tool.
Jadi, diberikan situs yang disebut 'SiteA', dengan dua entri yang mengikat dalam file applicationHost.config sebagai berikut:
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
<binding protocol="https" bindingInformation="*:443:" />
</bindings>
(Yang berarti, secara khusus - alamat IP apa pun pada port 80 dan alamat IP apa pun pada port 443)
Sertifikat aktual yang digunakan tidak disimpan dalam applicationHost.Config, tetapi dalam konfigurasi untuk Http.sys (sesuai dengan artikel ini ). Ketika msdeploy menyiapkan sebuah paket untuk situs tersebut, ia akan menanamkan informasi itu - yang mungkin bukan berkah seperti yang saya sebutkan di bagian akhir.
Langkah pertama adalah mendeklarasikan file parameter xml yang akan kita gunakan untuk parameterkan satu paket untuk server live target:
<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>
Perhatikan nilai atribut 'match =' pada dua entri parameter dalam. Ini memastikan bahwa ikatan yang benar diganti. Ini adalah Regex (seperti yang dijelaskan dalam artikel technet ini ) yang memilih nilai-nilai pengikatan yang ada yang harus diubah dengan nilai parameter yang akan diteruskan dalam sekejap.
Kami menyimpan ini sebagai declareparameters.xml
.
Dengan ini, kami sekarang dapat menghasilkan paket parameter, dari kotak pementasan kami, dari mana kami kemudian dapat menggunakan, menggunakan baris perintah ini (ini untuk 'gambar' seluruh IIS di mana SiteA kami hadir):
msdeploy -verb:sync
-source:WebServer,computerName=localhost
-dest:package="parameterised.zip"
-declareParamFile:declareparameters.xml
Jika situs web berada di server web yang berbeda, ganti 'localhost' dengan nama server web itu. Layanan Agen Penyebaran Web harus dijalankan pada mesin target agar ini berfungsi.
Sekarang, kami mendeklarasikan file parameter xml yang benar-benar akan memberikan nilai parameter untuk penyebaran ke server langsung:
<parameters>
<setParameter name="SiteA-http" value="[fixedIPAddress]:80:"/>
<setParameter name="SiteA-https" value="[fixedIPAddress]:443:"/>
</parameters>
Dan kita simpan itu sebagai
[targetServerName]parameters.xml
(dalam kasus saya, saya memiliki dua server target, sehingga masing-masing mendapatkan parameter sendiri xml dengan nama file yang berbeda, dan masing-masing IP yang sedikit berbeda).
Akhirnya, kita dapat melakukan penyebaran parameterised ke server target dengan baris perintah ini:
msdeploy -verb:sync
-source:package="parameterised.zip"
-dest:WebServer,computerName="[targetServerName]"
-setParamFile=[targetServerName]parameters.xml
Jadi sekarang kita dapat mengubah IP dari Http atau Https Binding dan, jika aslinya cukup berbeda, kita dapat membuat parameter jumlah setiap binding individual yang mungkin diperlukan untuk situs tersebut.
Sejauh ini ini memiliki satu kelemahan - jadi jawaban alternatif apa pun yang dihargai - konfigurasi SSL disalin dari mesin sumber ke dalam paket - yang berarti bahwa agar konfigurasi SSL di situs langsung menjadi benar pada penyebaran, baik mesin staging dan server langsung harus menggunakan sertifikat SSL yang persis sama.
Apa yang akan hebat adalah jika kotak pementasan dapat menggunakan sertifikat yang ditandatangani sendiri atau internal untuk pemeriksaan kewarasan, dan kemudian minta sertifikat SSL nyata diterapkan pada penyebaran yang sebenarnya - sekali lagi, parameter dari file XML.