用 Foreman 管理 CentOS Stream
這個例子讓我們看到了在 Foreman 中管理和配置 CentOS Stream 內(nèi)容的許多選項。
2021 年 12 月,CentOS 8 將達到生命終點,被 CentOS Stream 取代。CentOS Stream 和 CentOS 之前的迭代之間的主要變化之一是沒有小版本。Centos Stream 采用了一個連續(xù)的發(fā)布周期。從今年年初開始,F(xiàn)oreman 社區(qū)的開發(fā)者開始看到 CentOS Stream 由于持續(xù)發(fā)布而提供的更早的錯誤檢測和補丁的好處。我們不再需要等待下一個版本來利用最新的變化和錯誤修復(fù)。一位資深的 Linux 社區(qū)愛好者 指出,此舉也使 RHEL 開發(fā)者比以往更接近 FOSS 社區(qū)。
然而,如果你是一個擁有數(shù)百或數(shù)千臺服務(wù)器的管理員,你可能想控制新的軟件包何時被添加到特定的服務(wù)器。如果你正在尋找一個免費的開源工具,幫助你確保生產(chǎn)服務(wù)器的穩(wěn)定性,同時允許你安全地從 Centos Stream 中拉入最新的變化用于開發(fā)和測試,這就是 Foreman 可以幫助你的地方。有了 Foreman,你可以在生命周期環(huán)境的各個階段管理你的 Centos Stream 內(nèi)容。
Foreman 介紹
Foreman 是一個完整的物理和虛擬服務(wù)器的生命周期管理工具。有了 Foreman,系統(tǒng)管理員有能力輕松實現(xiàn)重復(fù)性任務(wù)的自動化,快速部署應(yīng)用程序,并主動管理內(nèi)部或云中的服務(wù)器。Foreman 為配備管理、配置管理和監(jiān)控提供了企業(yè)級解決方案。由于其插件架構(gòu),F(xiàn)oreman 可以以無數(shù)種方式進行擴展。使用 Katello 插件,你可以把 Foreman 作為一個完整的內(nèi)容管理工具來管理 CentOS Stream,以及其他許多內(nèi)容類型。
通過 Foreman 和 Katello,你可以準確地定義你希望每個環(huán)境包含哪些軟件包。例如,生產(chǎn)環(huán)境可能使用已被驗證為穩(wěn)定的軟件包,而開發(fā)環(huán)境可能需要最新、最先進的軟件包版本。你還可以跨生命周期環(huán)境推廣內(nèi)容視圖。讓我們來看看 Foreman 是如何完成這個任務(wù)的。
我們在這篇文章中使用了網(wǎng)頁用戶界面,但 Foreman 也有一個強大的 CLI 和 API。Katello 插件為 Pulp 項目提供了一個工作流和網(wǎng)頁用戶界面,你可以在 這篇文章 中了解更多。我們在這里也提供了一個簡單的工作流程,但是 Foreman 和 Katello 項目提供了許多不同的配置選項來滿足你的具體需求。
本文假設(shè) Foreman 和 Katello 已經(jīng)安裝完畢。關(guān)于如何安裝的更多信息,請參閱 Katello 安裝手冊。
創(chuàng)建一個產(chǎn)品
第一步是在 Foreman 中創(chuàng)建一個產(chǎn)品。該產(chǎn)品的功能是作為一個內(nèi)部標簽來存儲 CentOS Stream 存儲庫。
- 在 Foreman 網(wǎng)頁用戶界面,導(dǎo)航到“內(nèi)容 > 產(chǎn)品”,并點擊“創(chuàng)建產(chǎn)品”。
- 在“名稱”字段中,為產(chǎn)品輸入一個名稱。Foreman會根據(jù)你輸入的“名稱”自動完成“標簽”字段,以后不能再更改。
將 CentOS Stream 存儲庫添加到產(chǎn)品中
現(xiàn)在你有了一個產(chǎn)品,你可以使用 AppStream 和 BaseOS 存儲庫的 URL,并將它們添加到你的新產(chǎn)品中。
- 在 Foreman 網(wǎng)頁用戶界面中,導(dǎo)航到 “內(nèi)容 > 產(chǎn)品”,選擇你要使用的產(chǎn)品,然后點擊 “新存儲庫”。
- 在“名稱”字段中,為存儲庫輸入一個名稱;例如,“Centos8StreamBaseOS”。Foreman 會根據(jù)你輸入的“名稱”,自動完成“標簽”字段。
- 從“類型”列表中,選擇存儲庫的類型,然后選擇“Yum”。
- 在 “URL” 字段中,輸入 CentOS Stream Baseos 存儲庫的 URL,作為源:
http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/
。 - 選擇“下載規(guī)則”列表。默認的是“按需”,這意味著 Katello 將只下載元數(shù)據(jù)。如果你想下載所有的軟件包,請改成“即時”,它可以下載所有的軟件包,可能會達到 20-30GB。
- 確保“與鏡像同步”復(fù)選框被選中。這個選項確保在同步過程中,不再是上游存儲庫的一部分的內(nèi)容被刪除。
- 點擊“保存”。
重復(fù)這些步驟,添加 AppStream 存儲庫及其 URL,例如,http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/
。確保你使用最近的官方 CentOS 鏡像來代替它。
要執(zhí)行立即同步,在你的產(chǎn)品窗口,點擊“立即同步”。最初的同步可能需要一些時間。你可以從“內(nèi)容 > 同步狀態(tài)”查看同步狀態(tài)。
同步完成后,你可以在“主機 > 操作系統(tǒng)”中查看新的 CentOS Stream 操作系統(tǒng)。請隨意編輯名稱和描述以滿足你的要求。
如果你打算使用 Ansible 或 Puppet 等配置管理軟件,F(xiàn)oreman 會自動創(chuàng)建一個操作系統(tǒng)報告。你可以在“管理 > 設(shè)置 > 忽略操作系統(tǒng)狀況”中關(guān)閉這個選項。重命名操作系統(tǒng)以匹配配置管理軟件中的名稱是一個好主意。例如,對于 Puppet,這將是“CentOS 8”。
定義你的基礎(chǔ)設(shè)施的生命周期環(huán)境
應(yīng)用程序生命周期是 Foreman 的內(nèi)容管理功能的一個核心概念。應(yīng)用程序的生命周期定義了一個特定的系統(tǒng)和它的軟件在特定階段的狀況。例如,一個應(yīng)用程序的生命周期可能很簡單,你可能只有一個“開發(fā)”階段和“生產(chǎn)”階段。Foreman 提供了一些方法來以可控的方式定制每個應(yīng)用生命周期階段,以適應(yīng)你的規(guī)范。
在這一點上,你必須創(chuàng)建你的生命周期環(huán)境路徑。
- 在 Foreman 網(wǎng)頁用戶界面中,導(dǎo)航到“內(nèi)容 > 生命周期環(huán)境”。
- 點擊“新環(huán)境路徑”,開始一個新的應(yīng)用生命周期。
- 在“名稱”字段中,為你的環(huán)境輸入一個名稱。
- 在“描述”字段中,為你的環(huán)境輸入一個描述。
- 點擊“保存”。
- 根據(jù)你的需要添加盡可能多的環(huán)境路徑。例如,你可以創(chuàng)建“dev”、“test”、“stage” 和 “production” 環(huán)境。要添加這些環(huán)境,點擊“添加新環(huán)境”,完成“名稱”和“描述”字段,并從“優(yōu)先環(huán)境”列表中選擇先前的環(huán)境,這樣你就可以按照你預(yù)期使用的順序?qū)⑺鼈兇?lián)起來。
創(chuàng)建和發(fā)布一個內(nèi)容視圖
在 Foreman 中,“內(nèi)容視圖”是你的存儲庫在某個特定時間點的快照。內(nèi)容視圖提供了隔離軟件包版本到你想保留的狀態(tài)的機制。內(nèi)容視圖有很多可配置的功能,你可以用它來進一步細化。為了本教程的目的,讓我們保持簡單。
- 在 Foreman 網(wǎng)頁用戶界面中,導(dǎo)航到“內(nèi)容 > 內(nèi)容視圖”,并點擊“創(chuàng)建新視圖”。
- 在“名稱”字段中,為視圖輸入一個名稱。Foreman 會根據(jù)你輸入的名稱自動完成“標簽”字段。
- 在“描述”字段中,輸入視圖的描述。
- 單擊“保存”以創(chuàng)建內(nèi)容視圖。
- 在新的內(nèi)容視圖中,點擊“Yum 內(nèi)容 > 添加存儲庫”,在“存儲庫選擇”區(qū)域,點擊“添加”。對于 BaseOS 和 Appstream 存儲庫,選擇你想包括的軟件包,然后點擊“添加存儲庫”。
- 點擊“發(fā)布新版本”,在“描述”區(qū)域,輸入關(guān)于版本的信息以記錄變化。
- 單擊“保存”。
當你點擊“發(fā)布新版本”時,你創(chuàng)建了一個你已同步的所有內(nèi)容的快照。這意味著你訂閱此內(nèi)容視圖的每臺服務(wù)器將只能訪問與此生命周期環(huán)境相關(guān)的內(nèi)容視圖中的軟件包版本。
每一個新的內(nèi)容視圖和后續(xù)版本都會首先發(fā)布到庫環(huán)境,然后你可以在那里推廣到其他環(huán)境。
跨生命周期環(huán)境推廣內(nèi)容
如果你已經(jīng)測試了新的軟件包,并且確信一切都很穩(wěn)定,你可以把你的內(nèi)容視圖推廣到另一個生命周期環(huán)境中。
- 導(dǎo)航到“內(nèi)容 > 內(nèi)容視圖”,選擇你想推廣的內(nèi)容視圖。
- 點擊內(nèi)容視圖的“版本”標簽。
- 選擇你想推廣的版本,并在“操作”欄中,點擊“推廣”。
- 選擇你要推廣內(nèi)容視圖的環(huán)境,并點擊“推廣版本”。
- 再次點擊“推廣”按鈕。這次選擇生命周期環(huán)境,例如,“Test”,然后單擊“推廣版本”。
- 最后,再次點擊“推廣”按鈕。例如,選擇“Production”環(huán)境并點擊“推廣版本”。
被分配到該特定環(huán)境的服務(wù)器現(xiàn)在可以從一套更新的軟件包中提取。
創(chuàng)建一個激活密鑰
為了將 CentOS Stream 服務(wù)器注冊到你在特定生命周期中定義的內(nèi)容,你必須創(chuàng)建一個激活密鑰。激活密鑰是一種與服務(wù)器共享憑證的安全方法。這使用了一個叫做“訂閱管理器的工具來訂閱 CentOS Stream 服務(wù)器的內(nèi)容。
當你創(chuàng)建了激活密鑰后,將 CentOS Stream 訂閱添加到激活密鑰中。
- 在 Foreman 網(wǎng)頁用戶界面中,導(dǎo)航到“內(nèi)容 > 激活密鑰”,并點擊“創(chuàng)建激活密鑰”。
- 在“名稱”欄中,輸入激活密鑰的名稱。
- 在“描述”欄中,輸入激活密鑰的描述。
- 從“環(huán)境”列表中,選擇要使用的環(huán)境。
- 從“內(nèi)容視圖”列表中,選擇你剛才創(chuàng)建的內(nèi)容視圖。
- 點擊“保存”。
從 Foreman 管理的內(nèi)容中創(chuàng)建一個 CentOS Stream 主機
現(xiàn)在一切都準備好了。隨著你創(chuàng)建的內(nèi)容包含在內(nèi)容視圖中,并在整個生命周期中推廣,你現(xiàn)在可以準確地用你想使用的內(nèi)容來配置主機,并訂閱你想讓它們接收的更新。
要在 Foreman 中創(chuàng)建一個主機,請導(dǎo)航到“主機 > 創(chuàng)建主機”。
- 在“名稱”字段中,為主機輸入一個名稱。
- 單擊“組織”和“位置”選項卡,以確保配置環(huán)境自動設(shè)置為當前環(huán)境。
- 從“部署在”列表中,選擇“裸金屬”。
- 單擊“操作系統(tǒng)”選項卡。
- 從“架構(gòu)”列表中,選擇“x86_64”。
- 從“操作系統(tǒng)”列表中,選擇“CentOS_Stream 8”。
- 勾選“構(gòu)建模式”框。
- 對于“媒體選擇”,選擇“同步的內(nèi)容”來使用你之前同步的 CentOS Stream 內(nèi)容。
- 從“同步的內(nèi)容”列表中,確保選擇 “CentOS Stream”。
- 從“分區(qū)表”列表中,對于這個演示,選擇默認的 “Kickstart”,但有許多可用的選項。
- 在“Root 密碼”欄中,為你的新主機輸入一個 root 密碼。
- 點擊“接口”標簽,并點擊“編輯”,并添加一個 “Mac 地址”。
- 點擊“參數(shù)”標簽,并確保存在一個提供激活密鑰的參數(shù)。如果沒有,添加一個激活密鑰。
- 點擊“提交”以保存主機條目。
現(xiàn)在,新的主機處于構(gòu)建模式,這意味著當你打開它時,它將開始安裝操作系統(tǒng)。
如果你導(dǎo)航到“主機 > 內(nèi)容主機”,你可以看到你的主機所訂閱的訂閱、生命周期環(huán)境和內(nèi)容視圖的全部細節(jié)。
這個例子只是對你在 Foreman 中管理和配置 CentOS Stream 內(nèi)容的眾多選項的一個小窺視。如果你想了解更多關(guān)于如何管理 CentOS Stream 版本,控制你的服務(wù)器可以訪問的內(nèi)容,以及控制和保護你的基礎(chǔ)設(shè)施的穩(wěn)定性的詳細信息,請查看 Foreman 內(nèi)容管理 文檔。當所有 CentOS Stream 內(nèi)容在你的控制之下時,你可以創(chuàng)建和注冊 Centos Stream,只使用你指定的內(nèi)容。有關(guān)配備的更多詳細信息,請參見 Foreman 配備 文檔。如果你有任何問題、反饋或建議,你可以在 https://community.theforeman.org/ 找到 Foreman 社區(qū)。