GNU/Linux >> Tutoriales Linux >  >> Linux

¿Usar cloud-init con VirtualBox?

Lo descubrí y escribí un blog sobre eso aquí. Desde ese enlace:

VirtualBox y cloud-init

En caso de que alguien más quiera saber:

  • Puede usar cloud-init para configurar máquinas virtuales VirtualBox sin demasiados problemas.
  • Una forma de hacerlo es usar una "unidad de configuración", es decir, montar otra unidad de disco duro virtual que (solo) tenga los datos de configuración de cloud-init.
  • Esta es una forma de crearlo:

    # Create empty virtual hard drive file
    dd if=/dev/zero of=config.img bs=1 count=0 seek=2M
    # put correct filesystem and disk label on
    mkfs.vfat -n cidata config.img
    # mount it somewhere so you can put the config data on
    sudo mount config.img /mnt
    
  • Ahora pon tus datos de configuración en /mnt/user-data y /mnt/meta-data ,

  • Ejemplo:/mnt/user-data. Esto creará un usuario ubos-admin con una clave ssh para que pueda iniciar sesión a través de ssh sin contraseña.

    #cloud-config
    users:
     - name: ubos-admin
       gecos: UBOS administrative user
       ssh-authorized-keys:
        - insert ssh key here
       sudo: "ALL=(ALL) NOPASSWD: /usr/bin/ubos-admin *, /usr/bin/bash *"
    
  • Ejemplo /mnt/meta-data :

    instance-id: my-instance-1
    
  • Luego, desmonte:

    sudo umount /mnt
    
  • y conéctelo como segundo disco duro antes de arrancar. Si cloud-init está instalado en la imagen principal, debería recoger la información de configuración.


Un enfoque ligeramente diferente que también funciona:

Usando la imagen de nube de CentOS 7 que se encuentra aquí:https://cloud.centos.org/centos/7/images/ (elija CentOS-7-x86_64-GenericCloud.qcow2)

datos de usuario

#!/bin/bash
##
## dependencies required for:
##        VBoxGuestAdditions
##        Minimal Desktop
##
DEPS='wget unzip python-pip git gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts bzip2 libguest libguestfs binutils gcc make kernel-headers kernel-devel'

update(){
    sudo yum -y -q update
}


install_epel(){
    sudo yum -y install epel-release
    sudo yum -y update
}

configure(){
    sudo yum -y -q install $DEPS
    yum -y groupinstall "X Window System"
    unlink /etc/systemd/system/default.target
    ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

    reboot
}

set -x
update
install_epel
configure

metadatos

instance-id: dev
local-hostname: dev.example.com
public-keys:
    - ssh-rsa AAAAB3NzaC1y[...]2yX3 [email protected]

network-interfaces: |
    auto eth1
    iface eth1 inet dhcp

vbox-config-unidad.sh

#!/bin/bash

##
## generate the config-drive iso
##
gen_iso(){
    echo "Generating ISO"
    genisoimage -output vbox-config.iso -volid cidata -joliet -r meta-data user-data
}

##
## resize as necessary
##
resize(){
    echo "Resizing Disk"
    qemu-img create -f qcow2 -o preallocation=metadata CentOS-7-x86_64-GenericCloud.qcow2.new 12G
    virt-resize --quiet --expand /dev/sda1 CentOS-7-x86_64-GenericCloud.qcow2 CentOS-7-x86_64-GenericCloud.qcow2.new
    mv CentOS-7-x86_64-GenericCloud.qcow2.new CentOS-7-x86_64-GenericCloud.qcow2
}
##
## convert the qcow to vmdk
##
make_vmdk(){
    echo "Converting QCOW to VMDK"
    qemu-img convert -f qcow2 CentOS-7-x86_64-GenericCloud.qcow2 -O vmdk CentOS-7-x86_64-GenericCloud.vmdk
}

gen_iso
##
## OPTIONAL
## resize
##
make_vmdk
echo "Done"

Utilice el VMDK resultante como disco principal de VirtualBox y el ISO resultante como unidad óptica.

Espero que esto ayude. M.


Linux
  1. Cómo uso Vagrant con libvirt

  2. Cómo usar el comando ethtool con ejemplos

  3. Cómo usar la exportación con Python en Linux

  4. VirtualBox para usar monitores duales

  5. No se puede usar la VM clonada, OpenSUSE, VirtualBox

Cómo instalar Vagrant y usarlo con VirtualBox en Ubuntu 20.04

Cómo usar el comando rm de Linux con ejemplos

Cómo usar PostgreSQL con la aplicación Ruby on Rails

Comenzando con VirtualBox en Linux – Parte 1

¿Problemas con la instalación de Ubuntu en Virtualbox?

Instalar Windows 10 en Linux con VirtualBox