Alguna vez se preguntó cómo los proveedores de VPS configuran sus máquinas virtuales, agregan sus keys SSH, crean usuarios e instalan paquetes cada vez que gira una nueva VM en la 'Cloud'? Bueno, la respuesta para la mayoría de los proveedores es la entrada de nubes. La mayoría de las imágenes de disco virtual del sistema operativo y distribuciones envían con sus respectivos sistemas operativos instalados en la imagen. La instalación es muy mínima y puede servir como plantilla para el sistema de archivos raíz del sistema operativo. Los mantenedores del sistema operativo también tienen la amabilidad de proporcionar la imagen de disco virtual para todos los diversos formatos, desde imágenes de disco sin procesar hasta QCOW2 e incluso VMDK, VDI y VHD.
La imagen también tiene un paquete adicional preinstalado y eso es In-INIT. Es el trabajo de la inno de nube para inicializar La VM (generalmente dentro de un servicio de alojamiento en la nube como DigitalOcean, AWS o Azure) habla con el proveedor de alojamiento fuente de datos y obtenga la información de configuración que luego usa para configurar la VM.
La información de configuración puede incluir datos del usuario Al igual que las teclas SSH, el nombre de host de la instancia, los usuarios y las contraseñas junto con cualquier otro comando arbitrario que el usuario desea ejecutar.
El problema con la inno de nube
La In-INIT es una gran herramienta si es un usuario de la nube, si está girando las máquinas virtuales o los contenedores y su proveedor de la nube es lo suficientemente amable como para pedirle un confiG de la nube, es genial! Con un archivo Cloud-Config, también conocido como sus datos de usuario, puede agregar usuarios, ejecutar comandos arbitrarios, instalar paquetes justo cuando se está creando la VM. El proceso se puede repetir una y otra vez sin que se escriban comandos tediosos una y otra vez. Pronto tiene una flota de máquinas virtuales, todo con una configuración idéntica.
Sin embargo, si cavas un poco más y ves cómo se hace la salchicha, comenzarás a cuestionar algunos de los aspectos de la In-Init de la nube. Por ejemplo, de forma predeterminada, el DataSource es como un punto final de descanso, y estos están esencialmente codificados en el paquete de In-Init en la nube en sí. Claro, puede configurar una fuente de datos por sí mismo, pero el proceso es clucky y de tiempo. La documentación para hacer esto es casi inexistente.
La documentación oficial no es más que un manual de usuario para los usuarios finales que depende de los servicios en la nube preexistentes. No le dice cómo puede configurar su propia fuente de datos de In-Init de nube, en caso de que sea un próximo proveedor. Incluso la documentación del usuario final es pobre, y recomendaría a las personas que usan el excelente tutorial de DigitalOcean.
Para empeorar las cosas, los usuarios con laboratorios de virtualización en el hogar y una startup de VPS pequeñas les resulta difícil beneficiarse de esas imágenes de nubes livianas. Realmente no puede iniciar una VM fuera de esas plantillas sin una fuente de datos de Inicla Cloud o algún hackery que sea difícil de automatizar y escalar. En otras palabras, ni siquiera puede optar por ignorar la inno de nube a menos que desee crear sus propias plantillas.
En una manera clásica de Systemd, se libera de sus roles predefinidos y comienza a meterse con las redes y otras partes del sistema operativo que arroja a los usuarios. Se agrupa dentro de Ubuntu 18.04 Servidor ISO, que no tiene absolutamente ningún sentido (al menos no para mí).
Solución para laboratorios en casa
Dejando a un lado todo el despotricar, todavía tengo que lidiar con la inno de nubes en mi uso diario. Tengo una instalación de Debian 9 muy mínima en hardware x86_64, que utilizo como un hipervisor KVM. Tenía muchas ganas de usar las imágenes de disco QCOW2 que son enviadas por Ubuntu y Centos. Estas imágenes de disco tienen el sistema operativo preinstalado en ellas, y para usarlas simplemente necesita:
Se siguen los siguientes pasos:
$ cd/var/lib/libvirt/boot
$ Curl -o https: // Cloud -Images.ubuntu.com/xenial/actual/xenial-server-ncloudimg-
AMD64-Disk1.img
$ cd/var/lib/libvirt/imágenes
$ QEMU -IMG CREATE -F QCOW2 MYVM.QCOW2 8G ## Crear un disco duro con
Tamaño del disco virtual de 8 GB
$ Virt-Resize --ExPand/dev/sda1/var/lib/libvirt/boot/xenial-server-
CloudImg-AMD64-Disk1.img
./myvm.QCOW2
$ vim meta-data
ID de instancia: myvm
local-hostname: myvm
$ VIM Data de usuario
#nube-config
Usuarios:
- Nombre: raíz
chpasswd:
Lista: |
Root: MyPassword
expirar: falso
El único usuario que tengo aquí es el usuario root. Si no menciona a ningún usuario, entonces el usuario predeterminado con nombre ubuntu Se crea. El nombre de usuario predeterminado, difiere de un sistema operativo a otro, por lo que recomiendo especificar a un usuario, incluso si es solo raíz. La siguiente parte del archivo de datos de usuario le dice a Cloud-Init que configure la contraseña para todos los usuarios que desea asignar una contraseña. Nuevamente, solo estoy configurando la contraseña para solo un usuario root, y es mi contraseña. Asegúrese de que no haya espacio entre el colon y la cadena de contraseña.
Mejor aún, puede usar SSH-Keys en lugar de tener contraseñas codificadas.
$ VIM Data de usuario
#nube-config
Usuarios:
- Nombre: raíz
ssh_pwauth: verdadero
ssh_authorized_keys:
- SSH-RSA
$ GenisoImage -Output Cidata -Myvm.ISO -VOLID CIDATA -JOLIET -METADATOS DE DATOS DE USUARIO
Asegúrese de que el archivo cidata-myvm.ISO está situado en/var/lib/libvirt/imágenes/
$ virtinstall --import--name myvm --memory 2048 --vcpus 2--cpu host
--disco myvm.QCOW2, formato = QCOW2, bus = virtio --disk myvm-cidata.ISO, dispositivo = CDROM
--Network Bridge = Virbr0, Model = Virtio --OS-Type = Linux
--OS-Variant = Ubuntu16.04 - -noautoconsole
Ahora puede intentar iniciar sesión en la VM utilizando el comando Virsh Console myVM y usando el nombre de usuario raíz y su contraseña correspondiente para iniciar sesión. Para salir de la consola, simplemente escriba Ctrl+]
Las imágenes en la nube que la mayoría de los proveedores envían son realmente eficientes en términos de utilización de recursos y también se sienten realmente rápidas y receptivas. El hecho de que necesitemos lidiar con la incómoda configuración de la In-Init de la nube como punto de partida solo dificulta la adopción de KVM y tecnologías relacionadas de la comunidad.
La comunidad puede aprender mucho de la forma en que Docker construye y envía sus imágenes. Son realmente fáciles de administrar tanto contenedores como plantillas que son fáciles de distribuir y usar.z