FIM 2010 R2 SP1 с использованием VMM Service Templates
Долгое время мне было лень готовить скрипты для автоматического разворачивания FIM, но тут я занялся VMM’ом и оправдания кончились. Посему, приступим.
Нам потребуется:
-
VMM с минимальными настройками;
-
2 sysprep образа Windows Server 2012 R2 (на виртуальных машинах первого поколения), один с sysprep SQL сервером, один голый (но с .NET FX 3.5);
-
Распакованные дистрибутивы Sharepoint Foundation 2010 SP2, и FIM 2010 R2 SP1 на сетевой шаре.
Как делать SQL разворачивание я расскажу в следующем посте, на данный момент сфокусируемся на FIM’е и VMM’е. Перед тем как приступить создайте на Library сервере VMM 2 папки FIM 2010 R2 и Sharepont Foindation 2010 SP2, в них создайте подпапки Synchronization_Service.cr, Service_Portal.cr для FIM и Install.cr, Configure.cr для Sharepoint.
Потом мы положим в них скрипты.
-
Создаем 2х тировый шаблон сервиса, даем ему имя и версию;
-
Выбираем в качестве машины первого тира шаблон машины с Sysprep SQL, для машины второго типа выбираем шаблон машины без SQL;
-
Настраиваем железо под свои нужды;
-
Настраиваем ОС под свои нужды, в качестве имени машины первого тира указываем @FirstTier@, и @SecondTier@ для второго тира (желательно указать все роли-зависимости для Sharepoint Foundation в настройках ОС машины второго тира);
-
Для машины первого тира указываем развертывание SQL из sysprep’а;
-
Для машины первого тира создаем пункт установки приложения, даем ему имя и заполняем остальные поля следующим образом;
- На этом настройка машины первого тира закончена. И мы приступаем к настройке машины второго тира. Для неё не нужно настраивать раздел SQL Server Configuration, но раздел Application Configuration настроить сложнее;
- Создаем скрипты для разворачивания;
Synchronization_Service.cr Install.cmd:
```net start sqlserveragent sc config sqlserveragent start= auto (Установка параметра запуск на “Автоматический” и запуск сервиса “SQL Agent”) msiexec /q /i “путь\Synchronization Service.msi” ACCEPT_EULA=1 /l*v c:NameOfLogFile1.txt STORESERVER=%1 SQLDB=”FIMSynchronization” SERVICEACCOUNT=”сервис_аккаунт” SERVICEPASSWORD=”!Q2w3e4r” FIREWALL_CONF=1
Service_Portal.cr Install.cmd: (аккаунты сервиса и агента не должны совпадать)
```msiexec /q /i "путь\Service and Portal.msi" ACCEPT_EULA=1 ADDLOCAL=CommonServices,WebPortals SQMOPTINSETTING=0 SQLSERVER_SERVER=%1 SQLSERVER_DATABASE=FIMService EXISTINGDATABASE=0 MAIL_SERVER=ex.demo.local MAIL_SERVER_IS_EXCHANGE=1 POLL_EXCHANGE_ENABLED=1 SERVICE_ACCOUNT_NAME="сервис_аккаунт" SERVICE_ACCOUNT_PASSWORD="!Q2w3e4r" SERVICE_ACCOUNT_DOMAIN=demo.local SERVICE_ACCOUNT_EMAIL=fim@demo.local SYNCHRONIZATION_SERVER=%1 SYNCHRONIZATION_SERVER_ACCOUNT="demo\аккаунт_менеджмент_агента" SERVICEADDRESS=%2 SHAREPOINT_URL=http://%2 REGISTRATION_PORTAL_URL=https://pwd.demo.local FIREWALL_CONF=1 SHAREPOINTUSERS_CONF=1 REQUIRE_REGISTRATION_INFO=1 /L*v C:fimservicelog.txt
SPF_Install.cr spf_install.cmd: (частично раскрыто в другом посте http://4c74356b41.com/post189)
```путь\PrerequisiteInstaller.exe -unattended путь\setup.exe /config путь\Files\Setup\FarmSilentconfig.xml
Пример Config.xml файла:
```<Configuration>
<Package Id="sts">
<Setting Id="SETUPTYPE" Value="CLEAN_INSTALL"/>
</Package>
<Logging Type="verbose" Path="%temp%" Template="Microsoft SharePoint Foundation 2010 Setup *.log"/>
<Setting Id="SERVERROLE" Value="APPLICATION"/>
<Setting Id="UsingUIInstallMode" Value="0"/>
<Display Level="none" CompletionNotice="no" AcceptEula="Yes" NoCancel="No" SuppressModal="Yes"/>
<Setting Id="SETUP_REBOOT" Value="Never" />
</Configuration>```
SPF\_Configure.cr spf\_configure.cmd:
```@echo off
@powershell -Version 2 -NonInteractive -NoProfile -ExecutionPolicy Unrestricted -Command "& {.spf_configure.ps1 %1 %2; exit $LastExitCode }"
exit /B %errorlevel%
SPF_Configure.cr spf_configure.ps1:
```# Pass Variables # $1=$args[0] $2=$args[1]
Import SP powershell module
Add-PsSnapin Microsoft.SharePoint.PowerShell
Credentials
$username = “demo\пользователь” (данный параметр, как и любой другой в скрипте, тоже можно передавать динамически, для этого необходимо будет сделать еще одну переменную, и инициализировать её в скрипте) $password = “!Q2w3e4r” $credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username,(ConvertTo-SecureString -String $password -AsPlainText -Force)
Configure SP database, services and central site
$passphrase = convertto-securestring “!Q2w3e4r” -asplaintext -force New-SPConfigurationDatabase -DatabaseName SP_CFG -DatabaseServer $1 -AdministrationContentDatabaseName SP_AC -Passphrase $passphrase -FarmCredentials $credential Install-SPHelpCollection -All Initialize-SPResourceSecurity Install-SPService Install-SPFeature -AllExistingFeatures New-SPCentralAdministration -Port 1026 -WindowsAuthProvider “NTLM” Install-SPApplicationContent
Create Web App and Site Collection
New-SPWebApplication -ApplicationPool FimPortal -Name FimPortal -ApplicationPoolAccount demoпользователь New-SPSite -URL http://$2/ -OwnerAlias demoпользователь -Name FimPortal -Template STS#1 ```
- Сохраняем. Все готово.
Если использовать немного фантазии можно и NLB настроить для порталов сброса пароля и ферму Sharepoint 😉