Grado de Ingeniería de Software
Material de la asignatura para el Grado de Ingeniería de Software
Requisitos. Para la realización de esta práctica necesitará una imagen de Ubuntu Cloud que descargaremos de https://cloud-images.ubuntu.com/ y necesitaremos un sistema anfitrión con una distribución Linux, basada en debian preferiblemente, como Ubuntu.
En esta práctica, usando una imagen de ubuntu cloud y cloud-init, vamos a configurar una imagen ubuntu a nuestro gusto. Veremos como añadir usuarios, configurar un repositorio, instalar paquetes o ejecutar comandos al iniciar. También veremos como añadir una clave ssh para un usuario y como acceder a la máquina mediante ssh.
Contenido
Descargar image ubuntu cloud
Entramos en https://cloud-images.ubuntu.com/ y descargamos una imagen de ubuntu, nosotros elegiremos la Ubuntu 18.04 por ser LTS (Long Time Support).
wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
Instalar herramientas necesarias
virt-manager: interfaz gráfica para la gestión de hipervisores. cloud-init: herramienta para personalizar una instancia de cloud antes de inicializar. cloud-image-utils: herramienta complementaria a cloud-init para modificar imágenes cloud.
Para instalar todas ellas, si estamos usando una distribución basada en debian, instalamos con:
sudo apt install cloud-init cloud-image-utils virt-manager
Crear configuración de cloud-init
Para añadir una configuración, crearemos un fichero de configuración, que comenzará siempre #cloud-config y tendrá una sintaxis yaml.
Una vez añadida la configuración, creamos una imagen con el siguiente comando:
cloud-localds volume.img conf-file
Configurar usuario: password y clave ssh
Opción 1
Añadir una contraseña y permitir el acceso por ssh. Por defecto, el usuario es ubuntu.
#cloud-config password: qwerty123 chpasswd: { expire: False } ssh_pwauth: True
De esta forma, al entrar por ssh, necesitaremos poner la contraseña del usuario:
ssh ubuntu@IP # Esto nos pedirá nuestra contraseña de usuario
Opción 2
Añadir un nuevo usuario, y pasarle clave pública ssh, si no tenemos, generamos una:
ssh-keygen # Generará clave pública/privada para la autenticación
cat ~/.ssh/id_rsa.pub # Mostrará nuestra clave pública generada
La configuración del fichero sería esta vez de la siguiente forma. Aquí ya nos estamos creando nuestro propio usuario, con acceso root, y le estamos pasando nuestra clave ssh.
#cloud-config users: - name: practica ssh-authorized-keys: - ssh-rsa AA... user@machine sudo: ALL=(ALL) NOPASSWD:ALL groups: sudo shell: /bin/bash
ssh practica@IP # No nos pedirá clave de usuario
Configurar hostname y un id de instancia
#cloud-config instance-id: my-instance-id local-hostname: my-hostname
Configurar repositorio: añadir e instalar paquetes
Ejecutar comandos al iniciar
Crear VM utilizando virt-manager
copiar volumen de cloud-init e imagen de ubuntu a /var/lib/libvirt/images/ https://gist.github.com/shettyg/455ff78605ea4c45febe7b5aa345c87d
Configuración de virt-manager
abrir virt-manager y crear VM
Buscar ip local de la VM para conectarnos por ssh
buscar ip máquina https://www.cyberciti.biz/faq/find-ip-address-of-linux-kvm-guest-virtual-machine/