最近的工作涉及到服務器自動安裝和網(wǎng)絡部署操作系統(tǒng),然后使用 ansible 和 saltsatck 進行配置并安裝 openstack 。
難點在于服務器的自動安裝,由于不單只是通過 PXE 安裝服務器,還需要能夠安裝時進行分區(qū)、配置網(wǎng)卡等工作,因此需要在開始安裝前,必須先收集服務器的硬件信息。
調研了一下目前的開源項目中,提供此類功能的有 tinycorelinux 、 puppet razor-el-mk 可做類似的工作。tinycorelinux 是個很好的工具,整個系統(tǒng)在 PXE 之后在內存中執(zhí)行,可在里面加上簡單的 agent 完成任務報告的工作;razor 是 puppet 綁定在一起用的,el-mk 基于 centos ,它在里面裝了 razor 的 agent,使用 facter 進行硬件信息收集。
這些方案的基本思路都是相通的,首先通過 PXE 下載 microkernel ,然后直接在內存中執(zhí)行,啟動網(wǎng)卡,運行 agent 并向服務器匯報信息,并接收來自服務器的命令。基本的技術原理都是 PXE + linux initramfs ,根據(jù)不同的需要向 initramfs 中加硬件驅動。
仔細研究了一下之后,發(fā)現(xiàn)用 debootstrap + busybox 工具做這樣的小系統(tǒng)會更加簡單,有以下的優(yōu)點:
debootstrap 生成的小 ubuntu 能方便使用 apt 安裝額外的工具
可直接把驅動模塊拷貝到小鏡像內使用
定制腳本非常簡單容易
整個小系統(tǒng)在不安裝額外的軟件和內核模塊的情況下,為 100 M 左右,并可加入 busybox 后裁減到 40-50 M(包含完整的基礎庫)。在安裝了 python3 (完整的 python3 ),可裁減到 110 M 左右。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26