Kerberos Services pour utiliser Spectacle stencils et les fichiers de configuration doivent être appliquées.
Pour la gestion est une boîte à outils Spectacle de nombreux systèmes. Spectacle sur, l'application Oracle Solaris est géré par SMF.
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
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.
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.
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.
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