En este post vamos a ver cómo instalar OpenNebula sobre KVM de forma muy sencilla en un Sistema Operativo Ubuntu 18.04.
Para instalar OpenNebula en KVM debemos tener en cuenta que OpenNebula tiene dos componentes:
OpenNebula Front-End: Ejecuta los servicios de OpenNebula.
OpenNebula Hypervisor: Realiza la provisión de recursos y de las máquinas virtuales.
Ambos elementos deben ser instalados.
Por lo que empezaremos por el “Front-End”.
Instalamos los repositorios de OpenNebula:
Importamos la key con el comando:
Ejemplo:
Añadimos el repositorio al sistema (Ubuntu 16.04 en mi caso):
NOTA: Si queréis antes ‘checkear’ qué versión de Ubuntu tenéis teclead en consola:
Ejemplo:
En mi caso como tengo Ubuntu 16.04 usaré dicho repositorio haciendo:
También tened en cuenta la última versión estable de OpenNebula, en mi caso he usado la 5.12
Hacemos:
Ejemplo:
Ahora instalamos MySQL, concretamente MariaDB, para ello primero importamos el repositorio de la key y lo añadimos:
sudo apt-key adv –fetch-keys ‘https://mariadb.org/mariadb_release_signing_key.asc’
sudo add-apt-repository ‘deb [arch=amd64,arm64,i386,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.5/ubuntu xenial main’
Ejemplo:
Hacemos update del sistema de paquetes:
Ejemplo:
Y posteriormente lo instalamos:
Ejemplo:
Ejecutamos las opciones de seguridad (ponemos password de root + deshabilitar acceso remoto + eliminamos las bases de test) de la siguiente manera:
Para ello nos irá preguntando opciones y vamos aceptando (o no, aunque podéis usar las mismas opciones que he usado yo).
Ahora intenta acceder a la base de datos con el password creado:
Nos pedirá el password y podremos acceder:
Ahora si, vamos a crear una base de datos y un usuario para OpenNebula, con lo que dentro de la base de datos hacemos:
GRANT ALL PRIVILEGES ON opennebula.* TO ‘oneadmin’ IDENTIFIED BY ‘StrongPassword’;
FLUSH PRIVILEGES;
Donde “StrongPassword” será nuestro password para el usuario “oneadmin” que acabamos de crear para poder acceder a nuestro OpenNebula.
Ahora si, hacemos “quit” en la base de datos e instalamos los paquetes de OpenNebula para Front-End, para ello hacemos:
sudo apt install opennebula opennebula-sunstone opennebula-gate opennebula-flow
Ejemplo:
Llegados a este punto, veréis que se han generado dos archivos de configuración que usarás más adelante (anotad el path):
- /var/lib/one/remotes/etc/datastore/ceph/ceph.conf
- /var/lib/one/remotes/etc/vnm/OpenNebulaNetwork.conf
Ahora instalamos Ruby para ciertos componentes de OpenNebula:
Nos preguntará por las dependencias, así que le damos enter:
Ahora configuramos los parámetros de la base de datos a través del archivo “fileoned.conf” mediante el comando:
Buscamos la linea “DB = [ BACKEND = «sqlite» , TIMEOUT =2500 ]” Y la comentamos:
Después añadimos:
server = «localhost»,
port = 0,
user = «oneadmin»,
passwd = «StrongPassword»,
db_name = «opennebula» ]
Donde “StrongPassword” es el que hemos definido antes al crear la base de datos “opennebula”.
Ejemplo:
Guardamos los cambios y probamos ahora si de acceder con el usuario “oneadmin” que hemos definido y el password para ese usuario:
Ejemplo:
Ahora vamos a configurar los credenciales para el usuario “oneadmin”, ya que durante la instalación se ha creado un fichero con un usuario y password iniciales que no nos sirven, para ello editaremos el archivo que se ha generado:
Veremos que el archivo contiene el usuario y el password con el formato:
Para cambiarlo haremos:
$ echo «oneadmin:mypassword» > ~/.one/one_auth
$ oneuser passwd oneadmin «my_password»
Ejemplo:
Donde “mypassword” es el password del usuario “oneadmin” de la base de datos.
Bien, ya tenemos nuestro usuario para OpenNebula correctamente configurado.
Ojo, este paso es opcional, si tenéis Firewall activado debéis permitir el puerto 9869 para el acceso a la web:
Yo, en mi caso no he tenido que hacerlo, si tenéis problemas para acceder por el puerto 9869 hacedmelo saber.
Iniciamos los servicios de OpenNebula:
# systemctl enable opennebula opennebula-sunstone
Verificamos la instalación:
Ejemplo:
Si os salen mensajes de error es que OpenNebula NO se ha iniciado correctamente.
Si obtienes un mensaje de error es que OpenNebula no ha iniciado correctamente con lo que verás los logs de lo que ha podido pasar en la carpeta:
Donde tendrás dos archivos “oned.log” y “sched.log”, para core y scheduler logs respectivamente. Los errores de arranque que comentaba se encontrarían en el primero de ellos.
Ahora ya podrás acceder a la web de Sunstone:
http://«IP_Front_End»:9869
Podrás acceder con las credenciales que hemos creado para OpenNebula (oneadmin) y el password que teníamos en:
Y que también hemos usado al crear el usuario en la base de datos “opennebula”
Ahora seguimos con el “Hypervisor”
Ahora tenemos varias opciones. En general Opennebula está pensado para tener el Front-end en una máquina y posteriormente añadir nodos (Hypervisores) divididos en otras máquinas.
De manera que, si quieres instalar el Hypervisor en otra máquina, recuerda primero usar los comandos:
echo «deb https://downloads.opennebula.org/repo/5.12/Ubuntu/16.04 stable opennebula» | sudo tee /etc/apt/sources.list.d/opennebula.list
Sino, si vamos a instalar el nodo directamente en mismo servidor que el Front-end podemos empezar directamente con:
Ejemplo:
Vamos a ver el contenido del archivo “/etc/libvirt/libvirtd.conf” para ver que tenemos correctamente las siguientes líneas:
unix_sock_rw_perms = «0777»
Ejemplo:
Si no es así, lo modificamos y guardamos. Para cualquier cambio en “libvirtd” acordaos siempre de reiniciarlo:
Ejemplo:
Ahora tenemos que crear un archivo de “hosts_conocidos” para distribuir la clave ssh del usuario “oneadmin” ya que el Front-end se comunica con el hypervisor usando ssh. Para ello (y desde el usuario oneadmin) hacemos:
$ ssh-keyscan «IP_Front_End» «IP_nodo_1» «IP_nodo_2» … >> /var/lib/one/.ssh/known_hosts
En nuestro caso actual (ya que uso el mismo servidor para el hypervisor que para el Front-End) se reduce a:
Ejemplo:
En mi caso he añadido el comando “-p 40022” ya que no tengo ssh escuchando en el puerto 22.
Recordad también que para ‘checkear’ qué puertos tenéis escuchando en el sistema y a qué servicios corresponden podéis hacer:
Ahora el directorio /var/lib/one/.ssh (con todo lo que incluye) se tendrá que copiar en todos los nodos donde tengamos openNebula.
De esta manera, en el resto de nodos podemos resetear directamente el password para “oneadmin” para que use el que ya tenemos en el frontend. Por tanto, hacemos lo siguiente para el resto de nodos donde hayamos configurado “oneadmin”:
Y en el nodo Front-end haremos:
$ scp -rp /var/lib/one/.ssh «IP_Nodo_2»:/var/lib/one/
Esto es para copiar el directorio a los nodos. Aunque como ya hemos comentado en nuestro caso no tenemos más nodos, con lo que no lo haremos y ya que nuestro nodo KVM en este laboratorio será el mismo que el de Front-End.
También, si tenemos más nodos podemos probar de acceder via ssh a los nodos (o al propio frontend) para ver que NO nos pide password:
$ ssh «IP_Front_End»
Accedemos de nuevo al front end y ya podremos usar OpenNebula:
http://«IP_Front_End»:9869