Cloudinit被许多云镜像使用,例如在 EC2 上获取它们的初始配置,如 IP 地址、ssh 密钥等。有没有办法以类似的方式将它与 VirtualBox 一起使用?
我正在寻找一种将 ssh 授权密钥文件放在 VirtualBox 实例上的方法,而无需将其硬编码到图像本身中。
有关于“不云”一节在这里,但我不完全了解如何做到这一点适用于VirtualBox的。我可以用有问题的文件生成一个 /dev/sdb ,并在启动实例之前将它提供给 VirtualBox 作为第二个驱动器,它会以某种方式神奇地获取信息吗?
Joh*_*nst 10
我想通了,并在这里写了博客。从该链接:
#VirtualBox 和 cloud-init
如果其他人想知道:
可以使用 cloud-init 来配置 VirtualBox 虚拟机,不会太麻烦。
这样做的一种方法是使用“配置驱动器”,即安装另一个(仅)具有云初始化配置数据的虚拟硬盘驱动器。
这是一种创建方法:
# 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
Run Code Online (Sandbox Code Playgroud)
现在把你的配置数据放入/mnt/user-dataand /mnt/meta-data,
示例:/mnt/user-data.这将创建一个ubos-admin具有 ssh 密钥的用户,以便您无需密码即可通过 ssh 登录。
#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 *"
Run Code Online (Sandbox Code Playgroud)
示例/mnt/meta-data:
instance-id: my-instance-1
Run Code Online (Sandbox Code Playgroud)
然后,卸载:
sudo umount /mnt
Run Code Online (Sandbox Code Playgroud)
并在启动前附加为第二个硬盘驱动器。如果 cloud-init 安装在主映像中,它应该获取配置信息。
如果您使用的是使用以下命令的 Linux 发行版,则可以使用以下命令为第二个硬盘驱动器创建 .vmdk 映像文件apt:
sudo apt-get install qemu-kvm
qemu-img convert -O vmdk config.img config.vmdk
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10522 次 |
| 最近记录: |