Ich habe es herausgefunden und hier darüber gebloggt. Von diesem Link:
VirtualBox und Cloud-Init
Falls es noch jemand wissen will:
- Sie können cloud-init verwenden, um virtuelle VirtualBox-Maschinen ohne allzu großen Aufwand zu konfigurieren.
- Eine Möglichkeit, dies zu tun, besteht darin, ein „Konfigurationslaufwerk“ zu verwenden, d. h. eine andere virtuelle Festplatte einzubinden, auf der sich (nur) die Cloud-Init-Konfigurationsdaten befinden.
-
So können Sie es erstellen:
# 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
-
Fügen Sie nun Ihre Konfigurationsdaten in
/mnt/user-data
ein und/mnt/meta-data
, -
Beispiel:
/mnt/user-data.
Dadurch wird ein Benutzerubos-admin
erstellt mit einem ssh-Schlüssel, damit Sie sich über ssh ohne Passwort anmelden können.#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 *"
-
Beispiel
/mnt/meta-data
:instance-id: my-instance-1
-
Unmounten Sie dann:
sudo umount /mnt
-
und als zweite Festplatte anschließen, bevor Sie booten. Wenn cloud-init im Hauptimage installiert ist, sollte es die Konfigurationsinformationen abrufen.
Ein etwas anderer Ansatz, der auch funktioniert:
Verwenden Sie das CentOS 7-Cloud-Image, das Sie hier finden:https://cloud.centos.org/centos/7/images/ (wählen Sie CentOS-7-x86_64-GenericCloud.qcow2)
Benutzerdaten
#!/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
Metadaten
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-drive.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"
Verwenden Sie die resultierende VMDK als Ihre primäre VirtualBox-Festplatte und die resultierende ISO als optisches Laufwerk.
Hoffe das hilft. M.