1. 程式人生 > 其它 >使用debian雲映像建立虛擬機器

使用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


  1. https://code.visualstudio.com/docs/remote/containers ↩︎

  2. https://cloud.debian.org/images/cloud/ ↩︎

  3. https://cloudinit.readthedocs.io/en/20.4.1/ ↩︎