Articles Tagués ‘tuto’

1. Gestion des utilisateurs sous Unix/Linux

Unix est multi-utilisateurs. Pour cette raison, tout le monde ne peut pas tout faire, à part l’administrateur système (traditionnellement nommé root), qui à le droit de lire et d’écrire tous les fichiers de tous les répertoires.

Chaque utilisateur est désigné de manière unique par son login (son « nom »). De plus, chaque utilisateur appartient à un ou plusieurs groupes. Par exemple, sous Red Hat Linux, chaque utilisateur est par défaut seul membre de son groupe personnel et membre du groupe users. Ainsi, sur ma machine, j’ai un utilisateur damien qui est membre des groupes damien et users. L’intêret d’avoir chaque utilisateur unique membre d’un groupe dépasse le cadre de cet article.

Un fichier ou un répertoire appartient toujours à un utilisateur et à un groupe. D’autre part, un fichier peut être accessible en lecture, en écriture et en exécution. Les permissions sont distinctes pour l’utilisateur propriétaire du fichier, pour le groupe propriétaire et pour le reste du monde. Ces permissions sont affichées par la commande ls quand on lui passe l’option -l:

-rw-r--r--  1 damien   users  297 Jun 07 10:31 toto

Cette ligne signifie que le fichier toto appartient à l’utilisateur damien et au groupe users, avec les droits -rw-r--r--. Les autres valeurs (1, 297 et la date) ne nous intéressent pas ici.

Décryptage des droits -rw-r–r– : le premier caractère représente le type de fichier: « – » pour un fichier normal, « d » pour un répertoire, « p » pour un tube, « b » ou « c » pour un périphérique, « l » pour un lien symbolique.

Les trois suivants représentent les droits de l’utilisateur propriétaire du fichier.

  • « r » représente le droit de lecture,
  • « w » le droit d’écriture
  • « x » le droit d’exécution

Ici, « rw- » signifie que l’utilisateur damien peut lire et écrire dans le fichier, mais pas l’exécuter.
Les trois caractères suivants représentent les permissions du groupe; ici, tous les membres du groupe users peuvent lire le fichier, mais pas y écrire.
Enfin, les trois derniers caractères ont une signification analogue pour le reste du monde.

Une astruce mnémotechnique : pensez au prénom HUGO et vous retrouverez UGO : User, Group, Other

Une petite nuance pour les répertoires: si un utilisateur a le droit d' »exécution » sur un répertoire, cela signifie qu’il peut y entrer avec la commande cd ou équivalent.

Comment fixer les droits : on a vu que les droits d’accès sont fixés pour UGO et sont en rwx.

  rwx
  ||+-- 1
  |+--- 2
  +---- 4

Ainsi, fixer les droits sur un répertoire ou un fichier peut être synthétiser par en additionnant les valeurs pour chaque UGO.

Par exemple, un groupe « rwx » est représenté par 4+2+1=7. Un groupe « r– » par 4+0+0=4. Un groupe « –x » par 0+0+1=1. Ainsi, les permissions rw-r--r-- de notre fichier toto s’écrivent 644.

Fixer les droits :

chmod 644 toto

2. Setuid sur un script Shell ou un programme

Rappel : une ligne de commande précédée par $ indique un utilisateur lambda. Une ligne de commande précédée par # indique que cette commande est exécutée par l’utilisateur ROOT

Dans l’exemple ci-dessous, on modifie les droits du script monshell.sh par un SETUID=4 (on fixe l’utilisateur d’exécution à ROOT) :

# chown root:root monshell.sh
# chmod 4755 monshell.sh
# exit
$ ./monshell.sh

L’utilisateur exécute ici le script monshell.sh avec les droits ROOT et ce, bien que n’étant pas dans le groupe ROOT !

Publicités

Depuis la version Etch de Debian, le module iscsi_tcp est intégré dans le noyau. Il ne vous reste plus qu’à installer un outil d’administration et à configurer

1. Installation

# apt-get install open-iscsi

configuration du fichier /etc/iscsi/iscsid.conf

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <votre identifiant de connexion au SAN>
discovery.sendtargets.auth.password = <le mot de passe>
node.session.auth.authmethod = CHAP
node.session.auth.username = <votre identifiant de connexion au SAN>
node.session.auth.password = <le mot de passe>
node.startup = automatic

2. Configuration d’une connexion

#iscsiadm   --mode node  --targetname "iqn.2007-01.org.debian.foobar:CDs"  -p 192.168.0.1:3260 --op=update --name node.session.auth.authmethod --value=CHAP
#iscsiadm   --mode node  --targetname "iqn.2007-01.org.debian.foobar:CDs"  -p 192.168.0.1:3260 --op=update --name node.session.auth.username --value=$Id
#iscsiadm   --mode node  --targetname "iqn.2007-01.org.debian.foobar:CDs"  -p 192.168.0.1:3260 --op=update --name node.session.auth.password --value=$MDP
#iscsiadm   --mode node  --targetname "iqn.2007-01.org.debian.foobar:CDs"  -p 192.168.0.1:3260 --login

le fichier /etc/iscsi/nodes/iqn.2007-01.org.debian.foobar:CDs/192.168.0.1,3260 est automatiquement créé

3. Administration

3.1 Inventaire des Target iSCSI disponibles

#iscsiadm -m discovery -t st -p 192.168.0.20

192.168.0.1:3260,1 iqn.2007-01.org.debian.foobar:CDs
192.168.0.1:3260,1 iqn.2007-01.org.debian.foobar:USB

3.2 Ouvrir une connexion

#iscsiadm -m node –targetname « iqn.2007-01.org.debian.foobar:CDs » –portal « 192.168.0.1:3260 » –login

un nouveau périphérique iSCSI est alors créé dans /dev/sdx et automatiquement monté sur /dev/disk/by-path/ip-xxxxxxxx

3.3 Monter un disque iSCSI

Modifier le fichier /etc/fstab

#device         mount point     FS      Options Backup  fsck

LABEL=data1     /mnt/data1      ext3    _netdev 0       0

3.4 Déconnexion d’un disque iSCSI

#iscsiadm  -m node  --targetname "iqn.2007-01.org.debian.foobar:CDs" --portal "192.168.0.1:3260" --logout

3.5 Trouver l’initiateur iqn

L’initiateur iSCSI a aussi son propre iqn que vous trouverez dans le fichier /etc/iscsi/initiatorname.iscsi.

Attention : après installation du paquet open-iscsi, ce fichier ne contient que

GenerateName=yes"

C’est au premier démarrage du démon que l’iqn est créé

4. Erreurs fréquentes

ietd: CHAP initiator auth.: No valid user/pass combination for initiator iqn.1993-08.org.debian:01:123456789abcd found
=> Erreur de login/mot de passe

La matrice RACI aide à définir les rôles et les responsabilités au sein d’un projet. Elle vous aide à clarifier les acteurs et à être efficace dans vos actions.

Bien évidemment, la matrice RACI évolue en fonction des acteurs du projet (les départs, les arrivées et des nouvelles prises de fonctions). Quoiqu’il en soit elle vous évitera les batailles et autres interventions surprises qui remettent en cause les décisions.

1. RACI : c’est quoi ?

RACI est ni plus ni moins que l’acronyme de :

  • R : Responsible
  • A : Accountable
  • C : Consulted
  • I : Informed

2. Construction de la matrice RACI

R : le ou les R réalisent l’action. Il y a au moins un R pour chaque action. Le A peut aussi jouer le rôle de R. Le A est responsable de l’organisation du travail du ou des R. Si les R ne remplissent pas leurs objectifs (action et délai), le A est responsable de la situation.

A : le A est celui qui rends des comptes sur l’avancement de l’action. Il y a toujours un et un seul A pour chaque action. « Avoir le A » signifie être totalement responsable d’une action

C : le ou les C sont les participants qui doivent être consultés. Sur consultation du A et des R, ils donnent leur avis sur les sujets où ils sont experts. Les C n’ont pas autorité. C’est le A qui décide de prendre en compte ou non l’avis des C.

I : les I sont les personnes qui doivent être informés. Elles sont classiquement indirectement impactées par le projet, comme les utilisateurs, les responsables de projets périphériques…

3. Exemple de fichier Microsoft Excel

RACI-MariageRJ : ici on prend un exemple volontairement utopique. L’organisation du mariage civil de Roméo et Juliette :). On suppose que les querelles et autres vengeances, meurtres, … ne font pas partie de décor.

1. Où en suis-je avec la pagination ?

En cas de gros traitement en mémoire RAM, linux (comme tout autre OS) écrit dans une partition appelée SWAP. Cette SWAP étant hébergée sur le disque dur, vous comprendrez facilement que les temps d’accès sont plus élevés qu’en mémoire centrale. De ce fait, si votre serveur possède beaucoup de RAM, il écrit moins sur la SWAP. Pour connaitre le nombre de fois qu’il écrit sur la SWAP

#cat /proc/sys/vm/swappiness

La valeur doit être entre 50 et 60.

Le cas échéant, paginez moins :

Editez le fichier /etc/sysctl.conf, cherchez la ligne swappiness et réduisez sa valeur. En cas d’absence, ajoutez la ligne

vm.swappiness=1

2. Afficher le top 10 des processus consommateurs de mémoire

# ps -auxf | sort -nr -k 4 | head -10

3. Afficher le top 10 des processus consommateurs de CPU

# ps -auxf | sort -nr -k 3 | head -10

4. SAR

SAR est utilisé dans 2 cas :

  • Monitorer les performances systèmes en temps réel (CPU, mémoire, I/O, …)
  • Collecter les données de performance en tâche de fond

SAR fait partie du package SYSSTAT.

Vous pouvez monitorer :

  • Usage CPU,
  • Statistiques/CPU,
  • Mémoire libre et utilisée,
  • Espace de SWAP utilisé et libre,
  • I/O,
  • Activité sur un périphérique particulier (I/O),
  • Statistiques réseau,
  • Récupérer les données SAR sur une période données,
  • ..

Quelques exemples :

$ sar -b 1 3

Statistiques I/O par interval d’1 seconde et 3 fois

5. Tcpdump

tcpdump est un analyseur de paquets réseaux.

exemple de commande permettant l’affichage des paquets en ASCII

$ tcpdump -A -i eth0

De nombreux filtres existent pour permettre l’analyse des paquets réseaux.

$ man tcpdump

6. Iostat

5. Mpstat

6. Vmstat

7. PS Command

8. Free

 

9. TOP

 

10. Pmap

11. Netstat

12. IPTraf

IPTraf permet le monitoring des flux réseau. Ses principales caractéristiques sont :

  • console texte,
  • affiche les flux réseaux qui passent sur votre réseau. Il affiche en outre, les flags TCP, paquets, compteur de bytes, ICMP, OSPF, …
  • interface de statistiques étendue
  • découverte LAN et affichage de leur activité
  • affichage des protocols
  • journalisation

13. Strace

14. Lsof

16. GkrellM

17. w and uptime

18. /proc

19. KDE System Guard

20. GNOME System Monitor

21. Conky

22. Cacti

23. Vnstat

24. Htop

25. Socket Statistics – SS

L’installation de serveurs et/ou postes de travail tous identiques nécessitent, soit une procédure longue et précise, soit un serveur central d’image Linux.

Nous opterons ensemble pour la seconde proposition.

A partir d’une installation Debian Standard :

1. Serveur CloneZilla

Un serveur CloneZilla permet de démarrer un ou plusieurs serveurs/postes de travail à distance (Wake OnLine WOL), choisir depuis quelle partition démarrer, créer une image système en ligne et restaurer une image en boot PXE.

2. Installation de CloneZilla

2.1 Mise à jour du sources.list

# vi /etc/apt

Ajouter

deb http://drbl.sourceforge.net/drbl-core drbl stable

Acquérir la clé GPG

# wget http://drbl.nchc.org.tw/GPG-KEY-DRBL
# apt (apt-key add GPG-KEY-DRBL

Mettre à jour la base de données des dépôts

# apt-get update

2.2 Interface réseau virtuelle

CloneZilla est configuré pour utiliser 2 interfaces ethernet. Si vous n’en disposez que d’une alors :

# ifconfig eth0:0 <ma nouvelle adresse IP> netmask <mon masque>

2.3 Pré-installation

CloneZilla n’existe pas encore dans les dépôt Debian. Nous allons donc télécharger les paquets et les installer.  Pour ce faire, on utilise le binaire LINKS

# apt-get install links2

Téléchargement :

# links http://sourceforge.net/projects/drbl/files/drbl_stable/

Télécharger le paquet drbl_1.12.15-1drbl_all.deb

2.4 Installation

# dpkg –i drbl_1.9.5-42_i386.deb
# /opt/drbl/sbin/drblsrv –i

– Installer une distribution ? N
– Console série ? N
– Architecture : i386                                                     ( uname -i)
– Mettre à jour le système d’exploitation : Y

Le script se poursuit et met à jour le système d’exploitation de votre serveur depuis le dépôt installé précédemment.

2.5 Configuration de drbl/clonezilla

# /opt/drbl/sbin/drblpush –i

– dns, NIS, prefixe client : <saisir les informations selon votre infrastructure>
– interface ethernet public : eth0:0
– No
– No
– Plage d’adresses IP : <info selon infrastruture réseau>
– ltsp : utile uniquement pour les clients légers

– Fournir clonezilla BOX (1), c’est ce que nous avons besoin pour le déploiement.

– nous allons utiliser /images comme dossier de destinations de celles-ci.

– Aucun mot de passe de démarrage

– On définit un prompt de démarrage ! tempo à choisir (délai avant l’action par défaut), arrière-plan graphique (y)

– On désactive NAT, l’utilisation de PXE ne se fera qu’en LAN…

Et l’on poursuit..

La configuration se fait maintenant.

Afin de faciliter la gestion du parc par filtrage MAC, il est préférable d’ajouter dans /etc/dhcp3/dhcpd.conf les postes clients un par un afin de les nommer et donc de réserver les IPs, voici la syntaxe :

Host nom hôte {

Hardware ethernet @MAC ; #de l’hôte

Fixed-address @IP ; #de l’hôte

}

Et redémarrer le service dhcpd : /etc/init.d/dhcp3-server restart

3. Création d’images de grub pour la selection de la partition à booter à distance

3.1 Création d’un disque de boot grub

Pour commencer, il faut créer une image disque du grub à envoyer en PXE. Pour ce faire, on utilisera VMware.

A partir d’une machine virtuelle, ouvrez le menu Paramètres

* Onglet périphériques : sélectionner floppy disk
* cliquer sur create disk
* saisir un nom

3.2 Installation de grub

# mke2fs /dev/fd0
# mount -t ext2 /dev/fd0 /mnt
# mkdir –p /mnt/boot/grub
# cp /boot/grub/stage1 /mnt/boot/grub
# cp /boot/grub/stage2 /mnt/boot/grub
# umount /dev/fd0
# grub

Configuration de grub

Grub est maintenant installé.

Cryptage du mot de passe

Afin de ne pas mettre le mot de passe de verrouillage grub en clair, nous allons le crypter en md5 via grub : (azerty pour les tests, ATTENTION : clavier grub est en qwerty)

Configuration menu.lst

<

Il va maintenant falloir configurer le menu pour les partitions (dans ce cas, par défaut : Ubuntu) qui se trouve dans le répertoire monté /mnt/boot/grub/menu.lst:

timeout 1 # attente d'1 seconde avant exécution
default 0 # par défaut on boot sur la première partition
password --md5 ???????????????????????????? # on prendra un mot de passe simple comme "azerty"
title Ubuntu
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-17-genric root=/dev/sda1 ro quiet splash
initrd /boot/initrd.inmg-2.6.24-17-generic
title Windows XP
root (hd0,2)
makeactive
chainloader +1

Grub est maintenant configuré.

Création de l’image PXE

Nous pouvons maintenant procéder à la création de l’image de boot grub à partir de l’image disquette (ne pas oublier de démonter la disquette).

Pour cela, l’on va d’abord se rendre dans le répertoire root du serveur TFTP de clonezilla :

cd /tftpboot/nbi_img/

et enfin, créer l’image dans ce dernier :

# dd if=/dev/fd0 of=boot_ubuntu.img bs=1024 count=1440

L’image de boot PXE pour démarrer sur Ubuntu est maintenant prête. Pour Windows XP, il suffit de refaire la manipulation en modifiant simplement le default à 1 dans le menu.lst.

Configuration du menu de boot

Maintenant que les images de boot pour grub sont préparées, nous allons pouvoir les ajouter dans le menu de boot PXE. Pour se faire, il faut éditer le script situé dans /opt/drbl/sbin/generate-pxe-menu et se diriger vers la fin où l’on trouve les labels puis ajouter les 2 entrées pour ces menus. Il est conseillé de les entrer après le label local.

On a aussi la possibilité de désactiver l’édition des menus en mettant l’option « ALLOWOPTIONS » à 0.

Définition des lignes :

Label : nom du label (vu sur clonezilla)

MENU DEFAULT : IMPORTANT : utilisé pour la configuration du boot via clonezilla

MENU HIDE : pareil

Menu label : nom du label vu sur le menu de boot pxe

Memdisk : utilisation de la mémoire du client pour charger l’image

Boot_xp.img : image à chargée

TEXT HELP/ENDTEXT : compléments d’aide lors de la sélection du label dans le menu pxe.

Pour changer le timeout du menu, il faut modifier timeout (40 = 4 secondes). On peut aussi modifier l’image de boot soit en changeant la valeur dans MENU BACKGROUND, soit en remplaçant drblwp.png situé dans /tftpboot/nbi_img/.

Le menu est maintenant configuré, il suffit de lancer ce script après l’avoir enregistré pour prendre en compte les résultats : /opt/drbl/sbin/generate-pxe-menu

Nous pouvons maintenant démarrer une machine en PXE

Utilisation de clonezilla

Voici divers exemples pour utiliser clonezilla (depuis la commande /opt/drbl/sbin/dcs) :

Premier menu :

2 choix sont proposés :

le premier permet de paramétrer une action pour TOUS les clients (c’est-à-dire sur tout le pool dhcp en récupérant les correspondances dans dhcpd.conf)

le second permet de paramétrer une action pour UN ou PLUSIEURS clients

Création de groupe

Il est possible de créer des groupes de MAC/IP pour éviter de sélectionner un à un les postes cibles.

Pour se faire il suffit de créer dans /etc/drbl/ un fichier contenant les adresses MAC ou IPs cibles.

Groupes par adresses MAC

/etc/drbl/MAC-grp-« nom du groupe »

Contenu (une IP par ligne) :

00:25:XX:XX:XX:XX

00:1c:XX:XX:XX:XX

Groupes par adresses IP

/etc/drbl/IP-grp-« nom du groupe »

Contenu (une IP par ligne) :

192.168.1.1

192.168.1.2

Exemple 1 : sélectionner le démarrage par défaut

Maintenant, si l’on veut que TOUS les postes démarrent automatiquement sur XP, il suffit de sélectionner le mode « All », de se rendre dans l’option « more » => « switch-pxe-menu » => « setdefault »=> cocher « xp ».

Exemple 2 : utilisation du wol (wake-on-lan)

Maintenant soit on démarrer les postes un à un… soit on relance dcs en sélectionnant une fois de plus le mode « All » et en sélectionnant par la suite « Wake-on-Lan ».

Attention lorsque l’on choisit ce paramètre, il reste par défaut même après le redémarrage de la machine. Donc il faut penser à changer la valeur de setdefault après reboot.

Exemple 3 : Backup d’un poste via PXE

Nous allons cette fois ci utiliser le mode « part » avec par la suite, le mode par adresse MAC.

On choisit le poste client à sauvegarder via la touche espace et l’on accepte.

Ensuite, il faut choisir « clonezilla start », suivis de « save-parts » (dans mon cas « save-disk ») et entrer le nom de l’image.

Exemple 4 : Restauration de plusieurs postes en Multicast

Encore une fois, nous allons choisir le mode « Part » .

On choisit les postes à restaurer en cochant avec la touche espace. (les hôtes affichés sont récupérés à partir des réservations IPs faites dans le dhcpd.conf)

Une fois les clients sélectionnés, il faut choisir le mode « clonezilla-start », ensuite au choix entre débutant et expert. Expert permettant de configurer plus d’options tel que la méthode de compression, la priorité des utilitaires à utiliser pour la restauration, etc…

Une fois choisi, il faut sélectionner « restore parts », choisir l’action à faire à la fin du clonage.

A noter : on ne peut faire de restauration sur un disque dur cible qui est plus petit que le disque dur dont provient l’image. Par ailleurs, il est possible de faire une restauration sur un disque dur plus grand que le disque dur source (clonezilla va s’occuper de redimensionner le MBR source afin que la taille de la table des partition soit proportionnelle à la taille du disque dur cible).

ensuite choisir le déploiement en multicast et le mieux est de choisir l’option ci-dessous :

clients-time-to-wait

Elle permet de spécifier un nombre de client cibles ainsi qu’un délai max avant le début du déploiement.

Imaginons que l’on veuille déployer une image sur 20 postes et que l’on mette un délai d’attente de 30 secondes : Si au bout de 30 secondes à partir du moment où le premier poste se connecte, les 20 postes connectés ne sont pas atteint, la restauration commence.

Lorsque la restauration est terminée, une notification est envoyée sur le Shell afin de prévenir l’état de la restauration.

Future mises à jour Clonezilla/Debian

Attention, pour les futures mises à jour clonezilla ou lorsque l’on veut mettre en place un nouveau kernel (via /opt/drbl/sbin/drblsrv –i), il faut faire une sauvegarde du script de génération de menu, de l’image splashboot ainsi que des images grub.

 

L’administration d’un parc informatique important peut devenir une tâche ardue si le nombre de postes de travail est important ou s’ils sont répartis sur une zone géographique vaste.

Dans ce cas, vous avez 2 solutions majeures :

  • Le réseau « basket » : à l’aide d’une clé USB, d’un partage réseau et d’une bonne paire de chaussures de sports, votre rôle sera de vous connecter sur chaque poste de travail et de réaliser l’installation manuelle. J’oubliais que vous pouviez aussi vous connecter en prise de main à distance 🙂
  • Packager votre application et la proposer au déploiement : cette solution sera étudiée ci-dessous

1. Installation d’une application : description

L’installation d’une application se fait via l’exécution d’un programme exécutable (.exe) qui réalise différentes opérations :

  • Base de registre : ajout/modification de clés et de valeurs
  • Système de fichiers : ajout de fichiers selon une arborescence
  • Base de données de configuration logicielle Microsoft : ajout des informations sur l’application dans la base de données (Panneau de configuration/Ajout-suppression de programmes)

L’application se charge également de valider les pré-requis :

  • architecture CPU,
  • espace disque,
  • mémoire vive,
  • version d’IE,
  • version de .NET,

2. Pré-requis : le poste de travail source

Afin de packager l’application cible, vous devez vous appuyer sur un poste de travail type. Ce poste de travail doit contenir toutes les applications standards de votre entreprise, être intégrée à votre domaine Active Directory et connectée à votre réseau.

Vous devez être administrateur local de ce poste de travail.

Il doit également posséder 2 applications :

  • regshot : disponible ici
  • MSI Studio Pro : disponible ici

Votre poste de travail source peut également être, et je vous le conseille, une machine virtuelle.
Dans ce cas, avant toute modification, vous activerez les snapshots. Cette opération vous permettra de revenir facilement en arrière et retrouver un poste de travail source propre.

3. Cliché pré-installation de la base de registre

  1. Fermer toutes les applications ouvertes
  2. Exécuter l’application regshot.exe
    regshot1
  3. Ajouter un commentaire, ici : « Shot 1 : Application TEST »
  4. Cliquer sur le bouton <1st shot>, <Shot and save>
  5. Enregistrer le résultat dans un fichier, ici : TEST-Shot-1.hiv
  6. Fermer l’application

4. Installation de l’application cible

Installez votre à application.

Lors de l’installation, veillez tout de même à noter les différents chemins d’installation, les modifications réalisées sur l’arborescence du Menu Démarrer et les modifications apportées sur le bureau.

TESTEZ VOTRE NOUVELLE APPLICATION

5. Cliché post-installation de la base de registre

  1. Fermer toutes les applications ouvertes
  2. Exécuter l’application regshot.exe
    regshot1
  3. Ajouter un commentaire, ici : « Shot 2 : Application TEST »
  4. Cliquer sur le bouton <1st shot>, <Load> et sélectionner le fichier TEST-Shot-1.hiv
    regshot2
  5. Cliquer sur le bouton <2nd shot>, <shot>
    regshot3
  6. Cliquer sur le bouton <cOmpare>
    RegShot ouvre alors un fichier txt contenant les différences entre les 2 clichés. On y trouve en outre les clés et les valeurs ajoutées/modifiées/supprimées
  7. Enregistrer ce fichier résultat
  8. Fermer l’application

6. Packager l’application

  1. Ouvrez l’application MSI Studio Professional
  2. Sélectionnez « Create a New Setup Installation for a Sofware Program »
  3. Sélectionnez « Windows Template » puis cliquez sur « Open the new project directly »
  4. Configuration du projet (* = Obligatoire)
    Product Details – Name (*): saisissez le nom de l’application tel qu’il apparaitra sur le poste de travail
    Product Details – Version (*): saisissez le numéro de version
    Product Details – Manufacturer (*): saisissez l’éditeur du programme
    Product Details – Default Directory (*): sélectionnez le dossier de destination par défaut
    General Information – Title :
    General Information – Subject :
    General Information – Author : saisissez l’auteur du projet, c’est à dire vous
    General Information – Keywords :
    General Information – Comments :
    General Information – Package Code (*): cliquez sur le bouton <Create>, pour générer un identifiant unique
  5. Support et panneau de configuration
    Dans la zone « Add or Remove Programs », vous pouvez paramétrer l’intégration de votre nouvelle application dans le Panneau de configuration-Ajout/suppression de programmes de Windows.
    Les informations de support sont fortement recommandées. Support Information – Contact :  nom du chef de projet responsable de cette application
    Support Information – Phone Number : numéro de téléphone de votre centre de service ou de votre équipe support niveau 1
    Support Information – Support URL : URL d’accès à la page Web de support de votre application
  6. Applications Requirements
    Sélectionnez ici (si nécessaire) les versions minimales nécessaires à la bonne exécution de votre programme

    • Windows 9x
    • Windows NT
    • Internet explorer
    • .Net framework

    Sélectionnez ensuite (si nécessaire) les applications (fichiers .exe) nécessaires à la bonne exécution de votre programme cible.

    Si votre cible requière le framwork .Net, spécifiez le mode d’installation :

    • Run the .NET MSI from a UNC network or local path : si vous disposez d’un partage réseau contenant le fichier d’installation
    • Store the .NET Framework within the package : si vous souhaitez intégrer le pacage d’installation .NET dans votre propre package
  7. Installation Properties
    Configurez ici votre méthode d’installation (redémarrage, …)
  8. Files and Registry ( <— C’est ici que vous ajoutez les fichiers, registre et autres variables d’environnement de votre future application)
    1. Filesmsi1
      A partir de l’onglet « System View », sélectionnez le dossier d’installation de votre application source
      A partir de l’onglet « Project View », sélectionnez le dossier de destination
      Cliquez sur le bouton <Add Folder>
    2. Registry
      A partir du fichier issu de RegShot, sélectionnez les clés et les valeurs à ajouter
  9. Shortcuts and Other Items
    1. Shortcuts : ajoutez ici la création de raccourcis
    2. INI Files : ajoutez ici la création de fichier INI spécifique ou modifiez un fichier INI existant
    3. Environnement variables : ajoutez/modifiez des variables d’environnement (Poste de Travail/Propriété/Avancé/Variable d’environnement)
    4. Service Management : déterminez ici l’exécutable à configurer en tant que service et gérez son mode de démarrage
  10. Dialogs and Actions

    1. Dialogs : ici, vous pouvez ajouter/modifier les boites de dialogue prédéfinies dans l’application. En effet, un fichier MSI, tel une application, communique avec son utilisateur (licence, path, …).
    2. Dialog Sequencing : le séquencement des boites de dialogue peut être configuré
  11. A vos marques, prêts, …., packagez et testez
    Ctrl+B

7. Ajouter votre fichier MSI pour déploiement sur votre parc

Cette section est ou sera abordée dans l’article « Implémentation GLPI »

1. Pré-requis

ssh étant un protocole sécurisé, il faut impérativement que la clé publique du certificat d’identification du serveur maître soit recopié sur chaque serveur fils, pour que la connexion puisse s’effectuer sans saisie de mot de passe.
A noter qu’on peut rapidement déployer la clé publique sur les serveurs fils en utilisant ce script :
scp id_svocs.pub $1:/root/
ssh $1 "cat /root/id_svocs.pub >>/root/.ssh/authorized_keys"
qui va s’utiliser ainsi :
/root/majiddsapub nom_du_serveur
Il faudra simplement taper deux fois le mot de passe de root pour réaliser l’opération.
Bon, okay, vous avez accès à la commande : ssh-copy-id
ssh-copy-id -i ~/.ssh/id_dsa.pub user@machine

2. Création d’un script

2.1 Stockage des scripts

Il est toujours intéressant de pouvoir s’y retrouver, surtout au bout de quelques mois d’intervention. Voici un exemple d’arborescence mise en œuvre :
 /root/scripts : racine des scripts. On stocke ici les fichiers contenant les listes de serveurs à traiter (on peut avoir plusieurs listes selon les opérations à effectuer).
 /root/scripts/20090304/ dossier contenant les scripts créés le 4 mars 2009. On y retrouvera au minimum le script maître, par exemple : script. On pourra également trouver le script qui doit s’exécuter sur les serveurs distants : scriptdistant.

2.2 Liste des serveurs

Dans un fichier texte, insérer la liste des serveurs, avec une ligne par serveur. Ne pas laisser de ligne vide. Utiliser de préférence les noms dns, qui garantissent un accès dans tous les cas de figure aux serveurs distants.

2.3 Script serveur

Voici un exemple de script, qui peut être adapté en fonction des besoins :
 
# Mise a jour de la liste des rpm
for serveur in $(cat ../listeserveurs)
do
echo "serveur en cours de traitement : "$serveur
scp /root/majlisterpm $serveur:/root/
scp scriptdistant $serveur:/root/
ssh $serveur /root/scriptdistant
done
Ce programme va recopier le fichier /root/majlisterpm sur chaque serveur, le fichier scriptdistant, puis va exécuter le fichier scriptdistant préalablement recopié.
Ne pas oublier de rendre exécutable le script :
chmod +x script

3. Utilisation de dsh

dsh est un utilitaire qui permet de réaliser ce que fait le script précédent, à savoir générer les commandes pour un ensemble de serveurs.
La syntaxe est simple :
dsh  [-m machinename | -a | -g groupname] [-r remoteshellname] [-c | -w | -i | -F forklimit ] -- commandline
 m : permet d’indiquer sur quelle(s) machine(s) doit être exécuté le script (nom des machines séparées par une virgule)
 a : exécute le script sur toutes les machines déclarées dans le fichier /etc/dsh/machines.list
 g : exécute le script pour le groupe de machines décrit dans /etc/dsh/group/nomgroupe (équivalent au fichier listeserveurs ci-dessus)
 f listeserveurs : exécute le script pour le groupe de machines décrit dans le fichier indiqué (pas forcément dans /etc/dsh/group/)
 r : par défaut, dsh va exécuter les scripts en utilisant rsh. Il est possible de forcer l’exécution avec ssh, par exemple, en utilisant cette option. Ce paramètre peut également être modifié par défaut dans le fichier /etc/dsh/dsh.conf
 c : exécute les commandes en parallèle sur l’ensemble des machines
 w : attend que le traitement sur une machine soit terminé avant d’entamer le travail sur la machine suivante
 i : quand l’exécution est demandée sur plusieurs machines en parallèle (option -c), crée autant de processus que de machines traitées
 F : idem que -c, mais en limitant le nombre de traitements parallèles
 v : mode verbeux
 q : mode silencieux
Ainsi, le script précédent va pouvoir prendre la forme suivante :
dsh -f ./listeserveurs -r ssh /root/scriptdistant

3.2 Script distant

On écrit le script qui va s’exécuter sur le serveur distant. Dans notre exemple, on va programmer l’exécution de majlisterpm une fois par semaine :
cat scriptdistant
if test ! -e /etc/cron.weekly/majlisterpm
then
ln -s /root/majlisterpm /etc/cron.weekly/majlisterpm
fi
Ne pas oublier de rendre le script exécutable :
chmod +x scriptdistant
Autre exemple, pour modifier le compte d’envoi des messages systèmes dans le fichier /etc/postfix/aliases :
cat scriptdistantpostfix
cp /etc/postfix/aliases /etc/postfix/aliases.old
sed s/^root:.*$/"root: manouvelleadressemel@mondomaine.com"/ /etc/postfix/aliases.old > /etc/postfix/aliases

3.3 Exécution du script

Il suffit de lancer l’exécution du script :
./script
Mise en place de l’enregistrement du résultat de l’exécution
Par défaut, tous les messages d’exécution s’afficheront sur la console. Si on veut enregistrer le résultat des commandes, il suffit de modifier le script en redirigeant toutes les commandes vers un fichier log, qu’on pourra alors consulter tranquillement…
Par exemple :
$log = /var/log/script.log
`date` > $log
# Mise a jour de la liste des rpm
for serveur in $(cat ../listeserveurs)
do
echo "serveur en cours de traitement : "$serveur >> $log
scp /root/majlisterpm $serveur:/root/ 1>>$log 2>>$log
scp scriptdistant $serveur:/root/ 1>>$log 2>>$log
ssh $serveur /root/scriptdistant 1>>$log 2>>$log
done
echo "fin de traitement a " `date` >>$log