Automatiser le déploiement d'environnements SharePoint 2010/2013 grâce à PoweShell
1. C05- Automatiser vos déploiements
d’environnements SharePoint 2010/2013
grâce à PowerShell
2. Vos hôtes
Franck Cornu
Consultant SharePoint depuis 3 ans
• Analyse et architecture d’information
• Développement
• Infrastructure
Benjamin Guinebertière
Evangéliste technique Windows Azure
• Division plateforme & Ecosystème
• Microsoft France
• @benjguin
franck.cornu@gsoft-
group.com
3. Agenda
Qui est concerné?
Quoi automatiser et pourquoi?
PowerShell avec SharePoint, par où commencer?
L'automatisation à travers un projet SharePoint de A à Z
Conclusion
4. A qui s’adresse cette
session?
Administrateurs SharePoint
Automatiser l’installation et la configuration des
environnements SharePoint
Automatiser les tâches d’administration courantes
Développeurs SharePoint
Automatiser les déploiements et la configuration des
développements personnalisés
Décideurs TI
Cibler les éléments à automatiser
Évaluez les gains et avantages
5. Pourquoi automatiser?
Constat sur les projets Ce que vous gagnez à automatiser
La plupart des étapes de mise en place
d’un projet SharePoint sont connues et
inévitables
Ces tâches sont répétitives, prennent du
temps et n'apportent pas de valeur
directe au projet
Raison de plus pour laisser un script s’en
charger et se concentrer sur des choses plus
importantes
Toute opération manuelle peut amener
des erreurs et des différences entre les
environnements
Ici pas de surprise, un script ne se trompe
jamais. De même, le diagnostic des erreurs est
plus avancé.
Les tâches manuelles sont souvent non
documentées et donc peu traçable et
encore moins reproduisibles
Les fichiers de configuration et le script lui-
même vous indique au minimum ce qui est
réalisé et comment.
Les entreprises ou prestataires de
services sont rétissants à automatiser car
cela prend trop de temps.
Automatiser prend du temps, mais vous en fait
gagner énormément par la suite. De plus vous,
construisez votre expertise SharePoint en
bâtissant vos outils et en les réutilisant chez
vous ou vos clients.
6. Étapes de mise en place
courantes d’une ferme
SharePoint
Sur un projet SharePoint typique (quel que soit la version)
Cinq macro étapes (en général)
Multipliées par le nombre d’environnement à déployer….
Et les tâches d’administration qui s’en suivent….
8. Un mot sur PowerShell
Langage de script
Différent de batch
Base en programmation orientée objet utile !
Facilite les tâches d’administration dans les environnements MS
Windows
SharePoint
Exchange
….
Basé sur le Framework .Net
Tout est objet sous PowerShell
Commandes prédéfinies « Cmdlets »
Commandes prédéfinies
Manipulent ou retournent des objets et non du texte
Formalisme « Verbe-Nom » (Exemple « Get-SPSite »)
Regroupées dans un « Snapin »
Pipelining possible entre cmdlets via le caractère « |»
Possibilité de créer vos propres Cmdlets et Snapins avec Visual Studio
9. Un mot sur PowerShell
Fichiers de script
Paramétrables
Peuvent être chainés après redémarrage (one click install)
$args
« Nombre d’arguments + $args.Count »
Param($arg1, $arg2)
« Argument 1: + $arg1 »
« Argument 2: + $arg2 »
$AdminKey = "HKLM:"
$RunOnceKey = $AdminKey +
"SoftwareMicrosoftWindowsCurrentVersionRunOnce"
Set-Itemproperty $RunOnceKey "MyScript"
('C:WindowsSystem32WindowsPowerShellv1.0Powershell.exe -
ExecutionPolicy Unrestricted -File <ScriptPath> + <Parameters>
10. PowerShell avec
SharePoint
Utilisation des cmdlets SharePoint
Ajout du Snapin PowerShell pour SharePoint
OU avec le raccourci SharePoint
Exemple d’utilisation de cmdlet SharePoint
Syntaxe des objets SharePoint (SP<QuelqueChose>)
SPSite, SPWeb, SPFarm,….
Accès aux objets .Net SharePoint autrement que par Cmdlets
$site = Get-SPSite | Where-Object {$_.Url -eq "http://sp2013"}
Add-PSSnapin « Microsoft.SharePoint.PowerShell »
[void][Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$site = New-Object Microsoft.SharePoint.SPSite(“http://sp2013”)
11. PowerShell avec
SharePoint
Cmdlets restreintes si vous travaillez avec SharePoint Online!
Présentation de SharePoint Online Management Shell
Autoriser l’éxecution de scripts PowerShell
Droit requis
On Premise
Membre du groupe SharePoint_Shell_Access ou WSS_Admin_WPG
securityadmin sur l’instance SQL
db_owner sur les base de données à manipuler
Online
Utilisateur « Global admnistrator »
Set-ExecutionPolicy RemoteSigned
Add-SPShellAdmin –UserName « DOMAINuser »
Connect-SPOService -Url https://contoso-admin.sharepoint.com -
credential admin@contoso.com
12. PowerShell avec
SharePoint
Outil pour créer vos scripts
NotePad ++
PowerShell ISE
Par défaut sur Windows Server 2012
Feature à installer sur Windows
Server 2008 R2
Debug + Intellisense (version 3.0)
PowerGUI
Intellisense + Debug
Plugin Visual Studio
Hack pour Extension VS 2012
14. Installation de l’OS
Physiques ou VMs (recommandé)
Liste des version de Windows Server compatibles:
Pour SharePoint 2010
(Attention Windows Server 2012 non pris en charge)
Pour SharePoint 2013
Sur chacun des serveurs de votre ferme
En local ou dans le cloud!
Possibilité de scripter le déploiement de vos machines virtuelles grâce à
PowerShell et Windows Azure!
Création des comptes de services SharePoint
Au minimum (identiques selon la version)
Compte de setup (securityadmin et dbcreator + admin local)
Compte de ferme (Compte d’accès à la base de données)
Compte du pool d’applications IIS
Services
Applications web
Compte du service de recherche
Compte d’accès au contenu (Compte de crawl)
…
1-Installation des
serveurs
16. Continuum SharePoint
avec le cloud
Contrôle
OptimisationduCoût
SharePoint (à demeure)
• SharePoint
Proposition de valeur :
• Contrôle complet
• matériel (taille/échelle)
• Contrôle de HA/DR/taille
Proposition de valeur :
• 100% des API
• Migration simple des
personnalisations existantes
• Contrôle de HA/DR/taille
SharePoint (IaaS)
• Hosted SharePoint
Proposition de valeur :
• HA, tolérance aux pannes auto
• Montée en charge sans heurts
• Self-provisioning, mgmt @ gde échelle
• SharePoint Service
Office 365 (SaaS)
17. Vue d’ensemble
de Windows Azure
Windows Azure
Services
web apps
web sites
cloud apps
cloud services
Apps existantes
virtual machines
19. Installation automatisée
Windows Azure Training Kit
Labs
Exemple de script
http://aka.ms/azure-ps-infraSP
Etapes:
Création VM depuis image Windows Server 2012
Installation et configuration Active Directory
Création 2 VM depuis image Windows Server 2012
Intégration dans le domaine
Création 2 VM depuis image SQL Server 2012
Intégration dans le domaine
Ajout du rôle Web dans les 2 VM WindowsServer 2012
21. Gestion des logs
Libraries .Net
Log4net (Recommandé)
Tracer les sorties textes, erreurs de commandes à l’intérieur d’un bloc
d’instructions ou un script dans un fichier texte
Start/Stop-Transcript
Dans le journal d’événements Windows
New-EventLog/Write-EventLog
Pratiques générales
[void][Reflection.Assembly]::LoadFrom(".Log4Net.dll")
$Global:Logger = [log4net.LogManager]::GetLogger("LogPowerShell")
$Global:Logger.Info("Logging system ready")
Start-Transcript Log.rtf
< Bloc d'instructions >
Stop-Transcript
New-EventLog -LogName SharePoint -Source MyScript
Write-EventLog -LogName SharePoint -Source MyScript -Message "Les
logs, c'est cool!" -EventId 0 -EntryType information
22. Stratégies de développement
Fichier XML de configuration + fonction PowerShell associée
Dans SharePoint, la plupart des notions sont hiérarchiques Get-
Content
Pratiques générales
<Sites>
<Site>
<Webs>
<Web name=“test”>
</Web>
</Webs>
</Site>
</Sites>
[xml]$xml = Get-Content “XmlPath”
Foreach($web in $xml.Sites.Site.Webs.Web)
{
Write-Host $web.GetAttribute(“name”)
}
24. Rôles serveur web IIS et serveur d’applications
Windows Server 2008 et 2008 R2: Import-ServerManager + Add-WindowsFeature -Name
Windows Server 2012: Install-WindowsFeature -Name
Liste des features avec Get-WindowsFeature
Installation de SQL Server (Cas d’une machine de développement)
Possibilité de scripter via setup.exe /configurationfile
Utilisez l’assistant pour créer votre fichier de configuration
Installation des binaires SharePoint
Prérequis (prerequisiteinstaller.exe)
Online
Téléchargement automatique des prérequis dans un ordre précis
Offline
Spécifications des fichiers par ligne de commande
Installation des packs de langues, cumulatives updates, Office Web Apps (pour 2010)
Utilisation de la cmdlet « Start-Process »
2-Installation de
SharePoint
/SQLNCli
/PowerShel
/NETFX
/IDFX
/IDFX11
/Sync
/AppFabric
/KB2671763
/MSIPCClient
/WCFDataServices
Start-Process "$SQLInstallFoldersetup.exe" -Wait -ArgumentList
"/CONFIGURATIONFILE=$ConfigFile"
27. 3-Configuration de
SharePoint
Création de la base de données de configuration et l’administration centrale (noms
normalisés)
Même séquence pour SharePoint 2010 que 2013
New-SPConfigurationDatabase/ Connect-SPConfigurationDatabase
Install-SPHelpCollection -All
Initialize-SPResourceSecurity
Install-SPFeature –AllExistingFeatures
New-SPCentralAdministration
Install-SPApplicationContent
Configuration des logs (niveau de sévérité, chemins, etc…)
Set-SPDiagnosticConfig
Set-SPLogLevel
Ajouts des comptes gérées
New-SPManagedAccount: Ajout d’un nouveau compte managé
Attention le auto generate password semble poser problème en SharePoint 2010.
28. Création des applications de services
Permet la normalisation des noms de bases de données et une configuration plus
avancée
Application générique SPServiceApplication
Instance de service SPServiceInstance
Démarrage: Provision()
État: Status
¸
Managed Metadata (SPMetadataServiceApplication)
Search Service (SPEnterpriseSearchServiceApplication)
Topologie de recherche
Cdmlets
Import/Export de configurations
User profile (SPProfileServiceApplication)
Préférez une synchronisation manuelle vs automatique par PowerShell
3-Configuration de
SharePoint
Get-SPServiceInstance | ? {$_.GetType().ToString() -eq
"Microsoft.SharePoint.Taxonomy.MetadataWebServiceInstance"}
Get-SPServiceApplication | ? {$_.GetType().ToString() -eq
"Microsoft.SharePoint.Taxonomy.MetadataWebServiceApplication"}
29. 3-Configuration de
SharePoint
Manipulation des entités logiques SharePoint
Création de structure automatique + configuration
SPFarm (Ferme)
SPWebApplication (Application Web)
SPSite (Collection de sites)
SPWeb (Site)
SPList (Liste ou bibliothèque)
-
New
Get
Remove
<Sites>
<Site>
<Webs>
<Web name=“test”>
</Web>
</Webs>
</Site>
</Sites>
31. Déploiement/Retrait des solutions WSP
Get-SPSolution: Récupérer une solution existante
Add/Remove-SPSolution: Ajouter/Supprimer une solution
Install/Uninstall-SPSolution: Installer ou rétracter une solution
Activation/Désactivation de features
Enable-SPFeature: Activer une feature
Disable-SPFeature: Désactiver une feature
Prend le Display Name ou le GUID (SharePoint 2010, SharePoint 2013)
SharePoint Solution Deployer http://spsd.codeplex.com/
Déploiement des « Apps » OnPremise (ici)
SPAppInstance, SPApp, SPAppPackage
Penser à intégrer vos scripts de déploiement dans vos solutions
Visual Studio (Solution items)
4-Déploiement des
solutions
32. DémoObjectif: Activer des features à différents niveaux grâce à un
fichier de configuration et PowerShell
34. Configurations particulières courantes:
Recherche
Ajouter des sources de contenu
Ajouter des propriétés gérées liées à votre application
etc…
Métadonnées gérées
Créer une arborescence de termes dans le magasin
Import-SPTerms de Gary Lapointe
Créer une colonne de site mappée sur un terme du magasin
…
5-Configuration des
solutions
36. Installation complète d’une ferme SharePoint
AutoSPInstaller
La référence pour l’installation d’une ferme SharePoint
entièrement scriptée par PowerShell
Un seul xml de configuration pour l’installation (mono serveur ou multiserveurs)
Nécessite une bonne connaissance de SharePoint et PowerShell pour être optimisé
au maximum
La configuration par défaut est parfois suffisante pour des machines de
développement
Fonction génériques réutilisables
Existe la version UI http://autospinstallergui.codeplex.com/
facilitant la configuration
Personnalisations possibles
Gestion des logs
Séparation et isolation des scripts
Inclusion de SQL Server
Inclusion de l’installation et la configuration scriptée de SQL Server
Ajout des rôles Windows
Outils existants
37. Cmdlets utilitaires pour SharePoint
Gary Lapointe
Import-SPTerms/Export-SPTerms
...
Scripts
Get-SPScripts
Technet
CodePlex
Outils existants
38. DémoObjectif: Survol rapide de la configuration et du
fonctionnement de AutoSPInstaller pour vos environnements
39. Tout au long du cycle de vie d’une plateforme SharePoint
Backup/Restore (Cmdlets SharePoint)
Export un site, une liste ou une bibliothèque
Backup de collections de sites
Un mot sur les tâches
d’administration
Backup-SPSite http://server_name/sites/site_name -Path C:site_name.bak
Export-SPWeb http://site –Path "site export.cmp"
40. Conclusion
Osez le script !
Script = Investissement sur le long terme
Rapport gain/temps de réalisation à évaluer
Tout ce qui est faisable par UI est faisable par PowerShell
(voire plus…)
Très peu de changements en 2013 par rapport à 2010
Nécessite un minimum de connaissances en
programmation objet et de rigueur
Outils et scripts existants
Utilisez Windows Azure pour tester les procédures
d’installations
41. Ressources
Windows Azure et SharePoint:
http://www.windowsazure.com/en-
us/manage/windows/other-resources/sharepoint-on-
azure/
Testez vous-mêmes Windows Azure:
http://aka.ms/90jours
Versions de PowerShell pour les versions de SharePoint:2.0 pour SharePoint 20103.0 pour SharePoint 2013
Lien sur le whitepaper Windows Azure http://www.microsoft.com/en-us/download/details.aspx?id=34598
Instanciation de VM depuisune image standardScript arrêt / redémarrage de la plateformecomplète
Pour charger des assemblies avec PowerShell:http://www.dougfinke.com/blog/index.php/2010/08/29/how-to-load-net-assemblies-in-a-powershell-session/
Préférez un couple fichier XML de configuration + fonction PowerShell associée plutôt que mettre ces valeurs directement dans le scriptDans SharePoint, la plupart des notions sont hiérarchiques et peuvent être organisées dans un fichier XML. De plus il est très simple de lire un fichier XML en PowerShell avec Get-Content
Wizard =Même pool d’applications IISNom des bases de données par défaut Même service account pour tousConfiguration par défaut des services apps
Composants différents entre 2010 et 2013 pour le searchIndex componentContent processing componentAnalytics component
Instanciation de VM depuisune image standardScript arrêt / redémarrage de la plateformecomplète
Il peut arriver que certains de vos développements aient besoins de configurations particulières dans SharePoint. Par exemple:
Instanciation de VM depuisune image standardScript arrêt / redémarrage de la plateformecomplète
Gestion des logs avec Log4Net (Start/Stop-Transcipt par défaut)Séparation des étapes dans des scripts séparés correspondant à chaque étapeReprise sur erreur plus facileNormalisation des fichiers pour votre environnementInclusion de l’installation et la configuration scriptée de SQL Server Ajout des rôles Windows Server (IIS et App Server) pour une installation from scratch..
Instanciation de VM depuisune image standardScript arrêt / redémarrage de la plateformecomplète