"Después del juego es antes del juego"
Sepp Herberger

miércoles, 24 de abril de 2024

Puppet: regla para instalar el paquete linux-headers del kernel actual.

Tras migrar a Xubuntu 22, quería instalar mediante puppet en los infolab el driver "nvidia-driver-390" y "nvidia-dkms-390". Estos paquetes necesitan que se haya instalado previamente el paquete linux-headers-xxx correspondiente al kernel que corre actualmente el sistema operativo.

El problema es que ninguno ambos paquetes instala linux-headers y, para mas inri, si no lo encuentran lo que sucede es que falla lo instalación. Tenemos que instalar nosotros a mano previamente el linux-headers-xxx y luego los nvidia-tal-390. Como odio hacer a mano cosas que son automatizables he encontrado la manera de instalarlo todo de un tirón usando puppet. Las reglas serían:
...
   # Facter $kernelrelease => 5.15.0-105-generic
  $kernel=regsubst($kernelrelease,'-generic', '', 'G') # Quitamos -generic y queda "5.15.0-105"
  
  package {"linux-headers-$kernel" : ensure =>installed }
  package {"nvidia-driver-390" : ensure =>installed }
  package {"nvidia-dkms-390" : ensure => installed }
  ....
Explicación: el problema es saber desde puppet que versión de los linux-headers tenemos que instalar. El truco está en usar el facter $kernelrelease, que nos devuelve el kernel instalado en la forma "xxx-generic". Si quitamos la parte "-generic" (con la función de puppet "regsubst") nos quedará la versión del kernel, que unida a "linux-headers-" nos permitirá instalar el paquete correcto. Voilà!

No hay comentarios:

Publicar un comentario