构建模板
- 1: 构建 basic 模板
- 1.1: 构建 basic 模板
- 1.2: 创建虚拟机
- 2: 构建 dev 模板
- 3: 构建 devserver 模板
1.1 - 构建 basic 模板
制作过程
参考 debian12 学习笔记 的 pve 安装文档, 安装 debian 12 操作系统。
然后完成基本配置,内核配置,并通过 timeshift 进行系统备份。
模板内容
- apt 升级到 debian 12.10
- 更新 apt 到最新内核 6.1.0-34
- 安装 timeshift, zsh/ohmyzsh, git, dkms, iperf/iperf3, unzip zip curl
- 添加 proxyon/proxyoff alias for different locations
- 修复 path 不足问题,包括用户 root 和 sky
- 安装 sftp server, nfs server 和 client, samba server
1.2 - 创建虚拟机
创建虚拟机
为了加速创建,可以先将模板克隆到本地,然后从本地的模板中采用 Linked Clone 方式克隆。
这样从模板 clone 虚拟机, 速度会非常快,而且空间占用也非常小。
修改虚拟机配置
主要是修改虚拟机的 hostname,以及必要时从使用 dhcp 自动获取 ip 地址修改为使用静态 ip 地址。
2.1 - 创建模板
制作过程-v1
准备虚拟机
从模版 template-debian12-basic-v03 (取最新版本) 克隆一个虚拟机,命名为 template-debian12-dev-v01,VM ID 为 990201.
开发需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 8 核,内存 32g(mini 8192,memory 32768)。
准备 ssh 证书
重新生成一份 ssh 证书,这个是要提交给 github 的,单独用一份。
搭建开发环境
安装 docker
- docker/docker-compose: https://skyao.io/learning-docker/docs/installation/debian12/
- kubectl
安装开发工具
参考本读书笔记中的 开发工具 一节, 安装开发工具:
- sdkman
语言 sdk 和 nexus 私库
参考本读书笔记中的 编程语言 一节, 安装语言 sdk 和对应的 nexus 私库:
- Java: 包括 maven
- golang
- rust
- python
- nodejs
制作过程-v2
v2要放到广州南沙的开发环境, 网段是 192.168.0.0/24, devserver92 的 ip 是 192.168.0.92,因此所有相关的 ip 信息都要修改。
将 dev-v1 的模板传送到广州南沙,然后在这个基础上,按照上面制作 dev-v1 的流程,重头走一边制作流程,注意需要修改 ip 地址的地方,就可以完成 dev-v2 的制作。
2.2 - 创建实例
准备虚拟机
从模版 template-debian12-dev-vxx 克隆三个虚拟机,命名为 dev111/dev121/dev131,三个开发机备用.
开发需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 16核 (cpu 亲和性设置为 0-15,用大核),内存 32g (8192 MB 到 32768)。
基本配置修改
修改 hostname 和 使用静态 IP 地址。
理论上应该就可以直接拿来用了。后续如果发现有需要修改的地方,再记录下来。
3.1 - 创建模板
准备工作
准备虚拟机
从模版 template-debian12-basic-v03 (取最新版本) 克隆一个虚拟机,命名为 template-debian12-devserver-v01,VM ID 为 990301.
开发需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 8 核,内存 16g(mini 8192,memory 16384)。
准备磁盘
devserver 预计会有两台实例,用于两个异地的开发环境。
我为每台实例都准备了 2 块三星 pm983a 900G 的 ssd 磁盘,一块用于应用(如数据库,redis,queue等),一块用于数据(如pve需要的nfs,nexus 代理仓库等)。
在 pve 中,将两块 ssd 磁盘直通给到虚拟机,并挂载到 /mnt/data
目录。
在虚拟机中可以看到这两块磁盘:
lspci | grep Non-Volatile
01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
参考本读书笔记中的 devserver91 一节, 配置好磁盘并进行分区,然后安装 nfs server。
搭建开发环境
安装 docker 和 habor
- docker/docker-compose: https://skyao.io/learning-docker/docs/installation/debian12/
- habor: https://skyao.io/learning-docker/docs/repository/habor/
安装开发工具
参考本读书笔记中的 开发工具 一节, 安装开发工具:
- sdkman
- nexus
语言 sdk 和 nexus 私库
参考本读书笔记中的 编程语言 一节, 安装语言 sdk 和对应的 nexus 私库:
- Java: 包括 maven
- golang
- rust
- python
- nodejs
3.2 - 创建虚拟机
创建虚拟机
devserver 模板实际只会有两个虚拟机实例:
- devserver91: ip 192.168.3.91, 用于苏州汾湖的开发环境
- devserver92: ip 192.168.0.92, 用于广州南沙的开发环境
由于两个虚拟机都使用到直通的两块 900g 三星 pm983a ssd,因此无法简单的从模板克隆就能自动恢复所有的数据。
实践中,先按照 devserver91 的配置搭建好虚拟机,然后直接使用直通的 ssd 就能正常工作了。
devserver92 是将模板(去除直通的两块 ssd)传送到广州南沙,然后从模板克隆虚拟机,再直通两块空的 ssd 硬盘。
配置 devserver91
几乎不需要配置。
配置 devserver92
原则上需要按照搭建模板的方式, 重头走一遍所有流程来完成 devserver92 的配置。
中间很多步骤是可以重用之前已有的资料和信息,但是需要检查每一个步骤,看是否有需要改动的地方,最重要的改动就是这个机器的 ip 地址从 devserver91 的 192.168.3.91 修改为 devserver92 的 192.168.0.92。
而这个 ip 地址的修改,散落在很多地方, 为了不疏漏,只能重新走一遍完成的流程,好在大部分操作都还继续有效,只是修改个别配置文件更改 ip 地址即可。