備註:

使用容器建立 DNF 或 ULN 儲存區域鏡像

Oracle 客戶服務部免責聲明

對於下列指示提供的步驟順序,Oracle 不會提供技術支援:這些步驟指 Oracle 提供的開放原始碼專案。本教學課程提供選擇性的說明,方便您處理。

建立 Oracle Linux 軟體發佈鏡像時,Oracle 支援的方法,是在執行 Oracle Linux 的系統上使用 dnf reposync 指令。如需詳細資訊,請參閱 https://docs.oracle.com/en/operating-systems/oracle-linux/software-management/sfw-mgmt-UseSoftwareDistributionMirrors.html#use-mirrors

簡介

Oracle Linux 8 包含 DNF 的完整功能重新同步工具,讓您可以在任何 yum 儲存區域建立鏡像。對於大多數系統沒有網際網路直接存取的環境,可以將此功能延伸至鏡射 ULN 通道。透過建立組織使用之 yum 儲存區域和 ULN 通道的 yum 鏡像,您可以降低網路負荷並改善整個環境的 yum 效能。如果您正在設定環境的其他服務 (例如離線 Ksplice),Yum 鏡像也會很有用。

在舊版 Oracle Linux 中,納入可用來執行鏡像服務的 uln-yum-mirror 套裝軟體,但這並不特別有效,且相對而言只是設定。

ULN 或 yum 鏡像服務是一組容器中最佳執行的一般服務範例。透過使用 Docker 或 Podman,您可以快速輕鬆地部署使用 oraclelinux:8-slim 映像檔的容器,處理組織內使用的 yum 儲存區域或 ULN 通道排定同步。您也可以部署一個容器,負責處理用戶端系統可存取之 Web 服務內鏡像儲存庫的佈建。

openource GitHub 專案提供 Dockerfile、命令檔與指示,從 https://github.com/Djelibeybi/oraclelinux-reposync 設定這類服務。

目標

在本實驗室中,您將瞭解:

必要條件

安裝必要的套裝程式

如果尚未連線,請開啟終端機,透過 ssh 連線到 ol8-server 系統:

ssh oracle@<ip_address_of_ol8-server>

安裝 git,讓您複製容器重新同步儲存區域:

sudo dnf install -y git

安裝 podman 和相關公用程式:

sudo dnf module install -y container-tools:ol8

注意:如果您使用 Oracle Linux 7,則組建和希望套裝程式只能透過不支援的 ESP 儲存區域使用。因此,您可以選擇使用 Docker 來建置和執行容器映像檔。如需瞭解使用 Docker 的詳細資訊,請參閱 openource 專案 README.md

複製容器儲存區域

複製儲存區域:

git clone https://github.com/Djelibeybi/oraclelinux-reposync.git
cd oraclelinux-reposync

建立映像檔

建立儲存區域中所含的兩個容器映像檔:

buildah build-using-dockerfile -t ol-repo-sync .
buildah build-using-dockerfile -t ol-repo-web -f Dockerfile.nginx .

確認組建:

podman images

建立額外的儲存體目錄

必須建立兩個額外的目錄,容器重新同步服務才能正常運作:

這些目錄可以位於任何位置,但建議您將它們和此容器的組態資訊一起建立。例如:

mkdir rhn repo

設定重新同步的組態變數

ol-repo-sync 影像取決於儲存在配置目錄中不同配置檔中的配置資訊。

注意:需要 Oracle Linux 支援訂閱與 ULN 同步。如果您沒有支援訂閱,請從 config/repos.json 完全移除 uln 陣列。

若要獲得最佳同步效能,請儘可能使用 yum 來源取代 uln,因為 yum.oracle.com 利用 Akamai CDN 來利用 Akamai CDN,而且下載速度幾乎永遠比 ULN 更高。

  1. (選擇性) 若您擁有作用中的 Oracle Linux 支援訂閱:

    cp config/uln.sample.conf config/uln.conf
    

    將預留位置換成 Oracle SSO 證明資料和作用中的 CSI。若要保護此檔案的內容,請執行:

    chmod 400 config/uln.conf
    

    這可防止您以外的任何人存取。

  2. 執行下列指令建立 config/repo-map.json 檔案:

    podman run --rm -it \
      --name ol-repo-sync \
      -v ${PWD}/config:/config:z \
      -v ${PWD}/repo:/repo:z \
      ol-repo-sync update
    

    如果想要使用最新的儲存區域組態更新 config/repo-map.json 檔案,可以隨時重新執行此命令。當發行新的更新或主要版本時,至少應該執行該指令,以便能同步新的儲存區域。

  3. 複製 repos.json

    cp config/repos.sample.json config/repos.json
    

    新增所有您要同步的儲存區域至 uln 或 yum 陣列。

    範例:

    以下是將 ULN 中的 Oracle Linux 8 Ksplice aware userspace 套裝程式與 yum.oracle.com 中的 Oracle Linux Automation Manager 套裝程式同步的命令檔。如果您在這個實驗室期間沒有 ULN 帳戶,請移除整個 uln 區塊。

    echo '{
       "uln": [
            "ol8_x86_64_userspace_ksplice",
            "ol8_aarch64_userspace_ksplice"
        ],   
        "yum": [
            "ol8_x86_64_automation"
        ]
    }' | tee config/repos.json
    

(選擇性) 使用 ULN 註冊容器

如果您不想從 ULN 鏡射任何通道,就不需要註冊容器。如果您已將 ULN 證明資料輸入 ULN 組態檔,而且已經建立一個目錄來包含 ULN 註冊資料,而且您至少已在儲存區域組態檔中設定一個 ULN 通道,就必須註冊容器。

註冊可以透過執行:

podman run --rm -it \
  -v ${PWD}/rhn:/etc/sysconfig/rhn:z \
  -v ${PWD}/config:/config:z \
  -v ${PWD}/repo:/repo:z \
  ol-repo-sync register

注意:* 這將需要幾分鐘的時間,不再輸出至終端機,但應在完成後返回命令提示字元。目前工作目錄中的 rhnconfig 目錄會對應至容器中。只要 rhn 目錄對應至您執行之每個後續容器的 /etc/sysconfig/rhn,您只需要為該容器執行一次註冊。

植入您的鏡像儲存庫

若要在鏡像儲存庫中配置配置的儲存庫及通道套裝軟體,請執行以下作業:

podman run --rm -it \
  -v ${PWD}/rhn:/etc/sysconfig/rhn \
  -v ${PWD}/config:/config \
  -v ${PWD}/repo:/repo:z \
  ol-repo-sync

容器會自動新增和訂閱 config/repos.json 中設定的每個通道,並建立 Oracle Linux yum 伺服器所使用的相同階層。

這個指令可以排定使用 cronjob 或 systemd 計時器在週期性排程上執行。

注意:隨著套裝軟體均已下載到本機,此步驟需要一些時間才能完成。

為用戶端系統提供本機 yum 鏡像服務

可使用 ol-repo-web 容器映像檔供 yum 儲存區域供您的用戶端系統使用。此容器可以永久執行,並且可以設定為在開機時啟動:

podman run --detach --name yum-server \
  -p 8080:80 \
  -v ${PWD}/repo:/var/www/html/repo:ro \
  ol-repo-web

注意:儲存區域和通道更新時,儲存區域目錄會對應至含唯讀權限的 yum 伺服器容器,讓容器在更新鏡像的儲存區域和通道時繼續執行並提供服務給從屬端。

驗證本機 yum 鏡像

使用下列內容建立新的 dnf 儲存區域項目:

echo '[ol_automation_http_repo]
name=OL_automation_x86_64_HTTP
baseurl="http://localhost:8080/repo/OracleLinux/OL8/automation/$basearch/"
gpgcheck=0' | sudo tee /etc/yum.repo.d/ol-local.repo

注意:若顯示為外部系統,請將上面的 baseurl 變更為執行容器之系統的 IP 位址或主機名稱。
同時開啟防火牆以允許存取連接埠 8080。

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

然後確認新項目的運作方式:

dnf repolist
dnf info ansible

其他相關資訊

請參閱其他相關資源:

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或是存取更多免費學習內容至 Oracle Learning YouTube 通道。此外,瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請瀏覽 Oracle Help Center