GNU/Linux >> Belajar Linux >  >> Linux

Gunakan cloud-init dengan VirtualBox?

Saya menemukan jawabannya dan membuat blog tentangnya di sini. Dari tautan itu:

VirtualBox dan cloud-init

Jika ada orang lain yang ingin tahu:

  • Anda dapat menggunakan cloud-init untuk mengonfigurasi mesin virtual VirtualBox tanpa terlalu banyak kesulitan.
  • Salah satu cara melakukannya adalah dengan menggunakan “drive konfigurasi”, yaitu memasang hard drive virtual lain yang (hanya) memiliki data konfigurasi cloud-init di dalamnya.
  • Berikut cara membuatnya:

    # 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
    
  • Sekarang masukkan data konfigurasi Anda ke /mnt/user-data dan /mnt/meta-data ,

  • Contoh:/mnt/user-data. Ini akan membuat pengguna ubos-admin dengan kunci ssh sehingga Anda dapat masuk melalui ssh tanpa kata sandi.

    #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 *"
    
  • Contoh /mnt/meta-data :

    instance-id: my-instance-1
    
  • Kemudian, lepas:

    sudo umount /mnt
    
  • dan pasang sebagai hard drive kedua sebelum Anda boot. Jika cloud-init dipasang di image utama, info konfigurasi akan diambil.


Pendekatan yang sedikit berbeda yang juga berhasil:

Menggunakan Gambar Cloud CentOS 7 ditemukan di sini:https://cloud.centos.org/centos/7/images/ (pilih CentOS-7-x86_64-GenericCloud.qcow2)

data pengguna

#!/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

meta-data

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"

Gunakan VMDK yang dihasilkan sebagai disk utama VirtualBox Anda dan ISO yang dihasilkan sebagai drive optis.

Semoga ini membantu. M.


Linux
  1. Cara menggunakan ekspor dengan Python di Linux

  2. Gunakan kamera IP dengan webRTC

  3. VirtualBox untuk menggunakan monitor ganda

  1. Bagaimana saya menggunakan Vagrant dengan libvirt

  2. Cara Menggunakan Perintah ethtool dengan Contoh

  3. Bisakah Anda Menggunakan Jangkar ^ $ Dengan Ls?

  1. Gunakan CloudFlare dengan Rackspace

  2. Gunakan iptables dengan CentOS 7

  3. Tidak dapat menggunakan VM kloning, OpenSUSE, VirtualBox