使用debian云映像创建虚拟机
使用Debian云映像创建虚拟机
环境准备
- Oracle Virtual Box
- Debian GNU/Linux 11 (bullseye)系统
- Debian 11 Cloud Image
如果有一台装有Debian 11系统的机器最好,也可以用Windows/WSL2代替,而我用的是vscode devcontainer1创建的docker容器来作为工具搭建,配置见下。
ls -al
.devcontainer/
devcontainer.json
Dockerfile
networks/
debian-master # 主节点网络配置
debian-node01 # 从节点网络配置
vboxes/ # virtual box虚拟机
debian-master/
debian-node01/
.devcontainer/devcontainer.json
{
"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 init3配置基础用户信息和系统配置(这里我们选用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
以下是初始网络配置信息设置:
networks/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