Gestion des services système dans Oracle® Solaris 11.2

Quitter la vue de l'impression

Mis à jour : Juillet 2014
 
 

Exemple de service de pochoir dans Oracle Solaris

Kerberos Services pour utiliser Spectacle stencils et les fichiers de configuration doivent être appliquées.

Spectacle stencil de service

Pour la gestion est une boîte à outils Spectacle de nombreux systèmes. Spectacle sur, l'application Oracle Solaris est géré par SMF.

La vue des Spectacle de haut niveau Services

Lorsque vous installez le package system/management/puppet, vous obtenez deux instances de service SMF : puppet:master et puppet:agent. Ces instances sont désactivés par défaut.

Une fois ces instances activées, la commande suivante montre que puppet:master et puppet:agent sont les deux des services contrats :

$ svcs -p puppet
STATE          STIME    FMRI
online         17:19:32 svc:/application/puppet:agent
               17:19:32     2565 puppet
online         17:19:32 svc:/application/puppet:master
               17:19:32     2567 puppet

La commande suivante indique un peu plus d'informations sur les services de sous-traitance processus lancés par le :

$ ps -o pid,args -p 2565,2567
  PID COMMAND
 2565 /usr/ruby/1.9/bin/ruby /usr/sbin/puppet agent --logdest /var/log/puppet/puppet-
 2567 /usr/ruby/1.9/bin/ruby /usr/sbin/puppet master --logdest /var/log/puppet/puppet

Comme la sortie ps l'indique, puppet écrit vers des fichiers journaux dans /var/log/puppet:

$ ls /var/log/puppet
puppet-agent.log  puppet-master.log
Spectacle Fichier de configuration initiale

Puppet s'attend à utiliser un fichier de configuration appelé /etc/puppet/puppet.conf. L'application /usr/sbin/puppet lit les informations de configuration depuis /etc/puppet/puppet.conf, et non depuis les propriétés ocnfigurées dans les instances de service application/puppet. Afin de fournir le fichier de configuration requis, chaque instance de puppet fournit un fichier pochoir et un groupe de propriétés configfile. Le groupe de propriétés configfile ordonne à l'utilitaire svcio de s'exécuter et de créer le fichier de configuration spécifié. Le fichier est utilisé pour l'écriture stencil de données à partir du service au fichier de configuration des valeurs de propriété dans le format correct.

La commande suivante montre toutes les propriétés du service puppet faisant partie d'un groupe de propriétés du type configfile. Cette sortie indique que les deux instances du service puppet ont les mêmes propriétés de configfile avec les mêmes valeurs. Chaque instance du service puppet fournit le chemin du fichier de configuration, le mode du fichier de configuration et le chemin du fichier pochoir.

$ svcprop -g configfile puppet
svc:/application/puppet:master/:properties/puppet_stencil/mode astring 0444
svc:/application/puppet:master/:properties/puppet_stencil/path astring /etc/puppet/puppet.conf
svc:/application/puppet:master/:properties/puppet_stencil/stencil astring puppet.stencil
svc:/application/puppet:agent/:properties/puppet_stencil/mode astring 0444
svc:/application/puppet:agent/:properties/puppet_stencil/path astring /etc/puppet/puppet.conf
svc:/application/puppet:agent/:properties/puppet_stencil/stencil astring puppet.stencil

Les commandes suivantes confirmer que ces propriétés d'instance sont héritées du service parent.

$ svccfg -s puppet listprop -l all puppet_stencil
puppet_stencil          configfile  manifest
puppet_stencil/mode    astring     manifest              0444
puppet_stencil/path    astring     manifest              /etc/puppet/puppet.conf
puppet_stencil/stencil astring     manifest              puppet.stencil
$ svccfg -s puppet:agent listprop -l all puppet_stencil
$ svccfg -s puppet:master listprop -l all puppet_stencil

En fonction de votre infrastructure, vous pourriez avoir besoin, par exemple, des instances puppet:agent1 et puppet:agent2. Dans ce cas, vous personnalisez les valeurs de propriétés et ajoutez des propriétés pour chaque instance, comme indiqué dans La modification du Spectacle Fichier de configuration.

Voici le contenu initial du fichier de configuration, /etc/puppet/puppet.conf:

# WARNING: THIS FILE GENERATED FROM SMF DATA.
#     DO NOT EDIT THIS FILE.  EDITS WILL BE LOST.
#
# See puppet.conf(5) and http://docs.puppetlabs.com/guides/configuring.html
# for details.
Fichier Spectacle stencil

Le contenu du fichier indique quelle stencil les propriétés et d'autres informations sont écrites dans le fichier de configuration. Le chemin de puppet.stencil qui est la valeur de la propriété puppet_stencil/stencil est par rapport /lib/svc/stencils. Voici le contenu du fichier pochoir, /lib/svc/stencils/puppet.stencil:

# WARNING: THIS FILE GENERATED FROM SMF DATA.
#     DO NOT EDIT THIS FILE.  EDITS WILL BE LOST.
#
# See puppet.conf(5) and http://docs.puppetlabs.com/guides/configuring.html
# for details.
; walk each instance and extract all properties from the config PG
$%/(svc:/$%s:(.*)/:properties)/ {
$%{$%1/general/enabled:?
[$%2]
$%/$%1/config/(.*)/ {
$%3 = $%{$%1/config/$%3} }
}
}

Dans le fichier pochoir, svc:/$%s:(.*)/:properties (ou %1) s'agrandit pour donner svc:/application/puppet:agent/:properties etsvc:/application/puppet:master/:properties, où .* (ou %2) trouve toutes les instances. Le nom de l'instance est ensuite utilisé pour étiqueter ce bloc dans le fichier de configuration. L'occurrence suivante de .* (ou %3) trouve toutes les propriétés du groupe de propriétés config pour l'instance de service %1. Le pochoir ordonne à svcio d'écrire le nom et la valeur de propriété issus de l'instance de service vers le fichier de configuration.

La modification du Spectacle Fichier de configuration

Comme vous pouvez le constater dans Spectacle Fichier de configuration initiale, seules les lignes de commentaires littérales sont écrites vers le fichier de configuration au début. L'écriture de valeurs de propriétés vers le fichier de configuration est bloquée par le test de la valeur de la propriété general/enabled dans le fichier pochoir. La commande suivante indique que par défaut, la valeur de la propriété general/enabled est false :

$ svcprop -p general/enabled puppet
svc:/application/puppet:master/:properties/general/enabled boolean false
svc:/application/puppet:agent/:properties/general/enabled boolean false

L'utilisation de la commande svcadm enable pour activer une instance ne modifie pas la valeur de la propriété general/enabled. Lorsque vous changez la valeur de la propriété general/enabled à true et redémarrez l'instance, toutes les propriétés du groupe de propriétés config de cette instance sont écrites vers le fichier de configuration.

$ svccfg -s puppet:agent setprop general/enabled=true
$ svcprop -p general/enabled puppet:agent
false
$ svcadm refresh puppet:agent
$ svcprop -p general/enabled puppet:agent
true
$ svcadm restart puppet:agent

La commande suivante montre qu'initialement, la seule propriété du groupe de propriétés config est le chemin du fichier journal de chaque instance :

$ svcprop -p config puppet
svc:/application/puppet:master/:properties/config/logdest astring /var/log/puppet/puppet-master.log
svc:/application/puppet:agent/:properties/config/logdest astring /var/log/puppet/puppet-agent.log

La propriété config de l'instance activée est ajoutée au fichier de configuration dans un bloc identifié par le nom d'instance :

# WARNING: THIS FILE GENERATED FROM SMF DATA.
#     DO NOT EDIT THIS FILE.  EDITS WILL BE LOST.
#
# See puppet.conf(5) and http://docs.puppetlabs.com/guides/configuring.html
# for details.

[agent]

logdest = /var/log/puppet/puppet-agent.log

La documentation de configuration de Puppet affirme que le fichier de configuration peut comporter des blocs [main], [agent] et [master]. La configuration dans le bloc [main] s'applique à l'agent ainsi qu'au master. Pour l'agent Puppet, la configuration du bloc [agent] prime sur la même configuration dans le bloc [main]. Pour le master Puppet, la configuration du bloc [master] prime la même configuration dans le bloc [main]. Si vous souhaitez fournir un bloc de configuration [main] qui soit commun à l'agent et au master, créez une instance puppet:main et des propriétés config appropriées pour cette instance.

Les commandes suivantes indiquent comment Spectacle pour ajouter à votre fichier de configuration de configuration.

$ svccfg -s puppet:agent
svc:/application/puppet:agent> setprop config/report=true
svc:/application/puppet:agent> setprop config/pluginsync=true
svc:/application/puppet:agent> refresh
svc:/application/puppet:agent> exit
$ svcadm restart puppet:agent
$ cat /etc/puppet/puppet.conf
# WARNING: THIS FILE GENERATED FROM SMF DATA.
#     DO NOT EDIT THIS FILE.  EDITS WILL BE LOST.
#
# See puppet.conf(5) and http://docs.puppetlabs.com/guides/configuring.html
# for details.

[agent]

logdest = /var/log/puppet/puppet-agent.log
pluginsync = true
report = true

Des commandes similaires peuvent être utilisées pour enlever des propriétés et modifier les valeurs de propriété. Reportez-vous au Chapter 4, Configuration des services. Pour ajouter une instance main, utilisez la commande svccfg add comme indiqué dans Ajout d'instances de service.

Service Kerberos stencil

Oracle Solaris un autre exemple d'utilisation de la stencil est service qui utilise un Kerberos. La commande suivante indique que le groupe de propriétés configfile est krb5_conf, le fichier pochoir /lib/svc/stencils/krb5.conf.stencil et le fichier de configuration /etc/krb5/krb5.conf.

$ svcprop -g configfile svc:/system/kerberos/install:default
krb5_conf/disabled boolean true
krb5_conf/group astring sys
krb5_conf/mode integer 644
krb5_conf/owner astring root
krb5_conf/path astring /etc/krb5/krb5.conf
krb5_conf/stencil astring krb5.conf.stencil