Cloud Search Hybrid Preview - How to
In een eerdere blog heb ik een kleine introductie gegeven van Cloud Search Hybrid Preview, die kunt u hier vinden. In deze blog ga ik verder in op de benodigde zaken en technische stappen, voor het opzetten van een testomgeving.
Eisen en voorbereidingen
Cloud Search Hybrid Preview werkt op dit moment alleen op SharePoint 2013 Farms met de August 2015 PU, en SharePoint 2016 Preview. Mijn advies zou zijn, om voor deze test gebruik te maken van een schone VM, met èèn van van beide versies (gelijk een mooie aanleiding om SharePoint 2016 te zien.
Meer informatie en de aankondiging van de SharePoint 2016 Preview is hier te vinden: https://blogs.office.com/2015/08/24/announcing-availability-of-sharepoint-server-2016-it-preview-and-cloud-hybrid-search.
De Preview zelf, is te downloaden via: http://www.microsoft.com/en-us/download/details.aspx?id=48712. Sinds kort is de SharePoint 2016 Preview ook beschikbaar via Microsoft Azure als Virtual Machine image, een goede mogelijkheid om snel de nieuwe functionaliteit te kunnen testen: http://blogs.technet.com/b/wbaer/archive/2015/08/27/sharepoint-server-2016-it-preview-image-in-windows-azure-platform-gallery.aspx.
Voor het koppelen met een Office 365 tenant, valt het ook aan te bevelen om een schone, Office 365 E3 Trial aan te vragen (een maand geldig), via https://products.office.com/en/business/office-365-enterprise-e3-business-software > Free Trial. Dit is snel gedaan, en gratis, zonder benodigde opgave van creditcard.
Zoekresultaten binnen SharePoint Online, worden uiteraard Security Trimmed; de ingelogde gebruiker in Office 365 ziet nog steeds alleen de documenten en content in de resultaten, waar hij of zij rechten op had op de On-Premises omgeving. Onder andere dat gegeven, maakt dat Gebruikers Synchronisatie en Federatie een noodzaak is. Dat proces is inmiddels erg goed beschreven, zie https://blogs.office.com/2014/05/13/choosing-a-sign-in-model-for-office-365 en https://support.office.com/en-gb/article/Understanding-Office-365-identity-and-Azure-Active-Directory-06a189e7-5ec6-4af2-94bf-a22ea225a7a9, waarbij we dus uitgaan van een "Federated Identity". Kortom, het opzetten en configureren van Azure AD Connect (de opvolger van DirSync en Azure AD Sync) en AD Federation Services is een vereiste.
Overigens meldt de Preview documentatie nog wel een limiet van maximaal 2 miljoen zoekresultaten in de index, welke vanuit SharePoint On-Premises doorgegeven kunnen worden naar Online. Mijn verwachting is dat deze limiet later verhoogd zal worden.
Technische stappen
Als je bovenstaande allemaal hebt klaarstaan, kun je aan de gang.
Allereerst is het nodig, om je in te schrijven op het Cloud Search Hybrid Preview Program, via Microsoft Connect: https://connect.microsoft.com/office/program8647.
Na inloggen met je Microsoft Account, kom je op de betreffende pagina terecht, waar het mogelijk is om de preview documentatie te downloaden. Ook is het op dit moment mogelijk, om twee Powershell scripts te downloaden, waarmee je een lokale Cloud Search Service Application maakt, en de SharePoint Farm kan "koppelen" met een Office 365 tenant. Deze gaan we gebruiken om de koppeling tussen On-Premises en Online te maken.
Hieronder volgen de (relatief eenvoudige) stappen om deze PowerShell scripts uit te voeren. Microsoft zal deze stappen waarschijnlijk in een later stadium verwerken in een "Scenario Picker" Wizard, aan te roepen via de GUI in Central Administration. Maar voor nu is dit de enige manier om de functionaliteit te kunnen testen.
Alleerst het "CreateCloudSSA.ps1" Script. dit script dient uitgevoerd te worden op een enkele SharePoint server in de Farm, vanuit een SharePoint 2013/16 Management Shell, heeft de volgende parameters:
- -SearchServerName | De naam van de SharePoint server, waar initieel de Search componenten op worden gestart.
- -SearchServiceAccount | Het Service Account, waaronder de Cloud Search Service Application zal draaien.
- -SearchServiceAppName | de naam van de Cloud Search Service Application
- -DatabaseServerName | De Database serverinstance, waarop de Service Application databases worden aangemaakt.
Het script voert vervolgens de volgende zaken uit:
- Een check op het bestaan van het Search Service Account binnen het Active Directory Domein
- Als het Search Service Account nog niet als Managed Account in SharePoint geregistreerd is, wordt dit gedaan (met een prompt voor het invoeren van het bijbehorende wachtwoord).
- Het aanmaken van een nieuwe Services Application Pool, waarop de Cloud Search Service Application wordt aangemaakt.
- Het aanmaken van de Cloud Search Service Application, het bijwerken van de Search Topologie daarvan, en het maken van de bijbehorende Service Application Proxy
Na het uitvoeren van het script, krijg je de volgende output:
Het resultaat is niet perse iets, wat je ook in Productie omgevingen zou willen hebben. Met name de naamgeving vanuit het script, database namen, en de standaard Search Topologie, zijn niet optimaal. Daar gaat het in deze dan ook niet verder om, aangezien dit natuurlijk echt een methode vanuit de preview is, gemaakt om het in elk geval "te laten werken".
Als tweede stap, volgt het "OnBoard-HybridSearch.ps1" script. Dit script heeft de volgende parameters:
- -SearchServerName | De Root sitecollectie van de betreffende SharePoint Online tenant, in de vorm "https://<tenant>.sharepoint.com".
- -HybridSSAId | de GUID van de Cloud Search Service Application. deze parameter is optioneel, de bedoeling is deze te gebruiken wanneer je meerdere Search Service Applications hebt, om een specifieke aan te geven voor de koppeling. Wanneer je deze weglaat, pakt het script in feite de bestaande Service Application (ervan uitgaande dat dat de enige is) om deze om te bouwen voor Hybride gebruik.
Het uitvoeren gebeurd weer vanaf een enkele SharePoint server in het farm, waarbij de Azure AD Powershell module (met als voorwaarde de Microsoft Online Sign in assistent) geïnstalleerd moet zijn. Zie voor dit laatste: https://msdn.microsoft.com/en-us/library/azure/jj151815.aspx#bkmk_installmodule.
Bij mij gaf de laatste parameter echter altijd een foutmelding, wanneer ik de correcte GUID van mijn Cloud Search Service Application aangaf. Omdat ik niet de scripts van Microsoft wil aanpassen om hier omheen te werken, laat ik de parameter weg:
Dit Script voert het volgende uit:
- Een check op het bestaan van de Azure AD Powershell module en MS Sign in assistent
- Een aantal registry sleutels worden gevuld met algemene informatie
- Een Azure Control Services (ACS) Service Application wordt toegevoegd aan de farm
- Een SharePoint Online Application Principal Management Service Application Proxy wordt toegevoegd aan de Farm
- Er wordt een trust opgebouwd tussen de On-Premises farm, en SharePoint Online (door middel van een aantal SPNs, welke uitgewisseld worden)
Halverwege vul je de gegevens in van een Global Admin account binnen je Office 365 tenant:
Na het uitvoeren van het script, krijg je de volgende output:
Na het uitvoeren van het script, kun je in de On-Premises Cloud Search Service Application, een aantal Contentsources aanmaken, om bijvoorbeeld SharePoint sites, Fileshare content, of publieke websites te crawlen. Het crawlen daarvan duurde (bij mij in elk geval) iets langer dan normaal, maar op een gegeven moment zal deze klaar zijn, en zou de gecrawlde content direct zichtbaar moeten zijn binnen het Office 365 Search center (standaard te bereiken via https://<tenant>.sharepoint.com/search).
In onderstaande screenshot is gebruik gemaakt van de "isexternalcontent" Managed property. Door daar een 1 of 0 aan mee te geven, kan specifiek op Office 365 (0) of On-Premises content (1) worden gezocht.
In feite is de koppeling dan gelegd, met iedere nieuwe Search crawl in de Cloud Search Service Application, wordt de bijgewerkte On-Premises content, ook vrijwel direct zichtbaar in SharePoint Online. Waarbij je uiteraard wil ingelogd dient te zijn binnen Office 365 met een gefedereerde gebruiker, met rechten op de betreffende content.