systemadmin.es > Virtualización > Crear una maquina virtual para Vagrant

Crear una maquina virtual para Vagrant

Mediante vagrant podemos simplificar la tarea de levantar maquinas virtuales con versiones concretas de sistema operativo mediante templates. Vamos a ver cómo crear una maquina virtual de VirtualBox para ser usada con vagrant

Para ello, vamos a crear una maquina virtual con el obsoleto CentOS 4, en VirtualBox crearemos una maquina virtual:

  • Nombre: vagrant-centos4
  • Memoria: 512M
  • Virtual Disk: VMDK
  • Audio: Deshabilitado
  • USB: Deshabilitado
  • Network adapter 1: NAT

Añadimos el DVD de instalación y seguimos los pasos y a continuación accedemos a la shell para crear el usuario vagrant:

useradd vagrant

En el /etc/sudoers añadimos el siguiente sudo:

vagrant ALL=(ALL) NOPASSWD: ALL

Añadimos la clave pública para poder hacer un vagrant ssh:

mkdir -p /home/vagrant/.ssh
chmod 0700 /home/vagrant/.ssh
wget --no-check-certificate     https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub     -O /home/vagrant/.ssh/authorized_keys
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh

Quitamos del arranque el kudzu:

chkconfig --del kudzu

Modificamos los repositorios (/etc/yum.repos.d/CentOS-Base.repo) para usar vault.centos.org:

# CentOS-Base.repo
#
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-4.9 - Base
baseurl=http://vault.centos.org/4.9/os/$basearch/
gpgcheck=1
gpgkey=http://vault.centos.org/RPM-GPG-KEY-centos4
priority=1
protect=1

#released updates 
[update]
name=CentOS-4.9 - Updates
baseurl=http://vault.centos.org/4.9/updates/$basearch/
gpgcheck=1
gpgkey=http://vault.centos.org/RPM-GPG-KEY-centos4
priority=1
protect=1

#packages used/produced in the build but not released
[addons]
name=CentOS-4.9 - Addons
baseurl=http://vault.centos.org/4.9/addons/$basearch/
gpgcheck=1
gpgkey=http://vault.centos.org/RPM-GPG-KEY-centos4
priority=1
protect=1

#additional packages that may be useful
[extras]
name=CentOS-4.9 - Extras
baseurl=http://vault.centos.org/4.9/extras/$basearch/
gpgcheck=1
gpgkey=http://vault.centos.org/RPM-GPG-KEY-centos4
priority=1
protect=1

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-4.9 - Plus
baseurl=http://vault.centos.org/4.9/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://vault.centos.org/RPM-GPG-KEY-centos4
priority=2
protect=1

#contrib - packages by Centos Users
[contrib]
name=CentOS-4.9 - Contrib
baseurl=http://vault.centos.org/4.9/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://vault.centos.org/RPM-GPG-KEY-centos4
priority=2
protect=1

Podemos probar con yum search para verificar que los tenemos correctos:

# yum search httpd
Searching Packages: 
Setting up repositories
update                    100% |=========================|  951 B    00:00     
base                      100% |=========================| 1.1 kB    00:00     
addons                    100% |=========================|  951 B    00:00     
extras                    100% |=========================| 1.1 kB    00:00     
Reading repository metadata in from local files
primary.xml.gz            100% |=========================| 861 kB    00:00     
update    : ################################################## 1955/1955
primary.xml.gz            100% |=========================| 715 kB    00:02     
base      : ################################################## 1844/1844
primary.xml.gz            100% |=========================|  192 B    00:00     
primary.xml.gz            100% |=========================|  42 kB    00:00     
extras    : ################################################## 149/149

(...)

Limpiamos los ficheros antes de crear la imagen:

# yum clean all
Cleaning up Everything
0 headers removed
0 packages removed
12 metadata files removed
0 cache files removed
4 cache files removed

Limpiamos el history del usuario:

export HISTFILE=/dev/null 
rm ~/.bash_history /home/vagrant/.bash_history -f

Para finalmente escribir ceros en el resto del espacio libre del disco (mejora la compresión de la imagen)

sync
dd if=/dev/zero of=/zero bs=1M
rm -f /zero

Finalmente, apagamos la maquina. En la nuestra creamos en algún sitio un directorio para crear la imagen:

mkdir ~/vagrant/centos4
cd ~/vagrant/centos4

Creamos la imagen en base a la maquina instalada mediante vagrant package:

vagrant package --base vagrant-centos4

Podemos probar la imagen creando una instancia:

vagrant box add centos4 package.box
vagrant init centos4
vagrant up

Haciendo un vagrant ssh veremos como se trata de la maquina que hemos instalado:

[jprats@croscat centos4]$ vagrant ssh
[vagrant@localhost ~]$ sudo su -
[root@localhost ~]# lsb_release -a
LSB Version:	:core-3.0-amd64:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 4.8 (Final)
Release:	4.8
Codename:	Final
[root@localhost ~]# 

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>