返回文章列表

建構Linux DevOps實用實驗室

本文提供建構 Linux DevOps 實驗室的完整,從硬體選購、環境設定到網路組態,涵蓋了建立高效能且經濟實惠的實驗環境所需的一切。文章詳細說明瞭硬體需求、儲存方案選擇、舊電腦再利用以及網路架構設計,並特別介紹了樹莓派在實驗室環境中的應用。透過實務經驗分享和步驟拆解,幫助讀者快速上手,開發自己的 Linux

DevOps Linux

從早期 Linux 使用者的經驗談起,帶出建構 Linux 實驗室的需求和重要性。隨著 DevOps 的興起,擁有可操作的 Linux 環境變得更加重要。本文將引導讀者逐步建立自己的 Linux DevOps 實驗室,涵蓋硬體裝置的選擇、軟體環境的組態,以及網路的建構。從個人電腦、舊硬體到樹莓派,讀者可以根據自身情況選擇合適的裝置,並學習如何將它們整合到實驗室環境中。網路組態部分則著重於安全性與效率,建議使用雙網路組態,將實驗室網路與外部網路隔離,同時確保網路速度能滿足實驗需求。

介紹Linux的力量

在1990年代中期,當我的母親給我一台淘汰的x386 IBM相容電腦時,我並不完全清楚我要用它做什麼,但我覺得非得讓它運作起來不可。我面臨的最大挑戰是經濟上的,而不是技術上的。我太吝嗇買一份授權的Windows 3.1,因此開始尋找替代方案。幸運的是,我找到了一本名為《Linux Installation & Getting Started》的書,由Matt Welsh撰寫,它向我展示了入門所需的一切。我透過56k資料機下載了Slackware Linux的安裝檔案,將它們寫入一疊軟碟中,當系統成功啟動時,我發出了一聲歡呼。那一刻顯著地改變了我的未來,Linux和開源軟體成為我生活中的重要部分,首先是作為一種愛好,最終成為我的職業。

其他早期的Linux使用者也有類別似的故事。像他們一樣,我被自由下載和安裝完整作業系統並進行「真正的運算」的能力所吸引。在接下來的幾年裡,我購買了許多厚厚的Linux書籍,安裝了數百(也許數千)個Linux系統,並學習如何使用和依賴開源軟體。這種經驗被封裝在這本文中。

自1991年Linus Torvalds首次發布Linux(以及辛苦開發的核心)以來,技術世界已經發生了巨大的變化,並且已經有很多人對此進行了著述。Linux和網際網路一起成長絕非巧合。Linux仍然是技術領域的重要組成部分,催生了整個產業和許多高薪工作。它是現代生活的核心,儘管很少有人意識到這一點。今天的軟體開發者當然聽說過它,但許多人從未有機會真正探索它。

為何選擇《實用Linux DevOps》?

《實用Linux DevOps》旨在成為IT從業人員(或那些希望成為IT從業人員的人)的一本必備Linux書籍,適合那些想要探索Linux和使現代軟體運作的技術的人。它提供了圍繞DevOps實踐的真實世界教程和範例,這種實踐不斷地構建、測試和佈署軟體應用程式,彌合了開發端(想想軟體和安全工程師)和維運端(想想硬體管理員)之間的差距。DevOps是現代軟體開發的方式,而Linux正處於這一切的核心。本文旨在在DevOps的背景下教授您實用的Linux概念,讓您具備自信地繼續探索所需的知識。

學習網路釣魚的藝術

本文的章節代表了我將多年的Linux和開源軟體經驗與新使用者的需求相結合的成果。我試圖以任何人都能理解的方式解釋概念,並提供足夠的背景來解釋為什麼要這樣做,而不僅僅是如何做。我希望讓您感到意猶未盡,並具備推理出如何繼續學習的能力。諺語說:「如果你給一個人一條魚,你就餵飽他一天;如果你教一個人怎麼網路釣魚,你就餵飽他一輩子。」《實用Linux DevOps》的目標就是教您如何網路釣魚(並且不害怕命令列)。

Linux能帶您去哪裡?

由於Linux執行在NASA正在探索火星的毅力號探測器上,天空已不再是極限。本文將幫助您成為其中的一部分。

本文結構與目標

本文將引導您逐步瞭解Linux和DevOps的世界,從基礎知識到進階主題。我們的目標是讓您不僅僅是跟隨教程,而是能夠獨立思考和解決問題。無論您是剛剛開始還是已經具備一定的經驗,本文都將為您提供寶貴的見解和實用的技能。

學習路徑

  1. 基礎知識:瞭解Linux的基本概念和命令列操作。
  2. DevOps實踐:學習如何使用Linux進行持續整合和持續佈署(CI/CD)。
  3. 基礎設施即程式碼:使用Terraform等工具自動化您的基礎設施佈署。
  4. 進階主題:探索Proxmox等虛擬化技術,並學習如何將其與Terraform結合使用。

透過遵循本文的學習路徑,您將具備在現實世界中應用所學知識的能力,並進一步探索Linux和DevOps的世界。

結語

Linux是一個強大而靈活的作業系統,它在現代技術領域中扮演著至關重要的角色。無論您是開發者、系統管理員還是IT專業人員,掌握Linux都將為您的職業生涯開啟新的機會。希望本文能夠成為您在Linux和DevOps旅程中的有力伴侶,幫助您實作您的目標。

環境設定

在開始進行DevOps相關的工作之前,設定一個舒適且高效的工作環境是非常重要的。本章節將介紹如何設定Linux工作站,以提升工作效率。

工作站的選擇

本文假設讀者將使用Linux工作站進行所有工作,而不僅僅是虛擬機器和容器。舊硬體同樣可以發揮作用,因此無需過度擔心硬體組態問題。書中的範例大多使用Ubuntu(根據Debian),當然也可以使用其他Linux發行版。

環境設定

安裝完Linux桌面版後,有幾個步驟可以讓工作環境更加舒適。

免密碼sudo設定

當你需要以超級使用者身份執行命令時,sudo需要輸入密碼。頻繁輸入密碼會很麻煩。可以在/etc/sudoers.d/目錄下建立一個檔案來解決這個問題。

$ sudo vi /etc/sudoers.d/<username>
<username> ALL=(ALL) NOPASSWD:ALL

終端機外觀設定

花一些時間調整終端機的外觀,使其更符合個人喜好。可以調整字型、字型大小、文字顏色和背景顏色。

電源設定

調整系統的電源設定,將螢幕超時時間設為至少30分鐘,以避免頻繁登入。

多台電腦共用鍵盤滑鼠

如果同時使用多台不同的工作站,可以使用Barrier這款工具來共用鍵盤和滑鼠。它允許在同一網路下的多台電腦之間共用輸入裝置。

檔案傳輸

使用SCP傳輸檔案

可以使用SCP(Secure Copy)工具在不同Linux機器之間傳輸檔案。它使用SSH協定進行安全的檔案複製。

$ scp /path/to/local_file username@remote_host:/path/to/remote_file

若要複製整個目錄,可以使用-r引數:

$ scp -r /path/to/local_folder username@remote_host:/path/to/remote_folder

設定免密碼SSH

透過設定SSH金鑰,可以在多台機器之間進行無密碼的SSH和SCP操作。

首先,在工作站上生成SSH金鑰:

$ ssh-keygen

然後,將生成的金鑰複製到目標系統:

$ ssh-copy-id username@remote_host

結語

完成上述設定後,就可以開始深入學習DevOps相關知識。同時,也可以利用本文相關的GitHub倉函式庫中的程式碼範例來加速學習程式。

蒐集硬體裝置

要開始建立Linux實驗室以進行DevOps,首先需要蒐集一些硬體裝置。這樣可以在不影響主要工作站的情況下進行實驗。

所需硬體

本文假設讀者具備以下硬體裝置:

  • 至少一台獨立的實體電腦系統
  • 至少一個基本的網路交換器
  • 備用的顯示器、鍵盤和滑鼠(可選)
  • Ethernet線和周邊線材

大多數技術愛好者家中都有一些舊裝置,可以用來建立實驗室。如果沒有,也不必花費大量金錢購買新裝置。

硬體蒐集的靈活性

本文鼓勵讀者利用手邊現有的資源。舊硬體同樣可以發揮作用,因此無需過度擔心硬體組態問題。公共雲端服務供應商雖然方便,但會產生費用,而且可能會遮蔽一些重要的環境細節。透過建立本地Linux實驗室,可以在不產生費用的情況下獲得速度和便利性,同時也能更深入地瞭解伺服器和應用程式執行的環境。

建構Linux實驗室的基礎:硬體需求解析

建立Linux實驗室環境的核心原則非常簡單:建立一台強大的虛擬機器(VM)主機,具備盡可能多的記憶體和CPU資源,以便能夠執行盡可能多的虛擬機器和Linux容器(LXCs)。

實體實驗室節點的基本硬體需求

要執行Proxmox虛擬化環境,每個實體實驗室節點至少需要滿足以下基本硬體組態:

  • 支援64位元的CPU,如Intel i3、i5或i7,或AMD Ryzen 3、5或7系列處理器
  • 至少8GB的RAM
  • 一顆容量至少256GB的硬碟或固態硬碟硬碟(SSD)
  • 一個乙太網路埠
  • 一個VGA或HDMI視訊輸出埠
  • 一個可用的USB埠

若要建立更強大、更具彈性的實驗室環境,建議每個實體節點具備:

  • 至少32GB的RAM
  • 多顆硬碟或SSD
  • 兩個乙太網路埠

規劃實驗室環境的注意事項

在建立實驗室環境時,花一些時間思考最終目標至關重要。您是否會執行數十台虛擬機器,還是隻需要幾台?效能對於您的實驗室有多重要?您的網路架構是複雜還是簡單?即使您現在無法確定這些問題的答案,但在規劃時仍應將其納入考量。

例如,在使用Proxmox作為虛擬化環境時,如果已經在執行中的環境中增加了虛擬機器,就很難再將新的機器加入叢集。這意味著在佈署任何虛擬機器之前,您需要先設定好至少兩台Linux實驗室主機。

使用新裝置建立實驗室

建構Linux實驗室的樂趣之一在於找到新方法來利用舊裝置。然而,在某些情況下,舊硬體可能會帶來更多麻煩。使用乾淨、全新的系統可以讓您快速啟動並執行,減少挫折感。

適閤家庭Linux實驗室的裝置

過去,如果您想要一台具備8核心CPU、32GB RAM和1TB硬碟的電腦,您需要購買昂貴的刀鋒伺服器。如今,這類別系統已變得普及、更小巧,且價格遠低於以往。一些適合用於家庭Linux實驗室的裝置包括Intel、Gigabyte、ASRock、Asus和Kingdel等品牌所生產的產品。

對於Linux實驗室主機伺服器,您會希望使用迷你PC或塔式系統。前者體積小巧、功耗低;而後者則在CPU、RAM和儲存方面提供了更大的彈性。筆記型電腦也是可行的選擇,但價格可能較高。不過,使用筆記型電腦組建實驗室可以減少線纜和周邊裝置的需求。

存取Proxmox伺服器

您將透過根據瀏覽器的儀錶板以及偶爾的遠端shell來遠端存取Proxmox伺服器。初始組態完成後,您可以從工作站管理整個環境。主機將以無頭模式執行。

CPU核心考量

選購具備最快x86_64(Intel或AMD)CPU和盡可能多核心的裝置。系統底層的核心數量越多,可供虛擬機器使用的虛擬CPU就越多。這對於佈署Kubernetes或OpenStack等解決方案尤為重要,因為它們需要同時執行多台機器。如果CPU核心數量不足,效能將會受到影響,使得Linux實驗室過於緩慢而無法使用。

雖然也可以使用根據ARM的CPU,但x86_64架構仍然是更健全的開發環境。許多應用程式可以在ARM處理器上順暢執行,但某些前沿或舊版應用程式可能無法使用。

選購迷你PC時,需注意其擴充性有限。有些小型主機將CPU直接焊接在主機板上,無法更換。如果您希望擁有可更換CPU或安裝多顆內部硬碟的系統,請選擇塔式系統。不過,這類別系統通常噪音較大且功耗更高。

記憶體考量

如同前文所述,在佈署多功能Linux實驗室時,記憶體越多越好。一般來說,迷你電腦的最大記憶體限制為32GB。雖然這個容量不算小,但塔式機器的記憶體擴充能力通常更強,可以輕易達到兩倍或三倍以上的容量。

選購迷你電腦時,若發現某款產品僅配備4GB RAM,不建議購買。應考慮新增更多記憶體。由於大多數主機板要求成對安裝記憶體晶片,因此您可能只能再新增一顆4GB晶片,使總容量達到8GB。而對於某些迷你PC來說,這已經是上限,因為它們通常只有兩個RAM插槽。

建議直接訂購至少配備一顆8GB RAM晶片的裝置,以便日後擴充。在購買記憶體時,請務必檢查技術規格,以確保選購正確且相容的記憶體晶片。

虛擬機器的資源分配

在Proxmox系統上建立的每台虛擬機器都會佔用主機的CPU和RAM資源。因此,無論是CPU還是RAM,都多多益善。有些應用程式對CPU要求較高,而其他應用程式則更依賴RAM。主機環境會在各個虛擬機器之間共用所有資源,因此記憶體越多,您就能建立越多的系統,且這些系統會更加穩健。

Proxmox虛擬化環境只會為執行的虛擬機器分配必要的CPU和RAM資源。即使您為某台虛擬機器分配了8GB RAM,它在大多數執行時間內可能只需要2GB。剩餘的RAM可以被其他執行的系統使用。

綜上所述,建立Linux實驗室時,充足的硬體資源是基礎。選擇合適的CPU、足夠的記憶體和適當的儲存組態,將有助於開發一個強大且靈活的實驗環境,為各種Linux相關的研究與實踐提供堅實的支援。

硬體儲存考量與舊電腦的利用

在建立Linux實驗室的過程中,硬體儲存是一個重要的考量因素。隨著儲存裝置價格的持續下降,尋找一個合適的硬體組態變得相對容易。固態硬碟硬碟(SSD)和新一代的NVMe固態硬碟硬碟提供了更快的讀寫速度,並且有多種不同的容量可供選擇。

儲存裝置的選擇

  • SSD與NVMe:建議至少選擇半個TB的儲存空間,如果預算允許,應該考慮購買更大容量的硬碟。Proxmox本身並不需要太多的磁碟空間,大部分的空間將被虛擬機器所佔用。
  • 混合使用新舊硬碟:可以將Proxmox安裝在較小的硬碟上,而將其他硬碟用於虛擬機器的儲存。這樣可以充分利用現有的硬體資源。
  • 擴充套件儲存方案:對於一些沒有SATA介面的小型裝置,可以透過PCIe轉接卡連線到USB 3.0埠來增加外部儲存。這是一種經濟實惠的解決方案。

舊電腦與筆電的再利用

許多舊電腦和筆電仍然可以被用來建立Linux實驗室。關鍵在於檢查這些裝置的底層架構是否支援64位元運算和虛擬化技術。

  • 檢查系統組態:如果系統上安裝了Windows,可以透過檔案管理員右鍵點選「此電腦」圖示並選擇「屬性」來檢視系統組態。同樣地,對於蘋果電腦,可以點選左上角的蘋果標誌並選擇「系統屬性」來檢視硬體組態。
  • 虛擬化的需求:32位元系統由於虛擬化功能的限制,不太適合用於建立Linux實驗室。64位元系統則可以充分利用多執行緒功能。

使用Raspberry Pi和物聯網裝置

Raspberry Pi和其他物聯網(IoT)裝置可以輕易地整合到實驗室環境中,為學習和實驗提供更多的可能性。

  • Raspberry Pi的優勢:Raspberry Pi是一種非常適合用於建立Linux實驗室的裝置。它不僅價格便宜,而且具有足夠的運算能力來執行多個虛擬機器或容器。

為Linux實驗室選擇合適的硬體

在眾多的單板裝置中,樹莓派(Raspberry Pi)因其支援多種Linux作業系統(包括根據Debian的Raspbian預設系統)、價格實惠以及龐大的開發者社群而成為理想的選擇。後者對於佈署應用程式和服務至關重要,因為很有可能有人已經嘗試過你想做的事情,網際網路上充滿了和資訊。沒有其他單板裝置能像樹莓派一樣擁有如此豐富的可利用內容。

選購樹莓派的注意事項

在為Linux實驗室購買樹莓派時,請務必選擇至少是版本3的型號。樹莓派4(RPi4)型號更為理想,因為它們具備更快的CPU、更大的RAM以及板載WiFi和藍牙。向廠商查詢最佳的儲存選項,因為並非所有的SD卡都適合(足夠耐用和快速)執行樹莓派。

如果你購買的樹莓派是獨立裝置而非套件,請確保你有足夠的迷你USB和USB-C線纜為它們供電。樹莓派4使用USB-C供電,並具有微型HDMI埠,因此你需要一個轉接器來連線配備全尺寸HDMI埠的顯示器。

樹莓派的佈署和管理

大多數時候,你會在無頭模式下執行樹莓派——沒有顯示器或鍵盤——但初始組態通常需要這些介面。

一個USB供電集線器對於樹莓派來說非常方便。它們使你能夠將五個或更多的迷你USB線插入單一裝置,而該裝置只需佔用一個牆上插座。這比新增電源插線板來容納半打牆上變壓器要好得多。

樹莓派體積小巧,因此可以在很小的空間內放置很多個。我喜歡購買廉價的架子來整齊地堆積放四個或更多樹莓派。

樹莓派的功能與應用

曾經被視為玩具的樹莓派,現在已遠不止於此。它們可以驅動4K顯示器,並且透過額外的USB儲存裝置,你可以將它們用作媒體串流裝置。在你的實驗室環境中,它們是佈署應用程式和容器的絕佳選擇,讓你能夠以非常低的成本擴充套件實驗室。

在我的實驗室中,我曾佈署了一個由四個樹莓派組成的叢集來託管容器化的應用程式,甚至是一個成熟的Ceph儲存叢集。當然,用於儲存的效能並不適合生產環境,但對於需要多個裝置的應用程式來說,它們提供了一個優秀、廉價的學習平台。

為你的Linux實驗室構建網路

為了使你的Linux實驗室對所有你想做的DevOps工作真正有價值,它必須連線到網路,以便你可以安裝軟體包、透過shell遠端存取它,並讓它提供像網頁和DNS資訊這樣的資源。這需要在主機上至少有一個乙太網路介面。

幸運的是,你有很多選擇,可以在不必花費太多錢的情況下獲得良好的效能。像NETGEAR、Dell、D-Link、Linksys和TP-Link這樣的知名廠商,都為你的實驗室主機製作了合適的1GB網路裝置,如果它們不是已經內建的話。

網路介面與交換器的選擇

如果你計劃使用較舊的系統,你可以使用100MB的乙太網路埠,但1GB的連線更好。實驗室環境中的所有東西都會因為更快的網路而表現更好,並且網路安裝可以真正受益於額外的頻寬。當然,要利用任何Linux實驗室主機上的1GB網路介面,你需要一個能夠處理1GB速度的網路交換器。許多低成本的選項可供選擇。

雙網路組態的優勢

在實驗室環境中執行兩個獨立的網路是理想的,為此需要在你的實體系統(包括你的工作站)上具備兩個獨立的網路介面。理想情況下,這些應該是實體乙太網路埠或USB 3加密狗,但一個實體埠和WiFi功能可以比單一埠更好。兩個獨立的網路介面使你能夠隔離你的網路流量,並幫助保持你的實驗室安全。

網路組態原則

這裡的原則是為所有的實驗室流量建立一個網路,並為存取網際網路建立另一個網路。在家庭環境中,你通常透過ISP提供的路由器來實作後者。前者將是一個使用小型千兆乙太網路交換器或路由器的私有網路。

WiFi已經足夠強大,可以支援本文中描述的大多數應用程式和佈署,但要使其運作可能有點棘手,而且它並不總是像有線網路介面那樣穩健。如果你願意花一點時間,並且願意接受一些小問題,可以嘗試使用WiFi。

管理型與非管理型交換器

如果你剛開始,非管理型交換器易於使用且價格便宜。它們提供了啟動和執行簡單網路所需的一切。只需插入一些乙太網路線,將它們連線到你的工作站和實驗室主機,你就可以開始執行了。它們能夠很好地傳輸網路流量,而且相當不會出錯。