使用debian云映像创建虚拟机
使用Debian云映像创建虚拟机 环境准备 Oracle Virtual Box Debian GNU/Linux 11 (bullseye)系统 Debian 11 Cloud Image
如果有一台装有Debian 11系统的机器最好,也可以用Windows/WSL2代替,而我用的是vscode devcontainer[1]创建的docker容器来作为工具搭建,配置见下。
ls -al .devcontainer/ devcontainer.json Dockerfile networks/ debian-master # 主节点网络配置 debian-node01 # 从节点网络配置 vboxes/ # virtual box虚拟机 debian-master/ debian-node01/
.devcontainer/devcontainer.jso
{ "name": "Cloud Init Environment", "dockerFile": "Dockerfile", "remoteUser": "vscode" }
.devcontainer/Dockerfile
FROM mcr.microsoft.com/vscode/devcontainers/base:0-bullseye RUN sed -i \'s:deb.debian.org:ftp.cn.debian.org:g\' /etc/apt/sources.list \ && sed -i \'s:security.debian.org:ftp.cn.debian.org:g\' /etc/apt/sources.list RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install --no-install-recommends \ bash-completion \ cloud-image-utils \ qemu-utils \ && apt-get -y clean && rm -rf /var/lib/apt/lists/* RUN mkdir /images \ && cd /images \ && curl -sSL https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2 -O
然后从VSCode打开该目录,完成容器环境的搭建。
其中,我直接在容器中,直接从远程获取了Debian的云映像资源(目录/images),如果是自行环境搭建,可以从官网[2]下载。
新建Virtual Box虚拟机
由于VBox虚拟机不支持直接在已有文件夹下创建。
打开Oracle VM VirtualBox,新建一个虚拟机。
我将输入名称debian-master(名字随意)。
内存大小选择“512MB”,虚拟硬盘选择“不添加虚拟硬盘”。
进入虚拟机设置,在网络选项卡中,选择启用“网卡2”,选择连接方式“仅主机(Host-Only)网络”。
创建并vmdk虚拟硬盘
qemu-img convert -f qcow2 -O vmdk -o adapter_type=lsilogic /images/debian-11-generic-amd64.qcow2 vboxes/debian-master/root-disk.vmdk
创建NoCloud的iso镜像
参考cloud init[3]配置基础用户信息和系统配置(这里我们选用20.4.1版本查询模块设置参数),例如
master-data
#cloud-config password: passw0rd # 设置默认用户密码 chpasswd: { expire: False } # 是否强制用户修改初始密码 ssh_pwauth: True # 是否允许通过ssh访问 system_info: default_user: name: sysadmin # 设置默认用户登录名 apt: # 使用中国镜像 primary: - arches: [default] uri: http://ftp.cn.debian.org/debian/ security: - arches: [default] uri: http://ftp.cn.debian.org/debian-security/ sources_list: | deb $PRIMARY $RELEASE main # deb-src $PRIMARY $RELEASE main deb $PRIMARY $RELEASE-updates main # deb-src $PRIMARY $RELEASE-updates main # deb $PRIMARY $RELEASE-backports main # deb-src $PRIMARY $RELEASE-backports main deb $SECURITY $RELEASE-security main # deb-src $SECURITY $RELEASE-security main write_files: - path: /etc/sysctl.d/70-disable-ipv6.conf # 关闭IPv6协议 content: | net.ipv6.conf.all.disable_ipv6 = 1
以下是初始网络配置信息设置:
etworks/debian-master
version: 2 ethernets: enp0s8: match: name: enp0s8 addresses: - 192.168.56.10/255.255.255.0
cloud-localds vboxes/debian-master/seed.iso master-data --hostname debian-master --dsmode local --network-config networks/debian-maste
关联虚拟硬盘和配置镜像
打开虚拟机设置,在存储选项卡中,在SATA添加注册vboxes/debian-master/root-disk.vmdk虚拟硬盘,在IDE分配光驱选择vboxes/debian-master/seed.iso。
打开虚拟机
等待虚拟机启动完成后,可以使用ssh访问192.168.56.10访问到虚拟机,输入刚才master-data配置用户名和密码,默认用户拥有sudo权限。
ssh sysadmin@192.168.56.10
这时已完成安装,并且支持外网访问。
安装apt-cacher-ng
安装apt-cacher-ng,使内网节点支持代理更新软件包:
sudo apt-get install apt-cacher-ng
配置部署内网节点
首先内网节点,我们不需要用户名和密码登录,使用主节点(debian-master)的ssh密钥登录,所以在主节点运行生成密钥对。
ssh-keygen -t rsa -a 2048
复制黏贴公钥文本后,修改master-data复制到node-data。
配置apt下载HTTP代理:http://192.168.56.10:3142。
#cloud-config ssh_authorized_keys: # SSH公钥设置 - ssh-rsa AAA..(你的公钥字符串)..ZgE= sysadmin@debian-master system_info: default_user: name: sysadmin # 设置默认用户登录名 apt: # 使用中国镜像 http_proxy: http://192.168.56.10:3142 # 内网代理节点 primary: - arches: [default] uri: http://ftp.cn.debian.org/debian/ security: - arches: [default] uri: http://ftp.cn.debian.org/debian-security/ sources_list: | deb $PRIMARY $RELEASE main # deb-src $PRIMARY $RELEASE main deb $PRIMARY $RELEASE-updates main # deb-src $PRIMARY $RELEASE-updates main # deb $PRIMARY $RELEASE-backports main # deb-src $PRIMARY $RELEASE-backports main deb $SECURITY $RELEASE-security main # deb-src $SECURITY $RELEASE-security main write_files: - path: /etc/sysctl.d/70-disable-ipv6.conf # 关闭IPv6协议 content: | net.ipv6.conf.all.disable_ipv6 = 1
重复上述操作建立debian-node01虚拟机,并在网络设置中,启用网络1,使用连接方式“仅主机(Host-Only)网络”具体内容不再概述,以下是相关执行脚本。
qemu-img convert -f qcow2 -O vmdk -o adapter_type=lsilogic /images/debian-11-generic-amd64.qcow2 vboxes/debian-node01/root-disk.vmdk cloud-localds vboxes/debian-node01/seed.iso node-data --hostname debian-node01 --dsmode local --network-config networks/debian-node01
示例项目参考
https://gitee.com/rwyc/debian-cloud-init-setu
https://code.visualstudio.com/docs/remote/containers ↩︎
https://cloud.debian.org/images/cloud/ ↩︎
https://cloudinit.readthedocs.io/en/20.4.1/ ↩︎