什麼是基於web技術的安裝器(web-based installer)?
傳統的Linux操作系統安裝需要啓動一個LiveOS,然後在LiveOS中運行一個本地安裝程序,如Fedora下的Anaconda. LiveOS除了讓用戶在安裝操作系統之前能預先體驗之外,也爲安裝器提供了運行環境。這對於桌面操作系統已然足夠,因爲PC、筆記本電腦自帶終端設備——鍵盤、顯示器、鼠標。然而,如果要給一臺服務器安裝操作系統則稍微複雜了一點,因爲服務器通常沒有這些終端設備。這就需要利用網絡和VNC將服務器端的圖像傳送出來。這樣做的缺點在於,網絡負載很大,在網絡條件不好的環境下會帶給用戶非常差的安裝體驗。另外,本地安裝器也會依賴很多的圖形軟件包,不僅會增加ISO的大小,也會帶來很多版權及法律上的工作量。
基於web技術的安裝器則利用web開發技術——HTML5,Javascript,CSS,web server等,讓用戶可以通過瀏覽器直接安裝操作系統。目前,"KVM for IBM z Systems"已經採用這種安裝方式。
基於web技術安裝器的優勢
- 依賴更少的軟件包
- 非常小的網絡負載,網頁加載後只需要通過Ajax來與服務器通信
- 可通過瀏覽器跨平臺訪問
- 對於服務器及集羣安裝非常方便
- 易於與其他軟件集成,提供RESTful API
- 滿足可訪問性,方便殘障人士使用
使用web安裝器的安裝流程
使用web安裝器來安裝操作系統的流程非常簡單,只需要如下幾個步驟:
- 加載ISO
- 用https://{IP_OF_SERVER}作爲URL來訪問安裝器
- 按照安裝器的引導完成安裝
- 點擊安裝器的重啓按鈕重啓服務器,安裝完成
Web安裝器實現的功能
- 國際化及多語言支持,選擇安裝語言與系統語言
- 版權聲明
- 磁盤列表及選擇安裝磁盤
- 添加SCSI磁盤
- 添加DASD磁盤
- Swap分區加密
- 自動分區
- 手動分區
- 分區操作列表
- 激活網卡
- IPv4配置
- IPv6配置
- 主機名及搜索域配置
- NTP配置
- Kdump配置
- 時區設置
- Root密碼設置
- 添加、刪除用戶
- 配置總結列表
- 無人值守安裝
- 安裝日誌下載
Web安裝器的架構設計
Web安裝器分爲前端和後端兩部分實現:前端負責UI展示及用戶交互,後端負責給前端提供RESTful API並根據前端的API調用來存儲用戶配置數據,執行分區、安裝、配置目標系統等操作。
Web安裝器由4個HTML頁面組成:
- 歡迎頁:介紹操作系統,提供選擇安裝語言的下拉框,點擊下一步可進入到版權聲明頁
- 版權聲明頁:顯示版權文件,在用戶同意後可跳轉到配置頁面
- 配置頁:引導用戶進行系統配置
- 安裝頁:展示安裝進度,安裝完成後可點擊重啓按鈕重啓系統
UI是基於HTML5、CSS3及Javascript等網頁開發技術,並利用如下工具:
- jQuery:一個快速、小巧且功能豐富的js庫,可用來操作DOM,處理事件及Ajax請求
- Bootstrap:最流行的前端開發框架之一,多用於開發響應式、移動優先的web項目
- Bootstrap-select: jQuery 插件,利用Bootstrap,但提供了功能更加豐富的下拉選擇框控件
- Jquery Validation :jQuery插件,用來檢驗表單的合法性
後端由以下幾個模塊組成:
- CherryPy:一個輕量級的python web發佈器
- Model:存儲用戶的配置數據
- RESTful API:爲前端提供API接口
- 子功能模塊:提供安裝器的各個子功能