Algo de Linux: julio 2016

lunes, 25 de julio de 2016

Chocolatey: Un gestor de paquetes tipo apt-get para Windows

En mayo de 2014 publiqué un post en el que os hablaba de Chocolatey. Hoy tan sólo voy a publicarlo actualizado de manera que refleje los cambios en la sintaxis que se han efectuado en la herrmaienta.

Todos los que administramos principalmente máquinas Linux, echamos de menos un gestor de paquetes que nos permita instalar programas en Windows del mismo modo que lo hacemos en Linux: Usando un comando y sin tener que rebuscar entre montones de webs.

A raiz de impartir el curso de Administración centralizada de equipos mediante Puppet en la Escuela de Administración Pública de Extremadura, he profundizado bastante en el tema y había barajado, entre otras opciones, usar Puppet para gestionar también las máquinas Windows, pero no me acababa de convencer porque la versión de Puppet para Windows no está tan desarrollada como la de Linux. Pero si instalamos Puppet y lo complementamos con Chocolatey, la cosa mejora sustancialmente.

Teniendo en cuenta que Chocolatey va a poner a nuestra disposición más de 1.800 paquetes de software libre y/o gratuito para Windows que podremos instalar fácilmente mediante un sólo comando, estoy plenamente convencido de que sería de gran utilidad no sólo para administradores, sino también para usuarios, que muchas veces instalan sin saberlo malware al descargar programas desde determinadas webs que lo incluyen como regalito. 

Instalar Chocolatey en Windows es muy sencillo:

Abrid un terminal de comandos (cmd) y ejecutad el siguiente comando:
C:\> @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
Una vez instalado, lo primero que os recomiendo hacer es no cerrar el terminal y consultar la ayuda del comando:
C:\> choco /?
Veréis que es muy sencillo de utilizar: Por ejemplo, supongamos que queremos comprobar si el paquete vlc se encuentra en la galería de paquetes de Chocolatey:
C:\> choco search vlc
Si se encuentra disponible, nos mostrará también la versión. Una vez comprobado que el paquete existe, podemos instalarlo de la siguiente manera:
C:\> choco install vlc
Existe una forma abreviada del comando "choco install": cinst. Si queréis instalar el paquete anterior usando la forma abreviada, podríais hacerlo así:
C:\> cinst vlc
Si ya tenéis un paquete instalado y lo que queréis es actualizarlo:
C:\> choco upgrade vlc

Si echáis un vistazo a la lista de paquetes disponibles, veréis que podréis instalar el software de uso más frecuente mediante Chocolatey:
https://chocolatey.org/packages
Publicado por primera vez en http://enavas.blogspot.com.es

sábado, 16 de julio de 2016

Terminada la colocación de servidores y switch en rack

Ya he terminado la colocación en un rack de los cuatro servidores que tengo actualmente en funcionamiento:
  • Servidor principal HP Proliant.
  • Réplica del servidor principal en servidor secundario HP Proliant.
  • Firewall PfSense para dar servicio a clientes inalámbricos en una VLAN y a equipos de Infolab en otra.
  • Servidor de almacenamiento y multimedia con OpenmediaVault y Mediagoblin.
Y la verdad es que la cosa ha quedado bastante curiosa y sobre todo funcional a la hora de trabajar. 

Así es como  estaba montado antes:




Y así es como ha quedado ahora:


He tenido que dejar los SAI's fuera del rack porque no caben dentro, pero ha quedado bastante bien.

He conectado un switch KVM para gestionar todos los equipos mediante un solo teclado y una única pantalla.

Además, como tengo dos SAI's, he vuelto a conectar cada uno a una línea de corriente diferente y he repartido los servidores y el switch entre ambos con una particularización: Como cada servidor HP tiene dos fuentes de alimentación he conectado cada fuente a un SAI diferente. De este modo, si una línea de corriente falla, la otra seguirá alimentando ambos servidores HP.

Mil gracias a Antonio Berrocal por proporcionarme el rack!!
Publicado por primera vez en http://enavas.blogspot.com.es

Error chroot failed to run command ‘/bin/bash’ exec format error

Suelo utilizar clonezilla tanto para crear imágenes, como para restaurarlas o solucionar problemas. De hecho tengo creada una entrada que me permite iniciar un terminal sin pasar por el asistente de clonezilla.
En ocasiones, monto el sistema del disco duro y hago un chroot para realizar modificaciones que requieren que el sistema esté corriendo. Pues bien, si hacéis ésto y obtenéis un error como el siguiente:
chroot failed to run command ‘/bin/bash’ exec format error

Probablemente sea porque no coincide la arquitectura del sistema con la arquitectura de clonezilla que estáis usando. Y al igual que con clonezilla, nos sucederá también con otros live CD/DVD. 

Así que si queréis hacer un chroot, no olvidéis tener en cuenta que coincida la arquitectura del live CD/DVD con la arquitectura de vuestro sistema.
Publicado por primera vez en http://enavas.blogspot.com.es

Evitar que network manager controle nuestras interfaces de red

Hay ocasiones en las que puede interesarnos tener instalado Network Manager y, al mismo tiempo, evitar que controle nuestras interfaces de red automáticamente.

Si os fijáis en el fichero de configuración /etc/NetworkManager/NetworkManager.conf de nuestros equipos Xubuntu, veréis que tienen algo así:            
[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

[ifupdown]
managed=false
Como podéis ver, tenemos activado el plugin ifupdown:
[main]
plugins=ifupdown,keyfile,ofono
Y en la configuración de dicho plugin, le decimos a Network Manager que ignore todas las interfaces definidas en /etc/network/interfaces:
[ifupdown]
managed=false
Bien. Pues si cogemos uno de nuestros servidores LTSP, que tienen 4 interfaces de red y sólo configuramos una de las interfaces de red (eth3) porque ya no tenemos thinclients, el resto de interfaces (eth0, eth1 y eth2) serán gestionadas por Network Manager, lo que puede ocasionarnos algún problema si nos olvidamos de este detalle.
Mi recomendación es definir todas las interfaces ethernet en el fichero de configuración para que Network Manager no las gestione y configurar las que no utilicemos como conexiones manuales. Un ejemplo: /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth3
iface eth3 inet dhcp

iface eth2 inet manual
iface eth1 inet manual
iface eth0 inet manual

Publicado por primera vez en http://enavas.blogspot.com.es

Clonación de equipos en modo multicast con DRBL

Algunos compañeros me han preguntado por el procedimiento de clonación que he seguido con los miniportátiles para migrarlos a Ubuntu.

Básicamente he utilizado un switch no gestionable y un miniportátil que tenía a mano junto con un pendrive donde tengo montado clonezilla+drbl+rescatux:


En la última versión de la iso de clonezilla+drbl+rescatux he incluído dos scripts:

Publicado por primera vez en http://enavas.blogspot.com.es

viernes, 15 de julio de 2016

Script para hacer limpieza de paquetes en Ubuntu

Para hacer limpieza de paquetes en Ubuntu, podemos utlizar el siguiente script: /usr/local/sbin/limpiapaquetes
sudo apt-get -f install &&
sudo dpkg --configure -a &&
sudo apt-get -y remove --purge $(dpkg -l| grep ^rc | awk '{print $2}') &&
sudo apt-get autoremove &&
sudo apt-get -y autoclean &&
sudo apt-get -y clean
Publicado por primera vez en http://enavas.blogspot.com.es

sed: Borrar la línea que contenga un patrón y la siguiente

Cuando inserto la llamada a un script en /etc/rc.local, tengo la costumbre de añadir una línea en blanco a continuación mediante \n. Así, cuando quiero borrar la llamada al script, tengo que borrar dicha llamada y la línea siguiente.

Es muy sencillo buscar un patrón y hacer un tratamiento con la línea que contiene el patrón y otras líneas consecutivas. Por ejemplo:

Podemos usar sed con los comandos N y d en un bloque { } de la siguiente manera:
# sed -e '/patrón buscado/ { N; d; }'

Para cada línea que incluya el patrón, se ejecutará el código entre { }.
N toma la siguiente línea a la que contiene el patrón y se aplica el comando d sobre el conjunto, que borra la línea que contiene el patrón y la siguiente.

Siguiendo con el ejemplo:
# grep "/usr/local/bin/conectarwifi" /etc/rc.local && sed -i '/\/usr\/local\/bin\/conectarwifi &/ { N; d; }' /etc/rc.local
Publicado por primera vez en http://enavas.blogspot.com.es

Desactivar Fast boot en HP ProDesk 600 G2

Podemos desactivar el Fast boot en los equipos ProDesk 600 G2 desde el menú:
Boot options -> Fast boot: Disabled
Publicado por primera vez en http://enavas.blogspot.com.es

BIOS HP ProDesk 600 G1 Small Form Factor PC

Las actualizaciones de la BIOS de nuestros SIATIC (HP ProDesk 600 G1 Small Form Factor PC) se encuentran disponibles en la siguiente URL:
http://h20565.www2.hp.com/hpsc/swd/public/readIndex?sp4ts.oid=5387448&swLangOid=8&swEnvOid=4192

Nuestros equipos vienen con la versión v02.65 Rev.A de 11 Aug 2015.

Existe una nueva versión v02.68 Rev.A de 13 May 2016, por si tuviérais que actualizarla.
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 13 de julio de 2016

linex-ubuntu-puppet 2.0

He vuelto a rectificar a mano el paquete linex-ubuntu-puppet para modificar el tipo de máquina x360 para cambiarlo por notebookHP. 

El problema es que empezamos a usar el tipo x360 para los portátiles HP x360 y desde la sección han decidido utilizar el tipo notebookHP.

productname  tipo
"HP ProDesk 600 G2 SFF" infolab
"HP ProDesk 600 G1 SFF" siatic
"HP x360 310 G2 PC" notebookHP
"HP ProBook 4510s" HP-Probook
"P5Q DELUXE" Telefonica
"8317KLG"|"8317KHG" ibm
"8317KLG"|"TravelMate 5735Z"  Travelmate
"G41MT-S2" workstation
"A0532h" notebookACER
"N148P" notebookXTREM
"To be filled by O.E.M."                notebookAPD
(en cualquier otro caso) otros

Publicado por primera vez en http://enavas.blogspot.com.es

lunes, 11 de julio de 2016

Portátiles HP x360: No existe ninguna clave pública disponible para los siguientes identificadores de clave: 1397BC53640DB551

Al actualizar un portátil HP x360 he visto que me daba el siguiente error: 
W: No existe ninguna clave pública disponible para los siguientes identificadores de clave: 1397BC53640DB551 
Eso es porque le falta la clave del repositorio de Google. Lo único que tenemos que hacer es descargarla y añadirla al anillo de claves:
# wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - Publicado por primera vez en http://enavas.blogspot.com.es

Esquema de particiones notebook HP x360

Los portátiles HP x360 tienen un disco SSD de 128Gb con las siguientes particiones:
Publicado por primera vez en http://enavas.blogspot.com.es

domingo, 10 de julio de 2016

Identificar el SYSID de nuestros equipos HP Prodesk desde Ubuntu

Entre todo el material recibido tenemos dos tipos de equipos HP de sobremesa:
  • HP Prodesk 600 G1 SFF: SIATIC.
  • HP Prodesk 600 G2 SFF: Infolab.
Para obtener el SYSID de la placa base, en cada uno de los equipos ejecuto:
# dmidecode --type baseboard

SIATIC
root@a26-pro:/home/profesor/ponente# dmidecode --type baseboard
# dmidecode 2.12
SMBIOS 2.7 present.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Hewlett-Packard
Product Name: 18E7
Version: Not Specified
Serial Number: CZC53955BH
Asset Tag: CZC53955BH
Features:
Board is a hosting board
Board is removable
Board is replaceable
Location In Chassis: Not Specified
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0

Handle 0x0007, DMI type 41, 11 bytes
Onboard Device
Reference Designation:  Onboard IGD
Type: Video
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:02.0

Handle 0x0008, DMI type 41, 11 bytes
Onboard Device
Reference Designation:  Onboard LAN
Type: Ethernet
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:19.0

El SYSID es el Product Name, en el caso de nuestro HP Prodesk 600 G1 SFF, 18E7


INFOLAB
root@infolab01-o08:/home/profesor/ponente# dmidecode --type baseboard
# dmidecode 2.12
# SMBIOS entry point at 0x9f9db000
SMBIOS 2.7 present.

Handle 0x000D, DMI type 2, 17 bytes
Base Board Information
    Manufacturer: HP
    Product Name: 805D
    Version: KBC Version 05.09
    Serial Number: PETKD0ACY9F0W7
    Asset Tag:
    Features:
        Board is a hosting board
    Location In Chassis:
    Chassis Handle: 0x0000
    Type: Motherboard
    Contained Object Handles: 0

Handle 0x003D, DMI type 41, 11 bytes
Onboard Device
    Reference Designation: Onboard IGD
    Type: Video
    Status: Enabled
    Type Instance: 1
    Bus Address: 0000:00:02.0

Handle 0x003E, DMI type 41, 11 bytes
Onboard Device
    Reference Designation: Onboard Lan
    Type: Ethernet
    Status: Enabled
    Type Instance: 1
    Bus Address: 0000:00:1f.6

El SYSID es el Product Name, en el caso de nuestro HP Prodesk 600 G2 SFF, 805D
Publicado por primera vez en http://enavas.blogspot.com.es

Puppet: Comprobar la sintaxis de nuestros templates

Podemos comprobar si hemos cometido algún error de sintaxis en nuestras plantillas ERB de la siguiente manera:
erb -x -T '-' <template> | ruby -c 
Publicado por primera vez en http://enavas.blogspot.com.es

Puppet: Comprobar la sintaxis de nuestros ficheros manifests

Puppet nos proporciona una herramienta que podemos utilizar para comprobar si hemos cometido errores de sintaxis en nuestros manifests: puppet paser.
# puppet parser validate .pp
Publicado por primera vez en http://enavas.blogspot.com.es

sábado, 9 de julio de 2016

Puppet: Modificado el tipo definido por el usuario line.pp para añadir definiciones de variables

line.pp es un tipo definido por el usuario que nos permite:
  • Si ensure => present: Garantizar que una línea se encuentre presente en un fichero. Ésta es la opción por defecto.
  • Si ensure => absent: Garantizar que una línea no se encuentre presente en un fichero.
  • Si ensure => comment: Garantizar que una línea se encuentre comentada en un fichero.
  • Si ensure => uncomment: Garantizar que una línea se encuentre descomentada en un fichero.
Para completar este tipo, he añadido una nueva opción ensure => variable que nos va a permitir añadir definiciones de variables en archivos, de tal manera que:
  • Se añada la definición de variable, si no existe.
  • Se modifique el valor de una variable, si ya existe.
  • No se haga nada si la variable y su valor ya están definidos.
Ésto es muy útil para evitar añadir varias veces la definición de una variable, de forma accidental.
define line($file, $line, $ensure = 'present') {
  case $ensure {
     default : { err ( "unknown ensure value ${ensure}" ) }

     present: {
        exec { "/bin/echo '${line}' >> '${file}'":
           unless => "/bin/grep -q '${line}' '${file}'"
        }
     }

     absent: {
        exec { "/usr/bin/perl -ni -e 'print unless /^\\Q${line}\\E\$/' '${file}'":
           onlyif => "/bin/grep -q '${line}' '${file}'"
        }
     }

     uncomment: {
         exec { "/bin/sed -i -e'/${line}/s/^#\+//' '${file}'":
            onlyif => "/bin/grep '${line}' '${file}' | /bin/grep '^#' | /usr/bin/wc -l"
         }
      }

     comment: {
         exec { "/bin/sed -i -e'/${line}/s/^\(.\+\)$/#\1/' '${file}'":
            onlyif => "/usr/bin/test `/bin/grep '${line}' '${file}' | /bin/grep -v '^#' | /usr/bin/wc -l` -ne 0"
         }
     }

     variable: {
        $defvar = split($line, '=')
        $var = $defvar[0]
        $value = $defvar[1]

        exec { "/bin/sed -i 's/'${var}'=.*/'${var}'='${value}'/' '${file}'":
           onlyif => "/bin/grep -q '${var}' '${file}'",
           unless => "/bin/grep -q '${line}' '${file}'"
        }

        exec { "/bin/echo '${line}' >> '${file}'":
           unless => "/bin/grep -q '${var}' '${file}'"
        }
     }
}
}
Sería importante que todos utilizáramos este tipo definido por el usuario cuando queramos definir variables en archivos de configuración, como por ejemplo /etc/escuela2.0.


Publicado por primera vez en http://enavas.blogspot.com.es

linex-ubuntu-puppet 1.9

He vuelto a modificar a mano el paquete linex-ubuntu-puppet para incluir un nuevo tipo de máquina: notebookAPD. Estos maravillosos portátiles no tienen ni tan siquiera definido el productname. En su lugar encontraremos un bonito mensaje: "To be filled by O.E.M."

Los tipos de máquinas definidos por el paquete en función del productname devuelto por facter son los creados por el compañero José Miguel Medina en la tarea puppet xubuntu-tipo, más alguno específico de mi centro:

productname tipo
"HP ProDesk 600 G2 SFF" infolab
"HP ProDesk 600 G1 SFF" siatic
"HP x360 310 G2 PC" x360
"HP ProBook 4510s" HP-Probook
"P5Q DELUXE" Telefonica
"8317KLG"|"8317KHG" ibm
"8317KLG"|"TravelMate 5735Z"  Travelmate
"G41MT-S2" workstation
"A0532h" notebookACER
"N148P" notebookXTREM
"To be filled by O.E.M."                notebookAPD
(en cualquier otro caso) otros

https://mega.nz/#!dx1hHIJL!zUJL3x5176i4xSJONRBnZl3IEOPtfMr9P5XbSewisz4
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 7 de julio de 2016

Script para clonar equipos en multicast mediante DRBL

Aprovechando que iba a modificar el filesystem.squashfs de DRBL para incluir el script cambia-live-media-path y que estoy clonando portátiles usando multicast, he pensado que sería bueno incluir un script de restauración que me facilite la tarea.

De este modo:
  1. Arranco un equipo con el pendrive de Clonezilla+DRBL+Rescatux.
  2. Selecciono DRBL para clonar en modo multicast.
  3. Una vez arrancado DRBL, inicio Clonezilla Server y sigo el asistente de configuración.
  4. Clono los portátiles que haya conectado.
  5. Y cuando tenga que volver a clonar más, tan sólo tengo que modificar el script para especificar el número de equipos que quiero restaurar y el tiempo máximo a esperar antes de iniciar la clonación, si no se ha encendido el número de equipos indicado.
El script es muy sencillo:
#!/bin/bash
drbl-ocs -b -g auto -e1 auto -e2 -r -x -j2 -sc0 -p true --clients-to-wait 15 --max-time-to-wait 300 -l es_ES.UTF-8 startdisk multicast_restore miniportatil-xubuntu-i386 sda
Puedo modificar cualquier parámetro, aunque básicamente modificaré dos:
  • --clients-to-wait 
  • --max-time-to-wait
Publicado por primera vez en http://enavas.blogspot.com.es

Script cambia-live-media-path para "esquivar" el problema de drbl para encontrar su live-media-path

En un post de martes día 5 de julio os comentaba que debía haber un bug porque el que drbl establecía como live-media-path el directorio live de clonezilla en lugar del suyo propio, cuando teníamos clonezilla y drbl en el mismo dispositivo. 

Como no he tenido tiempo ni ganas de ver cómo actúa DRBL para encontrar y establecer el live-media-path, he buscado una solución alternativa:

He creado un script "cambia-live-media-path" y lo he añadido al filesystem.squashfs de DRBL. De este modo, después de ejecutar "Clonezilla Server", no tengo más que lanzar el script para cambiar el live-media-path.

Script cambia-live-media-path:
#!/bin/bash
sed -i 's|live-media-path=.*union|live-media-path=/live union|g' /tftpboot/nbi_img/pxelinux.cfg/default 
Publicado por primera vez en http://enavas.blogspot.com.es

Cambiar configuración de puppet desde la línea de comandos

Normalmente editamos el fichero de configuración /etc/puppet/puppet.conf a mano para establecer ajustes. Pues bien, a partir de la versión 3.2 de Puppet, existe una nueva herramienta que nos permite cambiar la configuración desde la línea de comandos: puppet config set

Ventajas:
  • Realizar la configuración rápidamente sin tener que desplazarnos por el archivo de configuración.
  • Poder realizar configuraciones desde scripts.
Sintaxis:
puppet config set <NOMBRE DEL AJUSTE> <VALOR> --section <SECCION DE CONFIGURACION>

La opción --section nos permite indicar en qué sección de puppet.conf queremos incluir el ajuste (Por defecto, se utiliza la sección main):
  • main
  • master
  • agent
  • user
  • Nombre de environment, si usamos environments.
Por ejemplo, supongamos que queremos cambiar la ordenación por defecto de recursos en puppet:
# puppet config set ordering manifest

Publicado por primera vez en http://enavas.blogspot.com.es

Nuevo módulo puppet para usar como nombre de host el UUID en lugar del FQDN

Como ya comenté en un post anterior, cuando propuse utilizar mi script sinc_puppet en todos los centros, en lugar del que se utiliza actualmente, para hacer un uso menos agresivo de puppet, me comentó Ismael que el motivo por el que se forzaba tanto puppet era lograr actualizar las máquinas, sobre todo teniendo en cuenta que en muchas ocasiones tienen el mismo nombre porque el administrador aún no lo ha cambiado y se desea pasar tareas cuanto antes.

En este caso, mi propuesta fue cambiar la forma de identificar las máquinas, utilizando el UUID en lugar del nombre FQDN. Ésto es algo muy sencillo de lograr mediante un módulo que suministre una plantilla para cambiar el fichero /etc/puppet/puppet.conf, de manera que defina un certname diferente para cada host basado en su uuid.

He estado utilizando este módulo puppet con todas las máquinas y cuando se lo he aplicado a los miniportátiles APD, me he dado cuenta de que ¡todos tienen el mismo uuid! Así que, tendremos que utilizar otro método que consiste en generar un uuid mediante uuidgen:

/etc/puppet/modules/puppet/manifests/init.pp
class puppet {

  package { "uuid-runtime":
     ensure => installed
  }

  $uuidhost = inline_template("<%= `test -x /usr/bin/uuidgen && /usr/bin/uuidgen -t` %>")

  exec { "add_certname":
     command => "sed -i '/server=puppetinstituto/a certname=$uuidhost' /etc/puppet/puppet.conf",
     unless => 'grep "certname=..*$" /etc/puppet/puppet.conf',
     require => Package ["uuid-runtime"]
  }

}
La herramienta uuidgen puede generar un uuid:
  • aleatorio: uuidgen -r
  • basado en tiempo: uuidgen -t
Por defecto, genera un uuid aleatorio.

 https://mega.nz/#!1kEhzQzD!-jaiFOEkjiZZ7jxHyR6U_8xsj1qrJAgrYqOyqPnk6gY

Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 6 de julio de 2016

Actualizar BIOS HP ProDesk 600 G2 System BIOS (N02)

Hay varias formas de actualizar la BIOS de los HP ProDesk 600 G2, como por ejemplo, a través de la red. Ésta es una opción más que interesante cuando tenemos el equipo conectado a internet.

No obstante, en ocasiones, puede sernos de gran utilidad descargar el binario con la imagen de la BIOS desde la web de HP e instalarla de forma local utilizando un pendrive, por ejemplo.

Lo primero que debéis hacer es crear la siguiente estructura de directorios dentro de vuestro pendrive:

Hewlett-Packard/
└── BIOS
    └── New

Podéis descargar  la BIOS desde la siguiente dirección:
http://h20566.www2.hp.com/hpsc/swd/public/detail?sp4ts.oid=7633321&swItemId=vc_164259_1&swEnvOid=4192
Como podréis comprobar, HP nos proporciona la BIOS en archivos exe. 

Una vez descargado el archivo, tan sólo tenemos que descomprimirlo y copiar el fichero .bin a la siguiente ubicación dentro de nuestro pendrive:
Hewlett-Packard/ BIOS/New

Así es como nos quedaría:
Hewlett-Packard/
└── BIOS
    └── New
        └── N02_0214.bin
 
Una vez hecho ésto, introducimos el pendrive con la imagen de la BIOS.

A continuación, no tenemos más que entrar en la BIOS del equipo directamente pulsando F10.

Una vez dentro, nos desplazamos a la opción "Actualizar BIOS del sistema" y seleccionar la opción "Actualizar el BIOS utilizando medios locales".

Se nos mostrará una advertencia de que no apaguemos ni desconectemos la alimentación y veremos dos botones:
  • Actualizar BIOS - 2.xx
  • Cancelar actualización

Pulsamos "Actualizar" y comenzará el proceso:



Cuando termine, el equipo se reiniciará y arrancará el sistema operativo.
Publicado por primera vez en http://enavas.blogspot.com.es

Waiting for network configuration en el arranque de Ubuntu

El problema "Waiting for network configuration" en el arranque de Ubuntu es bastante común y puede ser debido a varias causas. 

En algunos de mis equipos de Infolab me está sucediendo este problema y, como consecuencia, el arranque se demora demasiado.

El fichero /etc/init/rc-sysinit.conf controla la ejecución de los scripts añadidos manualmente o mediante update-rc.d a los tradicionales runlevels en /etc/rc*.
He modificado en este fichero la línea que dice:
# start on (filesystem and static-network-up) or failsafe-boot
Por
start on (filesystem and net-device-up) or failsafe-boot

/etc/init/rc-sysinit.conf
# rc-sysinit - System V initialisation compatibility
#
# This task runs the old System V-style system initialisation scripts,
# and enters the default runlevel when finished.

description "System V initialisation compatibility"
author  "Scott James Remnant "

# start on (filesystem and static-network-up) or failsafe-boot
start on (filesystem and net-device-up) or failsafe-boot
stop on runlevel

# Default runlevel, this may be overriden on the kernel command-line
# or by faking an old /etc/inittab entry
env DEFAULT_RUNLEVEL=2

emits runlevel

# There can be no previous runlevel here, but there might be old
# information in /var/run/utmp that we pick up, and we don't want
# that.
#
# These override that
env RUNLEVEL=
env PREVLEVEL=

console output
env INIT_VERBOSE

task

script
    # Check for default runlevel in /etc/inittab
    if [ -r /etc/inittab ]
    then
 eval "$(sed -nre 's/^[^#][^:]*:([0-6sS]):initdefault:.*/DEFAULT_RUNLEVEL="\1";/p' /etc/inittab || true)"
    fi

    # Check kernel command-line for typical arguments
    for ARG in $(cat /proc/cmdline)
    do
 case "${ARG}" in
 -b|emergency)
     # Emergency shell
     [ -n "${FROM_SINGLE_USER_MODE}" ] || sulogin
     ;;
 [0123456sS])
     # Override runlevel
     DEFAULT_RUNLEVEL="${ARG}"
     ;;
 -s|single)
     # Single user mode
     [ -n "${FROM_SINGLE_USER_MODE}" ] || DEFAULT_RUNLEVEL=S
     ;;
 esac
    done

    # Run the system initialisation scripts
    [ -n "${FROM_SINGLE_USER_MODE}" ] || /etc/init.d/rcS

    # Switch into the default runlevel
    telinit "${DEFAULT_RUNLEVEL}"
end script
Publicado por primera vez en http://enavas.blogspot.com.es

Módulo puppet para usar como nombre de host el UUID en lugar del FQDN

Cuando propuse utilizar mi script sinc_puppet en todos los centros, en lugar del que se utiliza actualmente, para hacer un uso menos agresivo de puppet, me comentó Ismael que el motivo por el que se forzaba tanto puppet era lograr actualizar las máquinas, sobre todo teniendo en cuenta que en muchas ocasiones tienen el mismo nombre porque el administrador aún no lo ha cambiado y se desea pasar tareas cuanto antes.

En este caso, mi propuesta fue cambiar la forma de identificar las máquinas, utilizando el UUID en lugar del nombre FQDN. Ésto es algo muy sencillo de lograr mediante un módulo que suministre una plantilla para cambiar el fichero /etc/puppet/puppet.conf, de manera que defina un certname diferente para cada host basado en su uuid:

/etc/puppet/modules/puppet/manifests/init.pp
class puppet {
   file { "/usr/share/linex-ubuntu-puppet/puppet.conf":
          content => template("puppet/puppet.erb")
   }
}

/etc/puppet/modules/puppet/templates/puppet.erb
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post
server=puppetinstituto
pluginsync=false
certname = <%= uuid.downcase %> 

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY
Si os dáis cuenta, el quid de la cuestión está en definir el certname = uuid en minúsculas.

Ahora bien, al pasar este módulo a los miniportátiles APD, me he dado cuenta de que ¡todos tienen el mismo uuid! Así que, utilizaremos otro método de identificación por UUID:
https://enavas.blogspot.com.es/2016/07/nuevo-modulo-puppet-para-usar-como.html
Publicado por primera vez en http://enavas.blogspot.com.es

martes, 5 de julio de 2016

Bug en drbl-live-xfce-2.4.5-18-i686-pae

En la compilación de herramientas que preparé con Clonezilla, DRBL y Rescatux, monté drbl-live-xfce-2.4.5-18-i686-pae.

He observado que hay un bug, al menos en esta versión de drbl live por el que no detecta bien el directorio live de drbl. Y, en  su lugar, detecta el de clonezilla. 
Así que, si tratáis de clonar con drbl no funcionará. Dará un mensaje que dice algo así como que el filesystem no es correcto.

De momento, una vez arrancado drbl y terminado de ejecutar el asistente de configuración, lo que podemos hacer es editar el fichero /tftpboot/nbi_img/pxelinux.cfg/default y modificar la entrada de restauración para que el parámetro live-media-path contenga la ubicación correcta del filesystem de drbl. Por ejemplo: live-media-path=/live
Publicado por primera vez en http://enavas.blogspot.com.es

sábado, 2 de julio de 2016

Paquete linex-ubuntu-puppet 1.8

He vuelto a modificar a mano el paquete linex-ubuntu-puppet para incluir un nuevo tipo de máquina: notebookXTREM.

Los tipos de máquinas definidos por el paquete en función del productname devuelto por facter son los creados por el compañero José Miguel Medina en la tarea puppet xubuntu-tipo, más alguno específico de mi centro:

productname tipo
"HP ProDesk 600 G2 SFF" infolab
"HP ProDesk 600 G1 SFF" siatic
"HP x360 310 G2 PC" x360
"HP ProBook 4510s" HP-Probook
"P5Q DELUXE" Telefonica
"8317KLG"|"8317KHG" ibm
"8317KLG"|"TravelMate 5735Z"   Travelmate
"G41MT-S2" workstation
"A0532h" notebookACER
"N148P" notebookXTREM
(en cualquier otro caso) otros

https://mega.nz/#!ooVx2BhY!T2360DicwKIgY7RVfA8DnutDSFgUgvXHKc1O2rBWvpc
Publicado por primera vez en http://enavas.blogspot.com.es