Menu Chiudi

Abilitare e registrare la serial console linux grazie alla iLo Virtual Serial Port

Introduzione.

Per i felici possessori di una scheda Hp iLo, sappiate che si può utilizzare la Virtual Serial Port per gestire una console seriale.

Architettura:

Introduzione.

Per i felici possessori di una scheda Hp iLo, sappiate che si può utilizzare la Virtual Serial Port per gestire una console seriale.

Architettura:

  • iLo sul server che si vuole monitorare
  • un server esterno che possa tenere il log della console remota
  • Pacchetti da installare sul server che fa da registratore:
    • conserver-server sito del progetto
    • expect sito del progetto
    • [Facoltativo, ma consigliato] conserver-client, serve per accedere interattivamente alle consoles configurate in conserver.

Abilitare la Virtual Serial Port.

Occorre come prima cosa abilitare la VSP nel BIOS, collegandola a COM0 oppure COM1, che vengono viste da Linux rispettivamente come ttyS0 e ttyS1. Per le istruzioni vedere il Manuale HP, link nella sezione bibliografica. 


Abilitare la serial console in Lenny

 

Configurazione del bootloader

  • Collegarsi al server che si vuol monitorare
  • Scoprire quale porta seriale usare col comando seguente:
      # dmesg|grep tty
    
  • Assumiamo che sia la ttyS0
  • Editare /boot/grub/menu.lst
  • Cercare le seguenti righe:
      ## password ['--md5'] passwd
      # If used in the first section of a menu file, disable all interactive editing
      # control (menu entry editor and command-line)  and entries protected by the
      # command 'lock'
      # e.g. password topsecret
      #      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
      # password topsecret
    
  • Lasciandole stare aggiungete appena sotto le seguenti:
      # Aggiunta console seriale anche per grub
      serial --unit=0 --speed=115200
      terminal --timeout=10 serial console
    
  • Ora modifichiamo le opzioni di default per il kernel, cerchiamo quindi le righe seguenti:
      ## ## Start Default Options ##
      ## default kernel options
      ## default kernel options for automagic boot options
      ## If you want special options for specific kernels use kopt_x_y_z
      ## where x.y.z is kernel version. Minor versions can be omitted.
      ## e.g. kopt=root=/dev/hda1 ro
      ##      kopt_2_6_8=root=/dev/hdc1 ro
      ##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
      # kopt=root=/dev/mapper/pve-root ro 
    
  • Ne modifichiamo solo l’ultima, aggiungendo le segueinti opzioni: console=tty0 console=ttyS0,115200, l’aspetto finale sarà:
      # kopt=root=/dev/mapper/pve-root ro console=tty0 console=ttyS0,115200
    
  • Ora salviamo e chiudiamo
  • Al prompt dei comandi digitiamo:
      # update-grub
    

    questo rigenera il menu di boot (in fondo a menu.lst) 

 

Configurazione della serial console in inittab

  • Editiamo il file /etc/inittab
  • Cerchiamo le righe seguenti:
      # Example how to put a getty on a serial line (for a terminal)
      #
      #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
      #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
    
  • duplichiamo la T0 e la modifichiamo cambiando l’id in S0 e modificando la velocità di comunicazione come segue:
      S0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100
    

    L’aspetto finale della sezione modificata sarà:

      # Example how to put a getty on a serial line (for a terminal)
      #
      #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
      #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
      #Console seriale su COM1
      S0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100
    
  • Ora salviamo e lanciamo il seguente comando per la rilettura del file:
      # init q
    

Ora la console è collegata alla porta seriale ttyS0; serve un programma client che la utilizzi. Normalmente si usa un altro host con installato un programma (es: minicom) che gestisca i collegamenti tramite seriale. Nel nostro caso è la scheda ILO che implementa essa stessa un client, invocabile dalla CLI della ILO con il comando VSP; si veda lo script di expect più sotto. La ILO mette a disposizione anche una interfaccia ethernet e un demone ssh; useremo quindi ssh e conserver da un’altro host per registrare l’output della console.

 

Il server per la registrazione (conserver)

Installare i pacchetti

  • Collegarsi al server che registrerà gli eventi dalla serial console
  • Lanciare il comando per l’installazione dei pacchetti utilizzati:
      # apt-get update
      # apt-get install expect conserver-server
    
  • Al termine rinominare il file /etc/conserver/conserver.cf in conserver.cf.orig

 

Configurazione di conserver

  • Creare un file /etc/conserver/conserver.cf come il seguente:
      # The character '&' in logfile names are substituted with the console
      # name.
      #
      access  * { trusted localhost; }
      config  * {
    	sslrequired no;
    	daemonmode on; 
    	logfile /var/log/conserver/conserver.log; 
      }
       
      #
      # Modello per iLO Virtual Serial Port consoles
      # 
      default * {
    	master localhost; 
    	rw *; 
    	type exec;
    	execsubst H=hs;
    		exec ssh -t -o ConnectionAttempts=3 \\
                     -o ServerAliveInterval=15 \\
    		 -i /etc/conserver/.ssh/id_iLo Administrator@H;
    	initcmd "/etc/conserver/ilo-startvsp";
    	logfile "/var/log/conserver/&.log";
    	logfilemax 4m;
    	timestamp 10l;
      }
      #
      # One line here for each iLO
      #
      console iloSrv1 { host IPServerUno; }
      console iloSrv2 { host IPServerDue; }
    

 

Configurazione di expect

  • Creiamo il file /etc/conserver/ilo-startvsp, che servirà per lanciare la Virtual Serial Port, come segue:
      #!/usr/bin/expect -f
      #
      #####################################################################
      # Script expect per automatizzare il login iLO VSP con conserver    #
      #####################################################################
    
      # Hardware Supported: any server with iLO1-2-3
      # Virtual Serial Port must be configured in RBSU.
      # To be useful, the operating System must be running a console on
      # the VSP (Virtual Serial Port).
     
      set send_slow {1 0.02}
     
      expect "</>hpiLO->"
      sleep 7 
     
      send  "VSP"
      sleep 3  
    
      send -s "\r" 
      exit 0
    

Passiamo alla fase succcessiva!

 

Importare la chiave di collegamento SSH nella iLo

Per permettere al demone conserver di connettersi via ssh alla iLo del server dobbiamo usare una chiave di tipo DSA.

  • Colleghiamoci al server dov’è installato il pacchetto conserver
  • Generiamo la chiave col comando:
      # ssh-keygen -t dsa
    
  • Scegliamo il percorso e diamo il nome, per salvare la chiave: /etc/conserver/.ssh/id_iLo
  • Lasciamo password vuota, ovvero premi invio due volte
  • Ora lanciamo il comando:
      # cat /etc/conserver/.ssh/id_iLo.pub
    
  • Copiamo solo le righe della chiave pubblica
  • Colleghiamoci alla iLo (versione iLo3) del server da monitorare
  • Scegliamo dal menù: Administration -> Security
  • Seleziona l’utente Administrator e pigia il tasto Authorize new key
  • Incolla la chiave copiata nel box
  • Pigia il tasto per l’importazione

Ok fatto, ora siamo a cavallo, per provare la connessione dal server di registrazione col comando:

 # ssh -i /etc/coserver/.ssh/id_iLo Administrator@ServerDaMonitorare

 

Prima connessione con l’utente conservr

Il demone conserver gira con un utente apposito e non come root.
Per poter connettersi via ssh bisogna popolare, o meglio creare, il file /etc/conserver/.ssh/known_hosts.
Il modo migliore è quello di:

  • modificare momentaneamente il file /etc/passwd
  • inserire come shell per l’utente conservr /bin/bash al posto di /bin/false
  • impersonare l’utente:
      # su - conservr
    
  • collegarsi alla iLo via ssh:
      $ ssh -i /etc/coserver/.ssh/id_iLo Administrator@ServerDaMonitorare
    
  • accettare la registrazione dell’host nel file known_hosts
  • uscire da:
    • iLo
    • utente conservr
  • ripristinare il file /etc/passwd inserendo come shell per l’utente conservr /bin/false

 


Conclusione = test

Ed ora lanciamo il comando:

 # /etc/init.d/conserver restart

Se tutto funziona come si deve dovremmo vedersi popolare i log che si trovano in /var/log/conserver/

 

Note utili

N.B: Al momento lo stop del demone conserver fatto con lo script di init non abbatte le connessioni ssh verso le iLo, che vanno rimosse uccidendo manualmente i relativi processi.

  1. Se aggiornate il firmware della iLo, ricordatevi di reinserire l’host nel file known_host dell’utente conservr, come da sezione precedente. L’aggiornamento infatti modifica la chiave della iLo.
  2. iLo3, problema conosciuto per continui scollegamenti via ssh con firmware precedenti la versione 1.28! Aggiornare quindi il firmware iLo3 almeno alla 1.28.

Bibliografia

Guida HP per ILO Virtual Serial Port

Guida seguita per la soluzione

Abilitare la serial console in LENNY
Abilitare la serial console in SQUEEZE
Expect
Conserver

WordPress Appliance - Powered by TurnKey Linux