Добавьте * новую* привязку назначения для сайта к пакету с помощью MSDeploy

StackOverflow https://stackoverflow.com/questions/2280817

Вопрос

Я использую промежуточную модель с MSDeploy для развертывания пары наших сайтов на веб-ферме.Сайты настраиваются в IIS только в промежуточных блоках, а затем MSDeploy используется для создания целевых веб-серверов с нуля.

Промежуточное окно использует свои собственные привязки (т. Е. Без записей заголовка, разных IP-адресов / портов и без заголовков хостов) для сайтов, которые будут работать в режиме реального времени.Когда я их развертываю, у меня сначала есть xml-файл, используемый для подготовки параметризованного пакета (с использованием -declareParamFile switch), который объявляет параметры следующим образом:

<parameters>
  <parameter name="site1">
    <parameterEntry kind="DestinationBinding" scope="Site1" match=":17000:" />
  </parameter>
</parameters>

Итак, в приведенном выше XML-файле вы можете видеть, что промежуточный сайт размещен на порту 17000 в качестве match атрибут устанавливается таким образом, чтобы соответствовать привязке, которая имеет это значение.

Когда я затем развертываю на каждом действующем сайте, я использую разные параметры XML, которые указывают правильный заголовок хоста и IP-адрес для этой машины - я применяю это с помощью параметра -setParamFile.Вот пример одного из них.

<parameters>
  <setParameter name="site1" value="[ip_addr]:[port]:[host_header]"/>
</parameters>

Итак, поскольку исходный параметр объявлен соответствующим одной из известных привязок, я могу заменить эту привязку на то, что я на самом деле хочу, чтобы это было на каждом действующем сервере.

Что я хочу сделать сейчас, так это развернуть сайт и добавить новое привязки назначения к нему, которые включают различные TLD, которые у нас есть, т. е.site.com , site.co.uk, site.ca и т.д., все привязаны к одному и тому же IP-адресу и порту.

Причинами для желания сделать это являются:

  • У нас есть новый сайт, который мы хотим развернуть, которому потребуется другое имя хоста, но мы не хотим присваивать ему его собственный IP-адрес (здесь IP-адреса заканчиваются!), но пусть он использует IP-адрес, который уже есть у существующего сайта на серверах.
  • Это означает добавление определенных привязок имени хоста к сайту, который уже есть на нем, вместо того, чтобы заставлять его отвечать на любое имя хоста.
  • В настоящее время у нас есть четыре доменных имени, указывающих на IP-адрес с балансировкой нагрузки существующего сайта (.com, .us, .ca, .com.au).На данный момент это работает, потому что веб-серверу наплевать на заголовок host, но когда новый сайт перейдет на тот же IP-адрес, это произойдет, а другие доменные имена больше не будут работать.

Проблема в том, что я не думаю, что существует какой-либо способ добавить такую информацию.Я пробовал добавлять несколько setParameter элементы во втором XML, но это просто приводит к многократной перезаписи привязки, причем последний из них в конечном итоге становится победителем.

Одним из решений для меня является добавление привязок 'placeholder' для каждого из сайтов в промежуточном окне, которые представляют целевые внешние привязки для каждого доменного имени, порта и т. Д;а затем я изменяю два файла параметров, чтобы заменить эти привязки реальными.

Но мне это кажется совершенно неправильным - это было бы моделированием промежуточной коробки для костюм оперативное развертывание;все должно быть наоборот.

Возможно ли это на самом деле Добавить привязки сайта с помощью MSDeploy (если да, то как?), или он поддерживает только замену?

Это было полезно?

Решение

После долгих размышлений выясняется, что нет способа добавить новые привязки, используя операцию DestinationBinding с msdeploy.

Что было бы возможно, так это прикрепить скрипт для выполнения после развертывания, который каждый раз добавляет привязки с использованием appcmd.

Таким образом, первоначальная синхронизация через msdeploy удалит эти привязки (поскольку их нет на промежуточном сервере), но затем скрипт appcmd добавит их снова.

Однако на самом деле это не идеальное решение, поскольку это еще один сценарий, который необходимо поддерживать в актуальном состоянии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top