使用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.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 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
以下是初始網路配置資訊設定:
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 [email protected]
這時已完成安裝,並且支援外網訪問。
安裝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-setups