Esta pagina se ve mejor con JavaScript habilitado

Gestión servicios en FreeBSD

 ·  🎃 kr0m

La gestión de servicios en FreeBSD resulta muy sencilla gracias al sistema de arranque RC y la herramienta service, en este artículo aprenderemos el funcionamiento básico del sistema de arranque y los comandos mas comunes de service.

Lo primero que debemos saber es que RC es el sistema de arranque de FreeBSD, este ejecuta los scripts localizados en dos directorios:

/etc/rc.d
/usr/local/etc/rc.d

Los servicios se habilitan/deshabilitan desde el fichero /etc/rc.conf o los ficheros contenidos en /etc/rc.conf.d, dependiendo de como gestionemos nuestro sistema nos interesará mas utilizar el fichero o el directorio.

En caso de utilizar sistemas como Puppet / Ansible que sustituyen los ficheros de configuración en vez de editarlos debemos utilizar el directorio, en cambio si la administración es manual resulta mas cómodo utilizar sysrc para habilitar/deshabilitar servicios además de que para revisar la configuración actual tan solo debemos consultar un fichero.

A continuación pongo un ejemplo de como habilitar/deshabilitar el servicio SSH tanto de un modo como del otro:
rc.conf:

sysrc sshd_enable=YES
sysrc sshd_enable=NO

rc.conf.d:

echo "sshd_enable=YES" > /etc/rc.conf.d/sshd
rm /etc/rc.conf.d/sshd


Ahora que ya sabemos como habilitar/deshabilitar servicios podemos proceder con los comandos básicos de service.

Consultar los servicios disponible:

service -e

/etc/rc.d/hostid
/etc/rc.d/zpool
/etc/rc.d/zvol
/etc/rc.d/hostid_save
................
/usr/local/etc/rc.d/nginx
/usr/local/etc/rc.d/node_exporter
/etc/rc.d/sshd
/etc/rc.d/cron
/etc/rc.d/bgfsck

Obtener inforamación del servicio:

service sshd describe

Secure Shell Daemon

Obtener los comandos permitidos por el servicio:
Lo mas rápido es ejecutar un comando que no exista como por ejemplo XXXX.

service sshd XXXX

/etc/rc.d/sshd: unknown directive 'XXXX'.
Usage: /etc/rc.d/sshd [fast|force|one|quiet](start|stop|restart|rcvar|enable|disable|delete|enabled|describe|extracommands|configtest|keygen|reload|status|poll)

Primero nos muestra las opciones entre conchetes y luego los comandos entre paréntesis.

Las opciones tienen el siguiente significado:

fast Do no checking (used during startup).
force Try harder.
one Start this service despite not being enabled in rc.conf.
quiet Only print service name (used during startup).

Y deben ejecutarse conjuntamente con el comando deseado, por ejemplo si queremos arrancar SSH sin que chequee la configuración sería del siguiente modo:

service faststart sshd

Los comandos cumplen con las siguientes funciones:

start Start the service.
stop Stop the service.
restart Stop and restart the service.
rcvar Print the rc.conf variables for this service.
enabled Return true in shell if enabled (for script use).
describe Print service description.
extracommands Show service-specific commands.

El comando rcvar resulta muy útil si queremos arrancar el servicio con algunas opciones especiales desde CLI aunque personalmente prefiero configurar todas las opciones en el fichero de configuración del servicio y dejar el fichero/ficheros rc.conf lo mas limpios posible.

Otro comando interesante es extracommands que nos muestra comandos específicos de este servicio en particular:

service sshd extracommands

configtest keygen reload

Para conocer el propósito de los comandos adicionales debemos consultar el man del servicio en cuestión.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí