Installation des systèmes Oracle® Solaris 11.2

Quitter la vue de l'impression

Mis à jour : Juillet 2014
 
 

Création d'un script à exécuter à la première initialisation

Pour savoir quelle source vous pouvez utiliser pour votre script, vous devez savoir quels outils sont installés sur le système client lors de la première initialisation. Le package solaris-large-server est installé par défaut. Si vous avez installé ce package de groupe, vous disposez de Python, bash, ksh et d'autres outils disponibles à la première initialisation. Pour obtenir la liste complète des packages inclus dans le package de groupe solaris-large-server, utilisez la commande pkg contents comme décrit dans la section Etablissement de la liste de tous les packages installables dans un package de groupe du manuel Ajout et mise à jour de logiciels dans Oracle Solaris 11.2 . Si vous souhaitez utiliser une source pour votre script qui n'est pas disponible dans le package solaris-large-server, identifiez le package dont vous avez besoin et spécifiez-le dans le manifeste AI. Pour plus d'informations sur la manière de rechercher les noms d'autres packages que vous êtes susceptible de vouloir installer, reportez-vous à la section Ajout et mise à jour de logiciels dans Oracle Solaris 11.2 .


Conseil  - 
  • N'utilisez qu'un seul script de première initialisation afin d'éviter d'avoir différentes commandes dans différents scripts entrent en conflit.
  • N'effectuez pas de réinitialisation dans le script de première initialisation.

Exemple 13-1  Modèle de script de première initialisation

    Cet exemple montre des opérations qui doivent être effectuées dans tout script de première initialisation.

  • Un script de première initialisation doit charger /lib/svc/share/smf_include.sh afin d'utiliser les définitions telles que des codes de sortie de méthode SMF.

  • Le script doit tester s'il a déjà été exécuté lors d'une initialisation précédente. Si la propriété completed est déjà définie sur true, quittez la méthode start et désactivez temporairement le service.

    La ligne suivante du script obtient la valeur de la propriété completed du groupe de propriétés config dans l'instance de service site/first-boot-script-svc:default et assigne cette valeur à la variable locale completed.

    completed=`svcprop -p config/completed site/first-boot-script-svc:default`

    La ligne suivante du script envoie le code de sortie SMF_EXIT_TEMP_DISABLE à la méthode start du service, avec method_completed en tant que motif court de la sortie et "Configuration completed" en tant que description plus longue du motif de la sortie.

    smf_method_exit $SMF_EXIT_TEMP_DISABLE script_completed "Configuration completed"
  • Un script de première initialisation doit enregistrer une copie de l'environnement d'initialisation qui vient d'être créé par l'installation AI. L'enregistrement d'une copie d'environnement d'initialisation avant que le script de première initialisation ne le modifie permet une récupération facile des éventuels problèmes introduits par le script en effectuant une initialisation dans l'environnement d'initialisation enregistré.

  • Lorsque le script a terminé son travail, il doit définir la valeur de la propriété completed sur true, actualiser le service avec la nouvelle valeur de propriété, quitter la méthode start et désactiver temporairement le service. La commande svccfg permet de définir la propriété completed sur true et la commande svcadm permet d'actualiser le service.

N'oubliez pas que par défaut, sh est ksh93.

#!/bin/sh

# Load SMF shell support definitions
. /lib/svc/share/smf_include.sh

# If nothing to do, exit with temporary disable
completed=

$(svcprop -p config/completed site/first-boot-script-svc:default

)
[ "${completed}" = "true" ] && \
    smf_method_exit $SMF_EXIT_TEMP_DISABLE completed "Configuration completed"

# Obtain the active BE name from beadm: The active BE on reboot has an R in
# the third column of 'beadm list' output. Its name is in column one.
bename=

$(beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'

)
beadm create ${bename}.orig
echo "Original boot environment saved as ${bename}.orig"

# Place your one-time configuration tasks here

# Record that this script's work is done
svccfg -s site/first-boot-script-svc:default setprop config/completed = true
svcadm refresh site/first-boot-script-svc:default

smf_method_exit $SMF_EXIT_TEMP_DISABLE method_completed "Configuration completed"

Conseil  - Utilisez l'option –n pour vérifier la présence d'erreurs de syntaxe dans votre script :
$ ksh -n first-boot-script.sh

Exemple 13-2  Script de première initialisation qui configure plusieurs interfaces IP

Cet exemple montre un script de première initialisation nommé first-boot-script.sh qui configure les adresses sur deux interfaces IP et ajoute une route par défaut.

#!/bin/sh

# Load SMF shell support definitions
. /lib/svc/share/smf_include.sh

# If nothing to do, exit with temporary disable
completed=`svcprop -p config/completed site/first-boot-script-svc:default`
[ "${completed}" = "true" ] && \
    smf_method_exit $SMF_EXIT_TEMP_DISABLE completed "Configuration completed"

# Obtain the active BE name from beadm: The active BE on reboot has an R in
# the third column of 'beadm list' output. Its name is in column one.
bename=`beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'`
beadm create ${bename}.orig
echo "Original boot environment saved as ${bename}.orig"

# Create and configure addresses on two IP interfaces
/usr/sbin/ipadm create-ip net0
/usr/sbin/ipadm create-ip net1
/usr/sbin/ipadm create-addr -a 10.153.125.222/24 net0
/usr/sbin/ipadm create-addr -a 169.254.182.77/24 net1

# Add a default route with net0 as the gateway
/usr/sbin/route add default 10.153.125.1 -ifp net0

# Record that this script's work is done
svccfg -s site/first-boot-script-svc:default setprop config/completed = true
svcadm refresh site/first-boot-script-svc:default

smf_method_exit $SMF_EXIT_TEMP_DISABLE method_completed "Configuration completed"

Une autre utilisation correcte d'un script de première initialisation consiste à utiliser la commande useradd afin de configurer plusieurs utilisateurs initiaux sur le système.