鳳梨酥計劃:FreeBSD on OpenStack

最近都在交大計中內玩 OpenStack 相關的事情。

FreeBSD 是我架伺服器的首選,令人意外的是要在 OpenStack 上面跑 FreeBSD 到現在依然都還沒有很好的方案…

CNMC 和交大計中都大量使用 FreeBSD ,同時我們也在研究 OpenStack ,在 OpenStack 上跑 FreeBSD 能提供我們很多好處。同時,身為 FreeBSD 的使用者和支持者,當然希望更多人來使用,也擔心現在很多的使用狀況都是在 VM 裡頭,如果 FreeBSD 沒辦法在雲端環境下運行,就是多了使用上的限制,不利於 FreeBSD 的普及。

因此我,Iblis 和 Apua ,決定開始計劃來讓 FreeBSD 像各種 Linux 一樣在 OpenStack 環境下輕鬆順利的部署和運行。我們將計劃命名為鳳梨酥計劃!(這個名字讓我們笑了很久,會取這個名字是因為使用來自台灣的東西更可以凸顯這個計劃的發源)

鳳梨酥計劃基本上就是給 FreeBSD 用的 cloudinit

計劃分為兩大部分。一為 instance 的開機腳本,會在開機時讀取 OpenStack 的各種環境變數並依照環境變數來設定 instance ,這部分稱為 bsd-cloudinit ,做的事情和 Linux 上面的 cloudinit 相近。第二部分為 VM template 化腳本,在建立 template 的時候使用,負責移除 VM 的各種特徵,如 SSH host key ,以免屆時開新 instance 的時候 VM 的特徵重複。除此之外還要負責安裝 bsd-cloudinit ,我們將第二部分稱為 bsd-cloudinit-installer

命名

會開始做這件事情是想說,這件事情應該很簡單,但是卻沒有人做(我也很納悶為什麼沒有人做)。在 FreeBSD 上面做各類的系統管理只要用 CLI 就可以完成,我們要做的事情只是把外面的資訊拉進來,和這些動作黏在一起,就做完了。

剛開始我們就確立了一個方向,就是不要管 code 有多髒,能動就好。後來覺得這真的是正確的決定。由於不管架構、維護性等問題,我們很快就做出基本的功能。快速做出基本功能有一個重要的好處就是可以迅速獲得進度的回饋(你看,我們這麼快就做出這個功能了!),有進度就產生成就感,成就感對於計劃的繼續進行我認為很重要。要是我們顧慮很多,拖了很久還做不出第一個功能,因為沒有明顯的進度,心理上就很難產生成就感,很可能連第一個功能都沒做出來就不想做了。

計劃的命名也讓我們想了很久和笑了很久,剛開始我們提了一堆希臘神明之類的名字(因為拼起來很酷XD)。可是其實我一直覺得開源計劃的名稱應該要達到幾個目的:能夠顯示計劃的緣起、計劃的功能、好念、好記,再來還要看起來很酷很先進。

計劃剛開始我只有找 Iblis ,那天我給 Iblis 做 OpenStack 架構的簡報,Apua 走進來問我們要幹嘛,我就簡單講了一下然後附帶問了一句「要不要加入」,然後 Apua 就加入計劃了www

第一天我們就開始想名稱了哈哈,剛開始想了一堆希臘神明的名字,那天我剛好有帶鳳梨酥當點心,靈機一動就提出用鳳梨酥當名字XDD

鳳梨酥這名字超棒,首先,它顯示了我們的起源——台灣,只有台灣有這種點心。再來,它好念而且念起來很酷(對於不會中文的人而言),想像一個老外說 “feng li su" 的聲音XD

但是為了顯示計劃目標,我們還是再加了一個附標題:bsd-cloudinit

開發過程

幾乎都是以半 hackathon 的方式進行的,我們大概花掉幾個週末和平日晚上吧。

Iblis 負責用各種骯髒的方法用 shell script 實作各種動作,因為我們兩個都不會寫 Python ,Apua 提供 Python 支援,幫我了解 cloudbase-init 的架構,我比較了解 OpenStack 和 cloudinit 的架構,所以我要提供其他人方向,還有架構用以前弄好的 OpenStack 提供測試環境,還有負責 build template 、寫文件、去 mailing list 宣傳什麼的。

我們三人的領域都不太相同,但都互相稍微了解對方的領域。合作起來很愉快的一點就是一旦遇到問題就可以互相回答,像是不確定要用哪種實作的時候馬上就有人可以討論、分析和決定。不像我常常自己寫程式寫到一半沒辦法決定 implementation 就整個卡在那邊猶豫很久,要是猶豫太久就會開始打混了XD

成果

我們的計劃被加進 OpenStack Image Guide 了!超爽

下一步

最大的重點就是把 cloudconfig 的功能加進去,這樣才是真的自動化啊。

還有很多很髒的的地方要稍微修一修⋯⋯

鳳梨酥計劃主網站及說明文件

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s