Script via nim

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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.

Voir aussi