lundi 5 décembre 2011

Netapp : Nouvelle version de System Manager ; OnCommand System Manager 2.0.1

NetApp abandonne le format MMC pour sa console d'administration NetApp System Manager au profit d'un mode web.
S'inscrivant dans la lignée de la suite OnCommand, OnCommand System Manager 2.0.1 remplace NetApp System Manager 1.1 (dernière MàJ en aout 2010) et exploite Java, Flash et Tomcat.

OnCommand System Manager semble posséder le même niveau fonctionnel que son prédécesseur, à noter toutefois une plus grande consommation de ressource (en l'occurrence sur la partie Graph).

Liens :
- La page OnCommand System Manager : http://www.netapp.com/us/products/management-software/system-manager.html
- Datasheet : http://media.netapp.com/documents/ds-2932.pdf
- OnCommand System Manager 2.0R1 pour Windows (nécessite un compte Now) : https://now.netapp.com/NOW/cgi-bin/software/?product=OnCommand+System+Manager&platform=Windows
- OnCommand System Manager 2.0R1 pour Linux(nécessite un compte Now) : https://now.netapp.com/NOW/cgi-bin/software/?product=OnCommand+System+Manager&platform=Linux

A noter :
- L'intégration avec VMWare consiste en un assistant de création de Datastore ESX (déjà présent sur la MMC)
- NetApp System Manager ne semble plus disponible sur le site de NetApp

lundi 10 octobre 2011

Repositionner correctement le nom d'un utilisateur dans Office dans un environnement TSE / RDS

Par erreur, il arrive qu'en déployant un profil par défaut sur un nouveau serveur TSE / RDS (Remote Desktop Services), on diffuse aux utilisateurs des éléments de profil personnalisés et qui ne le devrait pas.

Typiquement, lancer une application avant de déployer un profil par défaut personnalise cette application dans App Data et la base de registre. Dans Office, la personnalisation principale (ou plutôt remarquable) est le nom et les initiales de l'utilisateur.

Si vous avez exécuté Word ou Excel pendant la création d'un profil tous vos utilisateurs auront le nom du compte créateur de profil dans Office. Ca peut être bloquant pour la traçabilité des documents mais, et surtout, pour l'ouverture d'un document déjà ouvert par un autre utilisateur, utilisateur qui, du coup, se retrouve avec un nom absurde ou inconnu.

Voici un petit script PowerShell qui, lancé via GPO à l'ouverture de session des utilisateurs, repositionnera la valeur UserName et UserInitials dans le profil office des utilisateur en utilisant la variable d'environnement USERNAME (%username%). Remplacez simplement "POUET" par le nom d'utilisateur créateur du profil par défaut.

############################################################
# Modif des profils Office, valeur UserName #
####################################################Edgarcia
#Récupération des infos de la base de registre
$strUserKey = (get-itemproperty HKCU:\Software\Microsoft\Office\Common\UserInfo -Name UserName)

#Récupération de la variable d'environnement Username
$strUsername = $ENV:USERNAME

# Ici remplacez POUET par le nom de l'utilisateur que vous avez utilisé pour créer le profil par défaut
if (($($strUserKey.UserName)) -eq "POUET")
{
#Modif de la donnée de la valeur UserName
Set-ItemProperty -Path HKCU:\Software\Microsoft\Office\Common\UserInfo -Name UserName -Value $strUsername

#Modif de la donnée de la valeur UserInitials
Set-ItemProperty -Path HKCU:\Software\Microsoft\Office\Common\UserInfo -Name UserInitials -Value $($strUsername.Remove(2))
}

On peut également se baser sur ce script pour faire une recherche dans les HKU pour corriger tous les profils d'un serveur TSE.

N'hésitez pas à enrichir ce billet !

vendredi 9 septembre 2011

Rendre la quickbar Office 2007 disponible dans le profil itinérant

La quickbar est la suite de bouton personnalisable en haut à gauche de l'interface d'Office 2007.
Malheureusement, par défaut cette barre n'est pas stockée dans le profil itinérant de l'utilisateur.

Dans le cas de l'utilisation des Remote Desktop Services et plus encore avec Session Broker, l'utilisateur ne retrouve pas sa Quickbar lors des fermetures/ouvertures de session.

Heureusement, si votre Office 2007 est à jour (SP1), on peut ajuster ce comportement, en mettant la valeur DWORD suivante sur 1   :
HKCU\Software\Microsoft\Office\12.0\Common\Toolbars\QuickAccessToolbarRoaming 


Le fichier *.qar (qui contient la personnalisation de la barre) se retrouvera ainsi dans le dossier Roaming au lieu de Locallow.

Il suffit de déployer cette valeur via les Préférences des Stratégies de groupe :


Plus d'infos :
Support MS : http://support.microsoft.com/kb/958062
Le corréctif nécessaire pour l'exploitation de la BDR : http://support.microsoft.com/kb/955142 

jeudi 8 septembre 2011

RoundCube 5.3 - Plugin Vacation 1.9.9 version FR

En ce moment, je m'essaye au webmail RoundCube ; je le trouve léger, très rapide et bien configurable.
Les possibilités ajoutées par les plugins en font un webmail modulable comme il faut.

Il pêche un peu au niveau de la gestion des messages d'absence - pas encore orientés sieve - mais c'est pardonnable :)

J'ai ajouté le plugin vacation 1.9.9, je l'ai traduit et corrigé le fichier CSS, voici ces éléments :

Le fichier fr_FR.inc dans le dossier vacation/localization :

<?php
$labels = array();
$labels['vacation'] = 'Absence et réexpédition';
$labels['autoreply'] = 'Activer le message d\'absence';
$labels['outofoffice'] = 'Message d\'absence';
$labels['autoreplysubject'] = 'Sujet du message';
$labels['autoreplymessage'] = 'Corps du message';
$labels['autoreplybutton'] = 'Sauvegarder';
$labels['mailforward'] = 'réexpedition de mail';
$labels['separate_alias'] = 'Indiquez vos diffèrents alias en les séparant par une virgule';
$labels['separate_forward'] = 'Indiquez vos diffèrentes adresse de réexpedition en les séparant par une virgule';
$labels['keepcopy'] = 'Garder une copie du mail';
$labels['forwardingaddresses'] = 'Adresse(s) de réexpédition';
$labels['forward'] = 'Options de réexpédition du courrier';
$labels['success_changed'] = 'Message d\'absence correctement configuré';
$labels['failed'] = 'Erreur lors de l\'application des options du message d\'absence';
$labels['aliases'] = 'Alias de messagerie :';
// Button text
$labels['aliasesbutton'] = 'Get aliases';
?>

Le fichier vacation.css dans le dossier vacation/skins/default/ :

#vacationpage
{
width: 800px;
margin-left: 15px;
margin-top: 95px;
border: 1px solid #999999;
}

#pagecontent {
width: 800px;
margin-left: 15px;
margin-top: 95px;
}

#pagecontent label {
float:left;
width:26%;
margin-right:0.5em;
padding-top:0.2em;
text-align:left;
vertical-align: top;
color:#666666;
font-size:11px;
font-weight:bold;
}
J'y ai juste apporté quelques corrections au niveau du margin et un décalage du label pour absorber la trad du fichier inc.

Site de roundcube : http://roundcube.net/
Site du plugin vacation de Peter Ruiter sur SourceForge : https://sourceforge.net/projects/rcubevacation/

samedi 23 juillet 2011

Désactiver l'accélération hardware d'Internet Explorer 9 via GPO

Si l'accélération hardware d'Internet Explorer 9 (exploitation du calculateur graphique ou GPU) est efficace sur un poste de travail récent, elle peut générer des problèmes sur des postes de travail plus anciens ou pire, créer des latences sur un serveur RDS (Remote Desktop Services ou anciennement TSE) : Page d'accueil qui s'affiche plus d'une minute après son lancement, bug d'affichage au niveau des onglets etc...

Malheureusement, il n'existe pas de stratégie de groupe (ou GPO) pour désactiver ce comportement.
Toutefois, il est possible d'exploiter les Paramètres des stratégies de groupe (disponibles à partir de Windows 2008 Server) afin d'inscrire une clef dans la base de registre, coté utilisateur, pour forcer le mode software.

Ouvrez donc la console Gestion des stratégies de groupe, créez ou ouvrez un objet de stratégie de groupe et rendez-vous là :


Faites un clic-droit sur Registre : Nouveau / Élément registre et renseignez les informations suivantes :


Action : Remplacer, permet de créer ou mettre à jour la valeur si elle existe déjà.
Ruche : HKEY_CURRENT_USER
Chemin d'accès à la clef : Software\Microsoft\Internet Explorer\Main
Nom de la valeur : UseSWRender (utiliser le rendu logiciel)
Type de valeur : REG_DWORD
Donnée de la valeur : 1
Base : Décimal

Liez cette objet de stratégie de groupe sur une Unité d'Organisation où se trouve votre utilisateur de test et ouvrez une session. Vérifiez dans IE9 / Options Internet, onglet Avancé que la case Utiliser le rendu logiciel au lieu du rendu GPU est bien cochée :


Si elle ne l'est pas encore, ouvrez une console cmd en tant qu'administrateur et rafraichissez l'application des stratégies :

GpUpdate /Target:User /Force /Sync (attention, demande la fermeture de la session)

Une fois le rafraichissement effectué, vous devriez constater la désactivation de l'accélération GPU d'Internet Explorer 9.

mardi 19 juillet 2011

PowerCLI : Découverte de l'administration PowerShell sous ESXi

Note du 05/05/2012 : Quelques corrections, modif de PowerShell V2 pour NT5.

Pour administrer ses serveurs ESX / ESXi, VMware fournit le client vSphere.
 
S'il est sympathique - et efficace - au premier abord, on se rends rapidement compte de ses limitations lorsque l'on commence à avoir beaucoup de machine virtuelle et que des tâches répétitives d'administration sont nécessaires.

Heureusement, pour palier à ce problème VMware fournit le client PowerCLI, qui permet d'administrer les serveurs et les machines virtuelles en exploitant la possibilités de PowerShell.

Je vais vous présenter PowerCLI en quelques mots et vous montrer comment gagner du temps en utilisant PowerCLI sur votre infrastructure de virtualisation.

Prérequis et Installation

    Votre poste de travail doit posséder PowerShell, déjà présent en version 2 sur les NT6 (Vista,7, 2008 etc.), mais à installer sur les NT5 (XP, 2003 etc.).

    Ensuite vous devez installer le client PowerCLI, disponible sur le site de VMware : http://www.vmware.com/support/developer/PowerCLI/index.html



    Avant de lancer PowerCLI, vous devez autoriser PowerShell à exécuter des scripts non signés. Pour cela lancez une instance PowerShell et tapez :

    Set-ExecutionPolicy RemoteSigned

    Cette commande modifie le profil global de PowerShell (pour tous les utilisateurs PowerShell du poste de travail), son comportement sera alors le suivant :

    • Les scripts exécutés localement peuvent être exécutés sans être signés
    • Les scripts téléchargés à partir d’internet doivent être signés
    • Ne demande pas de confirmation avant d’exécuter des scripts signés ou non par une autorité de certification connue de votre ordinateur
    Lancement du client

    Vous pouvez lancer le client PowerCLI directement en cliquant sur son icône. Pour débuter ça reste pratique d'utiliser directement la console PowerCLI, mais le plus agréable reste d'utiliser l'ISE de PowerShell v2 et d'initialiser les modules PowerCLI avec les commandes suivantes :

    PS> Add-PSSnapin VMware.VimAutomation.Core
    PS> Initialize-VIToolkitEnvironment.ps1

    Ces lignes chargent le module VMware et initialisent son environnement d'administration : il est nécessaire de les taper pour pouvoir exploiter pleinement ses serveurs ESXi. Toutefois, vous pouvez créer un alias dans votre profil PowerShell (plus d'information sur les alias ici ) ou, en intégrant directement ses commandes dans votre profil, les charger automatiquement.

    Une fois votre console lancée en PowerCLI, vous devez maintenant vous connecter à un serveur ESX. Voici la commande de connexion :

    PS> Connect-VIServer IP_ou_DNS

    Il est possible de fournir beaucoup plus d'informations :

    PS> Connect-VIServer -Server IP_ou_DNS -Protocol https -User admin -Password pass

    Les informations manquantes seront demandées de manière interactive.

    PowerCLI respecte bien l'architecture PowerShell, c'est à dire un format verbe-nom -commutateurs globaux (name, destination etc.).

    Un simple get-help vm vous sort toutes les commandes d'administration des machines virtuelles, les possibilités sont étourdissante.

    Quelques commandes de base :

    Récupérer des infos sur une VM :

    PS> Get-VM -Name "Vm-Name"

    Récupérer la liste des VM d'un centre :

    PS> Get-VM -Location Nancy

    Arrêter brutalement une VM :

    PS> Stop-VM -VM "VM-Name"

    Arrêter une VM contenant les VMWare Tools proprement :

    PS> Shutdown-VMGuest -VM "VM-Name"

    Démarrer une VM :

    PS> Start-VM -VM "VM-Name"

    Mettre en pause une VM :

    PS> Suspend-VM -VM "VM-Name"

    Supprimer une VM de l'inventaire

    PS> Remove-VM -VM "VM-Name"

    Redémarrer une VM contenant les VMWare Tools proprement :

    PS> Restart-VMGuest -VM "VM-Name"

    Supprimer une VM de l'inventaire ET du datastore

    PS> Remove-VM -VM "VM-Name" -DeletePermanently

    L'idée maintenant, c'est de "piper" ces différentes commandes afin d'exécuter des tâches lourdes en quelques lignes.

    Quelques commandes cooool

    Déconnecter toutes les images ISO montées dans les VM :


    PS> Get-cddrive -VM * | Where {$_.ISOPATH -ne $null} | set-cddrive -nomedia

    Mettre en pause toutes les VM actives sur un cluster :

    PS> get-vm -location cluster_ou_serveur | where {$_.PowerState -eq "PoweredOn"} | suspend-vm

    Démarrer les VM en pause:

    PS> get-vm -location cluster_ou_serveur| where {$_.PowerState -eq "Suspended"} | Start-vm

    Déplacer l'ensemble des machines virtuelles d'un serveur à un autre :

    PS> get-vm -location serveur_1 | move-vm -destination serveur_2

    Pour déplacer toutes les VM allumées :

    PS> get-vm -location serveur_1 | where {$_.PowerState -eq "PoweredOn"} | move-vm -destination serveur_2

    Migration de Datastore (d'un stockage à un autre) :

    PS> get-vm -location cluster_ou_serveur | move-vm -Datastore nom_datastore

    Pour aller plus loin :

    Documentation et téléchargement PowerCLI : http://www.vmware.com/support/developer/PowerCLI/index.html

    Une référence FR sur PowerShell : http://www.powershell-scripting.com/

    Initiation PowerShell sur le MSDN : http://msdn.microsoft.com/fr-fr/visualc/bb906067

    Explication sur les profiles PowerShell : http://www.winmgr.com/?p=1645

    QuickStart pour PowerCLI 4.1.1 : http://communities.vmware.com/servlet/JiveServlet/download/1696554-55551/Final-PowerCLI-4.1.1.pdf

    N'hésitez pas si vous avez des questions ou des commandes sympa à partager.
    Je rajouterai mes prochaines découvertes dans un second billet.

    samedi 9 juillet 2011

    Installer pam_mount sur un serveur CentOS 5.6 avec authentification ActiveDirectory

    Curieusement, sur CentOS/RHEL 5.x, s'il est facile de configurer pam_ldap, il est beaucoup plus compliqué d'installer et de configurer pam_mount.

    Pam_mount permet de faire un montage automatique d'un partage de fichier (CIFS, NFS etc.) à l'authentification de l'utilisateur sur un système Linux et le tout, sans avoir à retaper son mot de passe (SSO).

    Il peut s'appuyer entres autres sur pam_ldap pour exploiter, par exemple, une authentification Active Directory avec montage automatique du HomeDirectory de l'utilisateur.

    C'est plutôt cool :)
    Quand ça marche... Malheureusement il n'y a pas de paquet RPM pour CentOS/RHEL 5.x, quasiment aucun document synthétique sur le web, du coup faut tout faire à la main. Dans cet article, je vais utiliser un paquet RPM existant, mais il est possible de compiler une version plus récente de pam_mount (pam_mount sur sourceforge) ; et je vais me concentrer uniquement sur l'authentification LDAP via ActiveDirectory (il est possible d'utiliser Kerberos, Winbid ou un OpenLDAP).

    Étape 1 : s'assurer que l'authentification LDAP est fonctionnelle

    Pour cet exemple je vais me concentrer uniquement sur LDAP via ActiveDirectory.

    Théoriquement, un simple # setup permet de configurer l'authentification LDAP, toutefois un tour dans /etc/ldap.conf est souvent nécessaire suivant l'infrastructure.

    Voici les lignes qui doivent au minimum être renseignées pour interconnecter votre serveur Red Hat / CentOS avec Active Directory :
    host ip serveur ad
    base dc=domaine,dc=local
    uri ldap://ip ou nom serveur ad
    ldap_version 3
    binddn cn=compte_ldapviewer,cn=users,dc=domaine,dc=local (indiquez le chemin d'un compte limité mais autorisé à consulter l'annuaire)
    bindpw
    scope sub
    timelimit 120
    bind_timelimit 120
    idle_timelimit 3600
    pam_login_attribute sAMAccountName
    (important, indique quel est le champs LDAP à utiliser pour le login)

    Et votre fichier /etc/pam.d/system-auth doit ressembler à ceci :
    auth required pam_env.so
    auth sufficient pam_unix.so nullok try_first_pass
    auth requisite pam_succeed_if.so uid >= 500 quiet
    auth sufficient pam_ldap.so use_first_pass
    auth required pam_deny.so 
    account required pam_unix.so broken_shadow
    account sufficient pam_succeed_if.so uid < 500 quiet
    account [default=bad success=ok user_unknown=ignore] pam_ldap.so

    account required pam_permit.so
     
    (la suite ne change pas)

    La commande # authconfig --test permet de vérifier l'état de vos modules pam. Vous devez avoir, pour la partie LDAP, une sortie de ce type :
    pam_ldap is enabled

    LDAP+TLS is disabled
    LDAP server = "ip du serveur ou chemin ldap://"
    LDAP base DN = "dc=domaine,dc=local"
     Faites des tests d'authentification, vous pouvez faire un # tail -f /var/log/secure dans un second terminal pour vérifier le bon fonctionnement de votre configuration.

    Pour que les utilisateurs puissent s'authentifier sur le serveur, il suffit de leurs créer un compte le plus simplement du monde, mais sans préciser de mot de passe :
    # useradd -m  sAMAccountName_de_l'utilisateur
    Étape 2 : Installation et configuration de pam_mount :

    Tout d'abord, vous devez télécharger la version suivante de pam_mount : pam_mount-1.2-1.PU_IAS.5.i386.rpm et sa dépendance libHX-1.25-1.PU_IAS.5.i386.rpm (version x86_64 dispo sur http://pkgs.org)

    Et tapez les commandes suivantes :
    # yum install perl-xml-writter
    # rpm -Uvh libHX-1.25-1.PU_IAS.5.i386.rpm

    # rpm -Uvh pam_mount-1.2-1.PU_IAS.5.i386.rpm

    Pour exploiter pam_mount, il est nécessaire de modifier le fichier /etc/pam.d/system-auth (attention, gardez plusieurs sessions root sous le coude pendant la modification de ce fichier !), ajoutez donc les lignes en gras dans votre fichier system-auth :
    auth required pam_env.so
    auth required pam_mount.so
    auth sufficient pam_unix.so nullok try_first_pass
    auth requisite pam_succeed_if.so uid >= 500 quiet
    auth sufficient pam_ldap.so use_first_pass
    auth required pam_deny.so

    account required pam_unix.so broken_shadow

    account sufficient pam_succeed_if.so uid < 500 quiet
    account [default=bad success=ok user_unknown=ignore] pam_ldap.so
    account required pam_permit.so
    password requisite pam_cracklib.so try_first_pass retry=3 
    password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
    password sufficient pam_ldap.so use_authtok
    password required pam_deny.so
    session optional pam_keyinit.so revoke 
    session required pam_limits.so
    session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid  
    session required pam_unix.so
    session optional pam_mount.so
    session optional pam_ldap.so

    Pam_mount se configure ensuite à l'aide du fichier /etc/security/pam_mount.conf.xml. En ajoutant une ligne de ce type :
    <volume fstype="cifs" mountpoint="/home/%(USER)/dossier" path="home/%(USER)" server="serveur_NAS" user="*" workgroup="DOMAINE AD"/>
    Cette ligne signifie "Monte le dossier de l'utilisateur x faisant partie du domaine D à partir de serveur_NAS:/home/Utilisateur dans /home/Utilisateur/Dossier"
    Ce qui est intéressant avec celle-ci, c'est qu'elle fonctionnera pour tous les utilisateurs du domaine qui auront un compte sur votre serveur CentOS/RHEL.

    Pour spécifier un partage particulier pour un utilisateur particulier, il faut remplacer le user="*" par user="sAMAcountName_de_l'utilisateur".

    Les utilisateurs peuvent accéder à leurs données de façon sécurisée (SSH) et de façon extrêmement simple (WinSCP par exemple).

    Pam_mount est très riche, vous pouvez utiliser d'autres protocoles, vous baser sur le GUID pour les montages etc... Consultez son man ainsi que celui de pam_mount.conf.xml.

    N'hésitez pas à commenter et à apporter des corrections, cette méthode a le mérite de fonctionner mais on peut probablement faire mieux (notamment du coté des pam).

    Liens :
    Man pam_mount 
    Man pam_ldap 
    pam_mount sur sourceforge (si vous voulez une version plus récente, à compiler)