Ubuntu Cloud Images
Ubuntu官网会给各种公有云平台提供cloud镜像, 例如AWS, MS Azure, Google Cloud, 以及本地虚机环境例如 QEMU, VMware, Vagrant等, 这些镜像在 https://cloud-images.ubuntu.com 上可以下载.
Ubuntu Cloud 镜像类型
cloud-images.ubuntu.com 上面的镜像主要可以分成两大类, daily 和 release, 每个大类里又区分为 minimal(最小安装)和普通版本.
- 如果对这些没概念, 下载 release 版本, 在 releases 目录下有从 8.04 到 22.04 的各个发行版镜像
- 从上面进入的发行版目录下面, 是按日期排列的目录, 用最新日期的那个目录
- 目录下面, 都是形如 ubuntu-22.04-server-cloudimg-[宿主架构]-xxx.[img/vmdk/ova] 这种文件名的文件, 对应KVM需要下载
- 如果只是需要能运行的最小系统, 在 minimal 目录下 releases 目录找对应发行版的迷你安装. 标准版的大小是迷你版的两倍左右
- 迷你版只有给x86-64架构宿主的镜像
KVM 中安装Cloud Image 虚机
以迷你版为例
前提
机器上要安装好 KVM 环境,
创建好桥接网络, 假设桥接网口为 br0
准备 seed.img
当cloud image启动时, 会搜索包含实例信息的数据源, 用于初始化当前的实例, 包括 hostname, 网络设置等, 通常包含两类内容:
- metadata: 这一般是由云平台提供的唯一编号, 包含 hostname, 网络信息, SSH keys等.
- user data: 用于指定登录虚机的用户的相关设置.
创建文件 metadata.yaml
- instance-id:
- local-hostname: 虚机启动后看到的 hostname
创建文件 user-data.yaml
用id_rsa密钥登录的例子
- ssh_authorized_keys 用于免密登录的公钥. 需要在本地预先创建好密钥对, 并配置到 .ssh/config 里. 用户是默认的ubuntu, 不需要指定
- ssh_import_id 用于第三方平台的密钥, 这里都留空
用密码登录的例子
- password: ubuntu 设置的密码为 ubuntu
- chpasswd: { expire: False } 不过期
- ssh_pwauth: True 设置为使用密码登录
- ssh_import_id: ${USER} 这里设置的是创建的用户名
创建 seed.img
用 cloud-localds 命令创建 seed.img
用 Cloud Image 启动
命令例子1
其中 ubuntu20.04_1.img 是重命名后的迷你版镜像.
命令例子2
这个会将虚机的22端口映射到宿主的222端口
执行命令后会启动到登录提示符. 过程中会穿插着执行初始化, 显示机器的信息, 包括IP地址, 网络环境, 导入的用户key等
使用显示的IP, 以及之前配置的私钥就可以直接登录
修改虚机磁盘大小
默认的镜像只有2GB的磁盘大小, 如果要修改大小, 需要先关闭虚机
查看镜像的磁盘情况
修改磁盘到20G
检查设置
重启虚机, 应用设置
启动后df -h
就能看到磁盘大小的变化
参考
- Launching Ubuntu Cloud Images with QEMU https://powersj.io/posts/ubuntu-qemu-cli/
标签:
留言评论