Post on 21-May-2015
description
C05- Automatiser vos déploiements d’environnements SharePoint 2010/2013 grâce à PowerShell
Vos hôtes
Franck CornuConsultant SharePoint depuis 3 ans
• Analyse et architecture d’information• Développement• Infrastructure
Benjamin GuinebertièreEvangéliste technique Windows Azure
• Division plateforme & Ecosystème• Microsoft France• @benjguin
franck.cornu@gsoft-group.com
Agenda
Qui est concerné?
Quoi automatiser et pourquoi?
PowerShell avec SharePoint, par où commencer?
L'automatisation à travers un projet SharePoint de A à Z
Conclusion
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
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.
Étapes de mise en place courantes d’une ferme
SharePointSur 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….
Environnements SharePoint
Il devient évident qu’une automatisation s’impose! C’est donc maintenant que PowerShell entre en jeu
Développement Intégration
Pré-ProductionProduction
Qualification
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 SharePointExchange….
Basé sur le Framework .NetTout est objet sous PowerShell
Commandes prédéfinies « Cmdlets »Commandes prédéfiniesManipulent ou retournent des objets et non du texteFormalisme « 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
Un mot sur PowerShell
Fichiers de scriptParamé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 + "\Software\Microsoft\Windows\CurrentVersion\RunOnce"
Set-Itemproperty $RunOnceKey "MyScript" ('C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe -ExecutionPolicy Unrestricted -File <ScriptPath> + <Parameters>
PowerShell avec SharePoint
Utilisation des cmdlets SharePointAjout 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”)
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 requisOn Premise
Membre du groupe SharePoint_Shell_Access ou WSS_Admin_WPG securityadmin sur l’instance SQLdb_owner sur les base de données à manipuler
OnlineUtilisateur « Global admnistrator »
Set-ExecutionPolicy RemoteSigned
Add-SPShellAdmin –UserName « DOMAIN\user »
Connect-SPOService -Url https://contoso-admin.sharepoint.com -credential admin@contoso.com
PowerShell avec SharePoint
Outil pour créer vos scripts
NotePad ++
PowerShell ISE Par défaut sur Windows Server
2012Feature à installer sur Windows
Server 2008 R2Debug + Intellisense (version
3.0)
PowerGUIIntellisense + DebugPlugin Visual Studio
Hack pour Extension VS 2012
Étapes d’un projet SharePoint
Installation de l’OSPhysiques 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 fermeEn 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 SharePointAu 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
ServicesApplications web
Compte du service de recherche Compte d’accès au contenu (Compte de crawl)…
1-Installation des serveurs
Déploiement automatique avec Windows Azure
1-Installation des serveurs
Continuum SharePoint avec le cloud
Contrôle
Opti
misati
on du C
oû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)
Vue d’ensemblede Windows Azure
Windows Azure
Services
web apps
web sites
cloud apps
cloud services
Apps existantes
virtual machines
identité&
securitéService
BusCDN Mobile Services
HDInsight (Hadoop) mediaRéseaustockage
SQL database
VM Windows Azure
VM à demeure
VHD
Hyperviseur Windows Azure
VM
OS
Données
Cache
Windows Azure Blob Storage
Cache.VHD
VHD
Bibliothèque plateforme
Images standard
Nelle VMcsupload
[sysprep]
Disque OS
Disques de données
VHD
VHD
VHD
Capture image (sysprep)Image
Nelle VM VHD
Windows Azure
à demeureProvisionner
Attacher
Installation automatisée
Windows Azure Training KitLabs
Exemple de scripthttp://aka.ms/azure-ps-infraSP
Etapes:Création VM depuis image Windows Server 2012Installation et configuration Active DirectoryCréation 2 VM depuis image Windows Server 2012
Intégration dans le domaine
Création 2 VM depuis image SQL Server 2012Intégration dans le domaine
Ajout du rôle Web dans les 2 VM WindowsServer 2012
Démo
Gestion des logsLibraries .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 WindowsNew-EventLog/Write-EventLog
Configuration via XMLPréférez toujours utiliser un couple fichier de configuration +
fonction PowerShell générique
Lecture d’un fichier XML en PowerShell très simple avec Get-Content
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 MyScriptWrite-EventLog -LogName SharePoint -Source MyScript -Message "Les logs, c'est cool!" -EventId 0 -EntryType information
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”)}
Étapes d’un projet SharePoint
Rôles serveur web IIS et serveur d’applicationsWindows Server 2008 et 2008 R2: Import-ServerManager + Add-WindowsFeature -
NameWindows Server 2012: Install-WindowsFeature -NameListe des features avec Get-WindowsFeature
Installation de SQL Server (Cas d’une machine de développement)Possibilité de scripter via setup.exe /configurationfileUtilisez l’assistant pour créer votre fichier de configuration
Installation des binaires SharePointPrérequis (prerequisiteinstaller.exe)
OnlineTéléchargement automatique des prérequis dans un ordre précis
OfflineSpé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 "$SQLInstallFolder\setup.exe" -Wait -ArgumentList "/CONFIGURATIONFILE=$ConfigFile"
Étapes d’un projet SharePoint
3-Configuration de SharePoint
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-SPDiagnosticConfigSet-SPLogLevel
Ajouts des comptes géréesNew-SPManagedAccount: Ajout d’un nouveau compte managéAttention le auto generate password semble poser problème en SharePoint 2010.
Création des applications de servicesPermet la normalisation des noms de bases de données et une
configuration plus avancée Application générique SPServiceApplication
Instance de service SPServiceInstanceDé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"}
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)
-NewGetRemove
<Sites> <Site> <Webs> <Web name=“test”> </Web> </Webs> </Site></Sites>
Étapes d’un projet SharePoint
Déploiement/Retrait des solutions WSPGet-SPSolution: Récupérer une solution existanteAdd/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 featurePrend 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
Démo
Objectif: Activer des features à différents niveaux grâce à un fichier de configuration et PowerShell
Étapes d’un projet SharePoint
Configurations particulières courantes:
RechercheAjouter des sources de contenuAjouter des propriétés gérées liées à votre applicationetc…
Métadonnées géréesCré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
Démo
Objectif: Importer un magasin de termes et créer une colonne de site mappée sur un des termes
Installation complète d’une ferme SharePointAutoSPInstaller
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 possiblesGestion des logs Séparation et isolation des scriptsInclusion de SQL ServerInclusion de l’installation et la configuration scriptée de SQL
Server Ajout des rôles Windows
Outils existants
Cmdlets utilitaires pour SharePointGary Lapointe
Import-SPTerms/Export-SPTerms...
ScriptsGet-SPScriptsTechnetCodePlex
Outils existants
Démo
Objectif: Survol rapide de la configuration et du fonctionnement de AutoSPInstaller pour vos
environnements
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"
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
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
Merci
Évaluez notre session!Merci!