Script via nim
| Fiche express | |
|---|---|
| Domaine | Déploiement de script sur un parc de serveurs |
| Commande | nim -o cust
|
| Contexte | AIX — NIM (Network Install Manager) |
| Voir aussi | NIM (AIX) · Mkuser · Chuser · Pwdadm |
NIM est surtout connu pour les sauvegardes et les mksysb de serveurs, mais il peut
aussi automatiser le déploiement de scripts sur un ou plusieurs serveurs à la fois. On définit
un groupe fonctionnel de machines, puis on lui applique un script de personnalisation ou de
configuration — sans passer par rsh, ssh, rsync ou tout
autre outil de ce genre.
Écriture du script
Le script est à placer dans /NIM/scripts sur le master NIM. Il ne peut pas
recevoir de paramètres : si la procédure doit être paramétrée, il faut écrire un script qui
génère ce script-là.
Exemple concret et éprouvé : la création de comptes locaux sur un grand nombre de serveurs. Le
script ci-dessous crée des comptes dont seuls le nom, l'id, le descriptif et le mot de passe
changent — les créations de comptes elles-mêmes sont codées en dur à la fin du script. À noter
l'astuce du chpasswd pour fixer un mot de passe directement.
#!/bin/ksh
#=============================================================
# adduser via NIM
#=============================================================
mk_user()
{
USER=$1
UID=$2
GECOS=$3
PASS=$4
mkdir -p /home/exploit/$USER
mkuser id=$UID pgrp=staff groups=staff gecos="$GECOS" home=/home/exploit/$USER $USER
chuser registry=files SYSTEM=compat $USER
chuser loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=0 mi
nalpha=4 minother=2 mindiff=2 maxrepeats=2 minlen=6 histexpire=0 $USER
echo "$USER:$PASS" | chpasswd
pwdadm -c $USER
}
ch_user()
{
USER=$1
UID=$2
GECOS=$3
PASS=$4
chuser -a gecos=$GECOS $USER
}
#=============================================================
# section à remplir :
#mk_user USER UID GECOS PASSWORD
#=============================================================
mk_user dupont 2110 "dupont" nemours
mk_user paris 2140 "paris" hilton
mk_user durant 2015 "durant" sortie
Ce script utilise mkuser/chuser/pwdadm — voir ces pages pour le détail des attributs.
Définition du groupe de machines
Si ce n'est pas déjà fait, définir un groupe de machines cible :
nim -o define -t mac_group -aadd_member=superman -aadd_member=batman -aadd_member=wonderwoman serveurs
Si le script ne doit tourner que sur une seule machine, on peut utiliser son nom à la place du nom du groupe.
Définition et allocation de la ressource script
Il faut ensuite définir une ressource de type script en précisant l'emplacement du fichier
(/NIM/scripts/adduser) et un nom de ressource (adduser), puis
l'allouer au groupe :
nim -o define -t script -a server=master -a location=/NIM/scripts/adduser adduser
nim -o allocate -a script=adduser serveurs
Lancement
L'exécution se lance avec nim -o cust :
#nim -o cust serveurs
+-----------------------------------------------------------------------------+
Initiating "cust" Operation
+-----------------------------------------------------------------------------+
Allocating resources ...
Initiating the cust operation on machine 1 of 3: superman ...
Initiating the cust operation on machine 2 of 3: batman ...
Initiating the cust operation on machine 3 of 3: wonderwoman ...
+-----------------------------------------------------------------------------+
"cust" Operation Summary
+-----------------------------------------------------------------------------+
Target Result
------ ------
superman INITIATED
batman INITIATED
wonderwoman INITIATED
Note: Use the lsnim command to monitor progress of "INITIATED"
targets by viewing their NIM database definition.
Le script a été exécuté sur tous les serveurs du groupe défini.