Un dia pensé: voy a instalarme una máquina virtual.. bueno no, 2.. bueno no, 4.. y entonces dije.. pues voy a hacer un script para que se instalen solas desde la línea de comandos. Como conocía un poco VirtualBox y el kickstart, pues me ataqué a ello.
Antes de empezar, tengo un Ubuntu 12 (con dirección para nuestro ejemplo 192.168.0.5) y mis direcciones LAN (como en muchas casas) son 192.168.0.X.
- Me bajo el ISO del DVD de instalación del Centos6. Podéis bajaros el linux que más os guste.
- Lo descomprimo en un directorio y modifico el “isolinux/isolinux.cfg”:
default linux label linux kernel vmlinuz append initrd=initrd.img ks=http://192.168.0.5/ks.cfg text ksdevice=eth0 gateway=192.168.0.1 ip=192.168.0.4 dns=192.168.0.1 netmask=255.255.255.0 --onboot=on
De esta manera, uso como fichero de configuración kickstart el “ks.cfg” que os muestro más adelante, y durante la instalación del Centos sé que tendrá la IP “4″.
mkisofs -o /data/centos6-modificado.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V -T /centos6
- Nos creamos un fichero “ks-plantilla.cfg”, a partir del cual crearemos el ks.cfg definitivo para la instalacion (sustituyendo los strings “miip” y “mihost”) y lo pondremos accesible en un sitio http, yo lo he puesto en el apache local. Este archivo podeis crearlo con las opciones y paquetes que querais, basandoos en las reglas del kickstart de redhat, lo importante es el primer párrafo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | install cdrom text clearpart --all --initlabel autopart url --url=http://192.168.0.5/centos6/ lang es_ES keyboard es_ES network --bootproto=static --device=eth0 --ip=miip --netmask=255.255.255.0 --gateway=192.168.0.1 --nameserver=192.168.0.1,62.2.17.60,62.2.24.16 2,62.2.17.61 --onboot=on --hostname=mihost poweroff authconfig --enableshadow --enablemd5 timezone Europe/Madrid bootloader --location=mbr --driveorder=sda rootpw --iscrypted ******************* selinux --disabled firewall --disabled zerombr skipx logging info %packages @base @core @load-balancer @nfs-file-server @spanish-support @ftp-server @java @mail-server @mysql @network-server @web-server vim-enhanced vim-common |
Y ya estamos listos para hacer nuestro script shell que creará las máquinas virtuales él solico usando los comandos de VirtualBox de línea de comandos (manual):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | # VARIABLES A MODIFICAR #------------------------------------------------------- # Nombre de la VM, IP, tamaño del disco duro en megas VM="molokai" DIRIP="192.168.0.13" TAMDISCO="20480" PATHVM="/data/vms" #------------------------------------------------------- sed "s/miip/$DIRIP/g" /var/www/html/ks-plantilla.cfg > /var/www/html/ks-temp.cfg sed "s/mihost/$VM/g" /var/www/html/ks-temp.cfg > /var/www/html/ks.cfg rm /var/www/html/ks-temp.cfg # Creamos la VM Red Hat o Centos VBoxManage createvm --name $VM --ostype "RedHat" --register # Memoria RAM 1Gb, memoria de video 32M, habilitar PAE, audio on VBoxManage modifyvm $VM --memory 1024 --vram 32 --pae on --audio pulse # Creamos el HD y DVD virtuales y "metemos" nuestro ISO en el DVD VBoxManage createhd --filename $PATHVM/$VM.vdi --size $TAMDISCO VBoxManage storagectl $VM --name $VM --add sata VBoxManage storageattach $VM --storagectl $VM --port 0 --type hdd --medium $PATHVM/$VM.vdi VBoxManage storageattach $VM --storagectl $VM --port 1 --type dvddrive --medium /data/centos6-modificado.iso # Activamos la red para la VM VBoxManage modifyvm $VM --nic1 bridged --bridgeadapter1 eth0 # Este arranque instala el centos y apaga la VM cuando ha terminado (con la ip "4") VBoxManage startvm $VM --type headless # Maquina en instalacion no arrancada while [ "`ping -c1 192.168.0.4|grep '1 received'|grep -v grep`" = "" ]; do sleep 5 echo VM arrancando ... done while [ "`ping -c1 192.168.0.4|grep '1 received'|grep -v grep`" != "" ]; do sleep 30 echo VM instalandose ... done echo VM instalada! echo VM apagandose ... sleep 30 # Quitamos el DVD del centos y reiniciamos VBoxManage storageattach $VM --storagectl $VM --port 1 --type dvddrive --medium emptydrive VBoxManage startvm $VM --type headless while [ "`ping -c1 $DIRIP|grep '1 received'|grep -v grep`" = "" ]; do sleep 20 echo Esperando IP de la VM... done echo "VM lista!" |
Y eso es todo. Podeis ejecutarlo cambiando los valores de las variables o hacer un “for” dentro con un array de maquinas.. a gusto de cada uno.
Si teneis dudas dejad un comentario e intentaré ayudaros.

