最近的工作涉及到服務(wù)器自動(dòng)安裝和網(wǎng)絡(luò)部署操作系統(tǒng),然后使用 ansible 和 saltsatck 進(jìn)行配置并安裝 openstack 。
難點(diǎn)在于服務(wù)器的自動(dòng)安裝,由于不單只是通過 PXE 安裝服務(wù)器,還需要能夠安裝時(shí)進(jìn)行分區(qū)、配置網(wǎng)卡等工作,因此需要在開始安裝前,必須先收集服務(wù)器的硬件信息。
調(diào)研了一下目前的開源項(xiàng)目中,提供此類功能的有 tinycorelinux 、 puppet razor-el-mk 可做類似的工作。tinycorelinux 是個(gè)很好的工具,整個(gè)系統(tǒng)在 PXE 之后在內(nèi)存中執(zhí)行,可在里面加上簡單的 agent 完成任務(wù)報(bào)告的工作;razor 是 puppet 綁定在一起用的,el-mk 基于 centos ,它在里面裝了 razor 的 agent,使用 facter 進(jìn)行硬件信息收集。
這些方案的基本思路都是相通的,首先通過 PXE 下載 microkernel ,然后直接在內(nèi)存中執(zhí)行,啟動(dòng)網(wǎng)卡,運(yùn)行 agent 并向服務(wù)器匯報(bào)信息,并接收來自服務(wù)器的命令?;镜募夹g(shù)原理都是 PXE + linux initramfs ,根據(jù)不同的需要向 initramfs 中加硬件驅(qū)動(dòng)。
仔細(xì)研究了一下之后,發(fā)現(xiàn)用 debootstrap + busybox 工具做這樣的小系統(tǒng)會更加簡單,有以下的優(yōu)點(diǎn):
debootstrap 生成的小 ubuntu 能方便使用 apt 安裝額外的工具
可直接把驅(qū)動(dòng)模塊拷貝到小鏡像內(nèi)使用
定制腳本非常簡單容易
整個(gè)小系統(tǒng)在不安裝額外的軟件和內(nèi)核模塊的情況下,為 100 M 左右,并可加入 busybox 后裁減到 40-50 M(包含完整的基礎(chǔ)庫)。在安裝了 python3 (完整的 python3 ),可裁減到 110 M 左右。