Занимался недавно вопросом разворачивания приложения на только что установленном Windows Server скриптами, чтобы исключить человеческий фактор и автоматизировать процесс.
Здесь хочу рассказать о шагах необходимых для этого, поделиться набором ссылок и скриптов.
Вводные:
- У нас есть Windows Server 2008r2-2012;
- Приложение – это Windows workflow приложение, работающее в IIS и использующее appfabrichosting.
- Писать будем на Powershell.
Шаг 1- Windows Features.
По умолчанию, Windows Server не присваивает никаких ролей или фичей при установке. Перед развертыванием приложения необходимо узнать список нужных фичей и установить их.
Весь код, необходимый для этого шага, собран в файл PreRequisites_InstallWindowsFeatures.ps1
Краткое содержание:
- Импортируем модуль с скриптами
- Import-Module ServerManager
- Получаем список фичей, возможных для установки (в них есть отметка: установлена фича или нет)
- Get-WindowsFeature
- Ставим фичу
- Install-WindowsFeature -Name $Feature -Source $windowsDistribLocal
Шаг 2- установка SQL Server- опционально
Для приложений иногда надо поставить MS SQL Server.
Все скрипты собраны в файле SQLServer_Install.ps1
Краткое содержание:
- Проверить, был ли SQL Server установлен на машине
- msdn.microsoft.com/en-us/library/ms144259.aspxhttp://blogs.msdn.com/b/buckwoody/archive/2009/03/11/find-those-rogue-sql-servers-in-your-enterprise-with-powershell.aspx
- Получение списка установленных компонентов SQLSERVER. Ничего умнее, чем «запросить через WMI» в интернете не найдено
- $selectSQLFeaturesQuery=«SELECT * FROM Win32_Product WHERE Name LIKE '%SQL%'»
- $SQLFeatures = gwmi -query $selectSQLFeaturesQuery -ErrorAction Stop
- SQL Server нужен .NET 3.5 для некоторых компонент. Если его нет, надо поставить — это аналогично установке Install-WindowsFeature
- Инсталляция самого SQL Server. SQL Server можно поставить без интерфейса. Для этого нужно запустить инсталятор локально. Дойти до шага «Ready To Install», и там внизу будет путь, по которому будет находиться сгенерированный файл на основе наших текущих настроек. Вот этот файл скопировать и при запуске инсталлятора из скрипта указать к нему путь.
- Setup.exe /ConfigurationFile= $SQLServerConfigFileFullPath
Шаг 3. Установка Web platform installer/Web deploy.
Все скрипты в PreRequisits_MSI.ps1
В целом, это просто запуск msi из консоли и ничего сложного. WebDeploy нужен для обновления приложений, а WebPlatformInstaller — для установки компонентов.
Шаг 4. Установка AppFabric
В AppFabric для Windows Server есть 2 части: Hosting, Caching. Для нашего случая был нужен только hosting. AppFabricиспользует 2 базы данных: InstanceStore/MonitoringStore
- Первый шаг — добавление строк подключения к InstanceStore/MonitoringStore в IIS. technet.microsoft.com/en-us/library/cc753034(v=ws.10).aspx;
- Установить инсталлятор AppFabric. Это тоже msi, но его можно более тонко настроить, чтобы он установил только нужные фичи ;
- Сконфигурировать настройки AppFabric в IIS. Связать строки подключения баз данных и настройки InstanceStore/MonitoringStore. AppFabric_Configure.ps1
Сами базы данных нужно еще и настроить, если это не было сделано ранее.
Делается это скриптом AppFabric_InitializeDB.ps1
Стартовая точка всех скриптов:
Prerequisites_MainLocal.ps1
Что ставить, что не ставить, по каким путям находятся инсталляторы – всё это конфигурируется в файле: Prerequisites_Main.config
Все списки WindowsFeature, SqlComponents конфигурируются в текстовых файлах.
В результате
В итоге, мы получаем Windows Server со всеми необходимыми установленными WindowsFeatures. Если нужно, то и с установленным SQL Server. Настроенным AppFabric. Все что касается настройки сервера, сделано. Осталось установить сами приложения.
Ограничения скриптов
Эти скрипты лучше запускать из-под администратора сервера, все-таки установка Windows фичей. Настройки SQL Server для AppFabric требуют не менее, чем SA. Поэтому тоже нужны права максимальные.
Автор: SychevIgor