Gestión de los servicios del sistema en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Julio de 2014
 
 

Ejemplos de servicio de cliché en Oracle Solaris

Servicios para Puppet y Kerberos para utilizar clichés para proporcionar archivos de configuración.

Servicio de cliché Puppet

Puppet es un kit de herramientas para gestionar la configuración de varios sistemas. En Oracle Solaris, la aplicación Puppet es gestionada por SMF.

Vista de alto nivel de servicios Puppet

Al instalar el paquete system/management/puppet, obtiene dos instantáneas de servicio SMF: puppet:master y puppet:agent. De manera predeterminada, estas instancias están desactivadas.

Después de activar estas instancias, el siguiente comando muestra los servicios de contrato puppet:master y puppet:agent.

$ 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

El siguiente comando muestra un poco más de información sobre los procesos iniciados por los servicios de contrato:

$ 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

Como sugirió la salida ps, puppet escribe los archivos log en /var/log/puppet:

$ ls /var/log/puppet
puppet-agent.log  puppet-master.log
Archivo de configuración Puppet inicial

Puppet espera utilizar un archivo de configuración denominado /etc/puppet/puppet.conf. La aplicación /usr/sbin/puppet lee información de configuración de /etc/puppet/puppet.conf y no de propiedades definidas en las instancias de servicio application/puppet. Para proporcionar el archivo de configuración requerido, cada instancia puppet proporciona un archivo de cliché y un grupo de propiedades configfile. El grupo de propiedades configfile le indica a la utilidad svcio que ejecute y cree el archivo de configuración especificado. El archivo de cliché se utiliza para escribir datos de valores de propiedad de servicio en el archivo de configuración en el formato correcto.

El siguiente comando muestra todas las propiedades de servicio puppet que están en un grupo de propiedades de tipo configfile. Esta salida muestra que ambas instancias del servicio puppet tienen las mismas propiedades configfile con los mismos valores. Cada instancia de servicio puppet proporciona la ruta al archivo de configuración, el modo del archivo de configuración y la ruta al archivo de cliché.

$ 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

Los siguientes comandos confirman que estas propiedades de instancia se heredan del servicio principal.

$ 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

Para la infraestructura, es posible que necesite instancias puppet:agent1 y puppet:agent2, por ejemplo. En ese caso, debe personalizar los valores de propiedad y agregar propiedades para cada instancia como se muestra en Modificación del archivo de configuración Puppet.

A continuación, se muestra el contenido inicial del archivo de configuración, /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.
Archivo de cliché Puppet

El contenido del archivo de cliché le indica qué propiedades y qué otra información se escriben en el archivo de configuración. La ruta puppet.stencil que es el valor de la propiedad puppet_stencil/stencil se relaciona con /lib/svc/stencils. A continuación se muestra el contenido del archivo de cliché, /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} }
}
}

En el archivo de cliché, svc:/$%s:(.*)/:properties (o %1) se expande a svc:/application/puppet:agent/:properties y svc:/application/puppet:master/:properties, donde .* (o %2) coincide con cada instancia. El nombre de la instancia es luego utilizada para etiquetar el bloque en el archivo de configuración. La siguiente incidencia de .* (o %3) coincide con cada propiedad en el grupo de propiedades config para la instancia de servicio %1. El cliché le indica a svcio escribir el nombre propiedad y el valor de esa propiedad de la instancia de servicio al archivo de configuración.

Modificación del archivo de configuración Puppet

Como puede ver en Archivo de configuración Puppet inicial, inicialmente sólo las líneas de comentario literal se escriben en el archivo de configuración. La escritura de valores de propiedad en el archivo de configuración es evitada por la evaluación del valor de la propiedad general/enabled en el archivo de cliché. El siguiente comando muestra que, de manera predeterminada, el valor de la propiedad general/enabled es falso:

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

El uso del comando svcadm enable para activar la instancia no cambia el valor de la propiedad general/enabled. Al cambiar el valor de la propiedad general/enabled a true y reiniciar la instancia, todas las propiedades en el grupo de propiedades config para esa instancia se escriben en el archivo de configuración.

$ 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

El siguiente comando muestra que inicialmente la única propiedad en el grupo de propiedades config es la ruta al archivo log para cada instancia:

$ 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 propiedad config para la instancia activada ha sido agregada al archivo de configuración en un bloque etiquetado con el mismo nombre de instancia:

# 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 documentación de configuración Puppet indica que el archivo de configuración puede tener los bloques [main], [agent] y [master]. La configuración en el bloque [main] se aplica al agente y al elemento principal. Para el agente Puppet, la configuración en el bloque [agent] sobrescribe la misma configuración en el bloque [main]. Para el elemento principal Puppet, la configuración en el bloque [master] sobrescribe la misma configuración en el bloque [main]. Si desea proporcionar un bloque [main] para una configuración que sea común tanto al agente y al elemento principal, cree una instancia puppet:main y las propiedades config apropiadas para esa instancia.

Los comandos siguientes muestran cómo agregar la configuración al archivo de configuración Puppet.

$ 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

Se pueden utilizar comandos similares para eliminar propiedades y cambiar los valores de propiedad. Consulte Chapter 4, Configuración de servicios. Para agregar una instancia main, utilice el comando svccfg add como se muestra en Agregación de instancias de servicio.

Servicio de cliché Kerberos

Otro ejemplo de un servicio Oracle Solaris que utiliza un cliché es Kerberos. El siguiente comando muestra que el grupo de propiedades configfile es krb5_conf, el archivo de cliché es /lib/svc/stencils/krb5.conf.stencil y el archivo de configuración es /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