viernes, 23 de noviembre de 2012

Servidor de arranque / instalaciones por red con Solaris 11

Pasos para crear un servidor que nos permita arrancar por red y arrancar el proceso de instalación manual en modo texto máquinas SPARC.
Faltaría añadir lo necesario para configurar el servidor de DHCP necesario para las instalaciones x86, y también para un futuro averiguar que pasa con las instalaciones desatendidas que siempre intentan ir a pkg.oracle.com a buscar los paquetes. 

  1. Lo primero es descargar la imagen ISO para instalaciones desatendidas para máquinas SPARC. 

    Descargar sol-11XXX-ai-sparc.iso (http://www.oracle.com/technetwork/server-storage/solaris11/downloads/index.html) seran unos 350MB.
  2. Vamos con los comandos para crear el servidor de instalaciones. 

    # installadm create-service -s /home/sysad/sol-11_1-ai-sparc.iso -y

    Este comando creara el servidor de instalación con los contenidos de la ISO que hemos descargado.
    Sacará un warning avisandonos de que no puede anunciarse por DNS
    Warning: Service svc:/network/dns/multicast:default is not online.
    Installation services will not be advertised via multicast DNS.
    Si habilitamos ese servicio ya no lo hace, pero quien coño quiere anunciar por multicast DNS que tiene un servidor de instalaciones sparc.

    También es posible que nos salga un error similar a este:
    /usr/lib/installadm/check-server-setup[155]: get_system_networks[516]: calculate_net_addr: line 824: fmax(0,2**8-hosts): function has wrong number of arguments
    The SMF all_services/networks property (0.0.0.0/0) does not match a network interface on this server.
    Automated Installations will not work with the current server network setup.

    Este es raro, pero tambien tiene solución, hay que cambiar a  locale=C antes de ejecutar el comando
    # export LANG=C
    # installadm create-service -s /home/sysad/sol-11_1-ai-sparc.iso -y
    Si todo ha ido bien, tendríamos que ver un par de nuevos zfilesystems
    /etc/netboot/solaris11_1-sparc(/export/auto_install/solaris11_1-sparc):10474979 blocks 10474979 files
    /etc/netboot/solaris11_1-sparc/system.conf(/var/ai/service/solaris11_1-sparc/system.conf):10474979 blocks 10474979 files
    /etc/netboot/default-sparc(/export/auto_install/solaris11_1-sparc):10474979 blocks 10474979 files
    /etc/netboot/default-sparc/system.conf(/var/ai/service/default-sparc/system.conf):10474979 blocks 10474979 files

    parecen 4, pero en realidad son solo 2. Con el comando installadm podemos ver que los default-sparc son un alias
    # installadm list
    Service Name Alias Of Status Arch Image Path 
    ------------ -------- ------ ---- ---------- 
    default-sparc solaris11_1-sparc on sparc /export/auto_install/solaris11_1-sparc
    solaris11_1-sparc - on sparc /export/auto_install/solaris11_1-sparc
  3. Añadir MAC del cliente al servidor

    Tenemos que añadir la MAC del cliente al servidor y asociarlo con algún servicio de instalación para que nuestro servidor de instalaciones sepa que servidores debe arrancar e instalar y que tipo de instalación en cada uno.

    # export LANG=C
    # installadm create-client -e 0:14:4f:ce:f:90 -n default-sparc

    Aquí pongo el export LANG=C directamente, porque todas las veces que no lo he puesto me da el error que he puesto en el punto anterior. 
    Con "-e" le decimos la MAC de la máquina que queremos arrancar.
    Con "-n" le decimos cual de nuestros servicios de instalación debe atenderle.

    Tendremos que ejecutar tantas lineas de estas como clientes queramos arrancar. 

    Con esto la parte del servidor de instalaciones esta completa. Vamos a los clientes.
  4. Configurar network-boot-arguments

    Para poder arrancar del servidor que hemos configurado ahora es necesario configurar esta variable de la eeprom. Lo primero es comprobar que tenemos una OBP lo suficientemente moderna como para que tenga esta funcionalidad. Simplemente echamos un vistazo a la salida de printenv, si aparece "network-boot-arguments" aunque sea vacía estamos de suerte, sino aparece habrá que actualizar la OBP de esa máquina a algo más moderno. 
    En esta variable lo que tenemos que configurar es la configuración de red que tendrá esta máquina cuando arranque, IP, mascara, router por defecto y Hostname. Y también decirle quien le da el fichero para wanboot. Esta es la sintaxis:

    ok setenv network-boot-arguments host-ip=ip,router-ip=iprouter,subnet-mask=mascara,hostname=nombre,file=http://server:port/cgi-bin/wanboot-cgi

    Si os fijasteis en la salida del comando installadm create-service, alli nos dice la URL de nuestro wanboot-cgi. Pero vamos será http://<IP Servidor Insta>:5555/cgi-bin/wanboot-cgi

    Un ejemplo:
    ok setenv network-boot-arguments host-ip=10.228.164.110,router-ip=10.228.164.1,subnet-mask=255.255.255.0,hostname=BL3,file=http://10.228.164.100:5555/cgi-bin/wanboot-cgi
  5. Arrancar por red

    Una vez configurada la variable network-boot-arguments solo nos queda:

    ok boot net

    Esto debería llevarnos hasta el menu de texto de la instalación de Solaris. La instalación que nos deja es muy básica (unos 800mb). Una vez que termine el proceso de instalación deberiamos hacer un:

    # pkg set-publisher -G '*' -M '*' -g http://10.228.164.100:80/ solaris (Para indicarle nuestro repositorio local, si tenemos acceso a interne no hace falta)
    # pkg install --accept group/system/solaris-large-server

    Para que nos instale desde el repositorio todos los paquetes necesarios para la instalación solaris-large-server.  

    Con 

    ok boot net - install

    Debería hacer una instalación de Solaris 11 desatendida, y supongo que la hará si la máquina que estamos arrancando/instalando tiene salida a internert, porque a mi siempre se me queda buscando el repositorio de paquetes oficial (pkg.oracle.com) 

No hay comentarios:

Publicar un comentario