Spacewalk
Spacewalk 是上游的一個社區計劃,而 Red Hat Network Satellite 產品是從它衍生出來。這個計劃為分佈於已登記的伺服器及桌面電腦內的軟件提供一個管理介面。
Contents
1. 參考
這份教學文檔以收藏於 Spacewalk 官方網站上的文件作為基礎,為 CentOS 用戶建立一份簡單的攻略。
Spacewalk 官方網站
官方文件
截圖及 Spacewalk 計劃概覽
2. 伺服器規格
- CentOS 5(i386 或 x86_64)
- 1024 MB 調換空間
- 最少 20 GB 儲存空間,建議 80 GB
一個完整域名(FQDN)—— 在這個範例裡,我們採用 IANA 預留的 example.com 域名:spacewalk.example.com
|
提示:本作者建議採用 CentOS 5 i386,因為 x86_64 架構所提供的大部份優點都被 Oracle XE 資料庫伺服器的限制所抵消。 |
3. SELinux
Spacewalk 伺服器所須用的 Oracle 資料庫伺服器已被整合,而且可以與 SELinux 「融洽相處」。請編輯 /etc/sysconfig/selinux 並將 SELinux 設為執行模式:
SELINUX=enforcing
應用這個改動的最快捷方法就是重新啟動伺服器。
4. 防火牆
以下對內的 TCP 埠在 Spacewalk 伺服器上應該被開啟:
- 69:TFTP(支援 PXE 的需要)
- 80:Spacewalk 網頁介面
- 443:Spacewalk 網頁介面(SSL)
- 4545:Spacewalk 監控
- 5222:假若你計劃將行動推進客端系統
- 5269:假若你計劃將行動推進一台 Spacewalk 代理伺服器
- 9055:Oracle XE 網頁存取
5. Oracle 資料庫
在這份指南內,Spacewalk 將會與一台 Oracle 10g 資料庫伺服器一同安裝;支援 PostgreSQL 作為後端的工作正在進行中,待它變為可行方案時,我們便會更新這頁。Oracle Expression Edition 伺服器運作上沒有問題,雖然它有某些限制:
- 1 GB 記憶體(最多)—— 具備更多亦沒有分別
- 4 GB 磁碟空間(最多)
- 1 個資料庫(最多)
- 1 個處理器(最多)—— 就算具備多個處理器,耗用量頂多只會等同一個處理器的資源
5.1. 安裝
要在 SELinux 啟動情況下運行,oracle 用戶的 uid 必須少於 500。以下兩個指令將會在安裝 oracle-xe-unix 套件前為 oracle 這位用戶建立群組及帳戶:
/usr/sbin/groupadd -r dba /usr/sbin/useradd -r -M -g dba -d /usr/lib/oracle/xe -s /bin/bash oracle
|
在 x86_64 系統上:請留意你將會需要很多與 i386 兼容的套件,因此你並不需要: |
以下是 Oracle 資料庫所需的套件。這樣會安裝 bc,以及在 x84_64 架構上依然須要的 32 位元 glibc 和 libaio:
yum install bc glibc.i686 libaio.i386
從 Oracle 的網站下載 Oracle XE。你將會需要登記才能下載那些 RPM。請選抽 Oracle Database 10g Express Edition (Universal):
- oracle-xe-univ-10.2.0.1-1.0.i386.rpm
你亦會需要一個客戶端來存取資料庫。請根據你的伺服器的架構來下載 Oracle Instant Client:i386 客戶端或x86_64。請下載以下二個 RPM:
- oracle-instantclient11.2-basic-11.2.0.2.0.ARCH.rpm
- oracle-instantclient11.2-sqlplus-11.2.0.2.0.ARCH.rpm
|
注意:現時已知 Spacewalk 1.0 版能配合 Oracle Instant Client 11.2.0.2.0 版正常運作。 |
在 Spacewalk 伺服器上安裝已下載的 RPM:
rpm -Uvh oracle-xe-univ-10.2.0.1-1.0.i386.rpm rpm -Uvh oracle-instantclient11.2-basic-11.2.0.2.0.*.rpm rpm -Uvh oracle-instantclient11.2-sqlplus-11.2.0.2.0.*.rpm
在設定 Oracle 資料庫前,我們須要從 Spacewalk 的軟件庫取得一些套件。因此我們需要安装 repo 檔案:
rpm -Uhv http://spacewalk.redhat.com/yum/1.4/RHEL/5/x86_64/spacewalk-client-repo-1.4-1.el5.noarch.rpm rpm -Uhv http://spacewalk.redhat.com/yum/1.4/RHEL/5/x86_64/spacewalk-repo-1.4-1.el5.noarch.rpm
從 Spacewalk 軟件庫安裝下列套件:
yum install oracle-lib-compat yum install oracle-xe-selinux oracle-instantclient-selinux oracle-instantclient-sqlplus-selinux
/etc/init.d/oracle-xe configure
除了 HTTP 埠,其它預設值都沒有問題。請改用 9055 而不是 8080。
|
注意:要修改設定值,請解除安裝並重裝 RPM。 |
5.2. 客戶端設定
我們須要設定資料庫的 tns 名稱。請編輯 /etc/tnsnames.ora:
XE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = xe) ) )
復原檔案的 SELinux 安全性脈絡:
/sbin/restorecon -v /etc/tnsnames.ora
測試與 Oracle 資料庫伺服器的連線:
sqlplus system@xe
當被問到時,請輸入 system 用戶的密碼。你應該看見以下信息:
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Dec 17 09:41:18 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production SQL>
輸入 quit 來離開客戶端介面。
5.3. 建立 spacewalk 資料庫用戶
利用 sqlplus 指令介面建立 spacewalk 這位資料庫用戶:
sqlplus 'sys@xe as sysdba' SQL> create user spacewalk identified by spacewalk default tablespace users; User created. SQL> grant dba to spacewalk; Grant succeeded. SQL> PASSWORD spacewalk; Changing password for spacewalk New password: Retype new password: Password changed SQL> quit
5.4. 額外設定
Spacewalk 所需的資料庫並存連線數量比預設的(40)還要多。Spacewalk 開發者所建議的設定值是 400。此外,Oracle XE 內的一個錯誤並可能導致 Spacewalk 出現 Internal Server Error(500)。對設定作出以下改動能針對這些問題:
sqlplus spacewalk/spacewalk@xe SQL> alter system set processes = 400 scope=spfile; System altered. SQL> alter system set "_optimizer_filter_pred_pullup"=false scope=spfile; System altered. SQL> alter system set "_optimizer_cost_based_transformation"=off scope=spfile; System altered. SQL> quit
重新啟動 Oracle 資料庫:
/etc/init.d/oracle-xe restart
6. Yum
6.1. EPEL
Spacewalk 需要應用來自 EPEL 軟件庫的套件。請編輯 /etc/yum.repos.d/epel.repo:
[epel] name=Extra Packages for Enterprise Linux 5 - $basearch #baseurl=http://download.fedora.redhat.com/pub/epel/5/$basearch mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch failovermethod=priority gpgkey=http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL gpgcheck=1 enabled=1 includepkgs=bea-stax* cobbler editarea gc gc-devel git* jabberd jabberpy* jakarta-commons-cli jcommon \ jfreechart libapreq2 libgsasl* libntlm* libyaml perl-Algorithm-Diff perl-Apache-DBI \ perl-BerkeleyDB perl-Cache-Cache perl-Class-MethodMaker perl-Class-Singleton \ perl-Convert-BinHex perl-Config-IniFiles perl-Crypt-DES perl-Crypt-GeneratePassword \ perl-DateTime perl-DateTime-Format-Mail perl-DateTime-Format-W3CDTF perl-Error \ perl-FreezeThaw perl-Frontier-RPC perl-GD perl-Git perl-Math-FFT perl-HTML-TableExtract \ perl-IO-Capture perl-IO-stringy perl-IPC-ShareLite perl-libapreq2 perl-MIME-Lite \ perl-MIME-tools perl-Net-IPv4Addr perl-Net-SNMP perl-Params-Validate perl-Proc-Daemon \ perl-SOAP-Lite perl-TermReadKey perl-Text-Diff perl-Unix-Syslog perl-XML-RSS perl-version \ perlAlgorithm-Diff python-cheetah python-dmidecode python-hashlib python-netaddr PyYAML \ python-simplejson rhino tzdata-java udns*
6.2. Spacewalk
下列 yum 軟件庫收藏了 Spacewalk 1.4 版的核心元件。Spacewalk 亦須要 rhn-client-tools 及 rhnlib 這些套件,但它們已隨著 CentOS 對更新器的改動而一併被移除(用來防止上游的舊版更新器不設定 CentOS 機器,導致上游供應商因為固定的軟件庫名稱而受荷)。要針對這個問題,也須要安装 Spacewalk 客户端 repo repo 檔案:
rpm -Uhv http://spacewalk.redhat.com/yum/1.4/RHEL/5/x86_64/spacewalk-client-repo-1.4-1.el5.noarch.rpm rpm -Uhv http://spacewalk.redhat.com/yum/1.4/RHEL/5/x86_64/spacewalk-repo-1.4-1.el5.noarch.rpm
6.3. 額外 yum 軟件庫
如果你想利用你的 Spacewalk 伺服器來管現額外的 yum 軟件庫,我們建議你建立一個名為 /etc/reposync.conf 的檔案。以下範例檔是用來管理 RPMforge 這個軟件庫的。我們強烈地建議你利用 includepkgs 這個指令來保護發行版本的基本套件,及局限所佔用的磁碟空間:
6.4. 局部性 yum 軟件庫
如果你想利用你的 Spacewalk 伺服器來管現局部性 yum 軟件庫,我們建議你建立一個名為 /etc/reposync.conf 的檔案。以下是一個同時用來管理 EPEL 及 RPMforge i386 軟件庫的範例檔。我們強烈地建議你利用 includepkgs 這個指令來保護發行版本的基本套件,及局限所佔用的磁碟空間:
[epel32] name=Extra Packages for Enterprise Linux 5 - i386 baseurl=http://download.fedora.redhat.com/pub/epel/5/i386 #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=i386 failovermethod=priority gpgkey=http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL gpgcheck=1 enabled=1 includepkgs=bea-stax* cobbler editarea gc gc-devel git* jabberd jabberpy* jakarta-commons-cli jcommon \ jfreechart libapreq2 libgsasl* libntlm* libyaml perl-Algorithm-Diff perl-Apache-DBI \ perl-BerkeleyDB perl-Cache-Cache perl-Class-MethodMaker perl-Class-Singleton \ perl-Convert-BinHex perl-Config-IniFiles perl-Crypt-DES perl-Crypt-GeneratePassword \ perl-DateTime perl-DateTime-Format-Mail perl-DateTime-Format-W3CDTF perl-Error \ perl-FreezeThaw perl-Frontier-RPC perl-GD perl-Git perl-Math-FFT perl-HTML-TableExtract \ perl-IO-Capture perl-IO-stringy perl-IPC-ShareLite perl-libapreq2 perl-MIME-Lite \ perl-MIME-tools perl-Net-IPv4Addr perl-Net-SNMP perl-Params-Validate perl-Proc-Daemon \ perl-SOAP-Lite perl-TermReadKey perl-Text-Diff perl-Unix-Syslog perl-XML-RSS perl-version \ perlAlgorithm-Diff python-cheetah python-dmidecode python-hashlib python-netaddr PyYAML \ python-simplejson rhino tzdata-java udns* [rpmforge32] name = RPMforge for Enterprise Linux 5 - i386 baseurl = http://apt.sw.be/redhat/el5/en/i386/dag gpgkey = http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt gpgcheck=1 includepkgs=amavisd-new arc cabextract clamav* clamd freeze lha lzop nomarch perl-Archive-Zip perl-Convert-TNEF \ perl-Convert-UUlib perl-MailTools perl-Net-Server ripole unarj zoo
6.5. GPG 金鑰
根據預設值,Spacewalk 會拒絕發放未簽署或以不認識的金鑰所簽署的 RPM。我們要確定已安裝所有相關的 GPG 金鑰:
wget http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL mv RPM-GPG-KEY-EPEL /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL wget http://www.redhat.com/security/db42a60e.txt mv db42a60e.txt /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-former rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-former wget http://www.redhat.com/security/37017186.txt mv 37017186.txt /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release wget http://spacewalk.redhat.com/yum/RPM-GPG-KEY-spacewalk mv RPM-GPG-KEY-spacewalk /etc/pki/rpm-gpg/RPM-GPG-KEY-spacewalk rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-spacewalk wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt mv RPM-GPG-KEY.dag.txt /etc/pki/rpm-gpg/RPM-GPG-KEY-dag rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-dag
當然這亦代表你把每位供應者加進一個獲信賴的關係中,因為 yum 及 rpm 將會信賴任何以上述金鑰所簽署的內容。尤其是 EPEL 及 dag 這兩個軟件庫,由於它們不會協調互相抵觸的套件,互賴性的問題也許會出現。因為這些軟件庫並非由 CentOS 管理或控制,任何支援上的要求請在相關軟件庫的支援渠道裡提出。
7. Spacewalk 伺服器
7.1. 安裝
假若 specspo 這個套件已存在,請移除它,因為它與 Spacewalk 互相抵觸。
rpm -e specspo
安裝下列 Spacewalk 所需、但不在它的依賴清單上的套件:
yum install perl-XML-LibXML-Common
我們用 yum 來取得 Spacewalk 軟件所依賴的、頗長的套件清單:
yum install spacewalk-oracle yum update
|
在 x86_64 系統上:你須要新增 /etc/ld.so.conf.d/spacewalk.conf 這個檔案,包含著以下內容: |
7.2. 設定
設定 Spacewalk 這個應用程式:
LANG=C; spacewalk-setup --disconnected Available database backends: oracle postgresql Database? oracle * Setting up Oracle environment. * Setting up database. ** Database: Setting up database connection. DB User? spacewalk DB Password? DB SID? xe DB hostname? localhost DB port [1521]? DB protocol [TCP]? ** Database: Testing database connection. ** Database: Populating database. *** Progress: ############################################# * Setting up users and groups. ** GPG: Initializing GPG and importing key. You must enter an email address. Admin Email Address? webmaster@example.com * Performing initial configuration. * Activating Spacewalk. ** Loading Spacewalk Certificate. ** Verifying certificate locally. ** Activating Spacewalk. * Enabling Monitoring. * Configuring apache SSL virtual host. Should setup configure apache's default ssl server for you (saves original ssl.conf) [Y]? * Configuring jabberd. * Creating SSL certificates. CA certificate password? Re-enter CA certificate password? Organization? example.com Organization Unit [spacewalk.example.com]? Email Address [webmaster@example.com]? City? Montreal State? Quebec Country code (Examples: "US", "JP", "IN", or type "?" to see a list)? CA ** SSL: Generating CA certificate. ** SSL: Deploying CA certificate. ** SSL: Generating server certificate. ** SSL: Storing SSL certificates. * Deploying configuration files. * Update configuration in database. * Setting up Cobbler.. Cobbler requires tftp and xinetd services be turned on for PXE provisioning functionality. Enable these services [Y/n]? * Restarting services. Installation complete. Use a web browser to view https://spacewalk.example.com to create the Spacewalk administrator account.
請利用以下指令啟動監控:
/usr/share/spacewalk/setup/upgrade/rhn-enable-monitoring.pl
將你的瀏覽器指向 https://spacewalk.example.com 來建立衛星管理員的帳戶(當中 example.com 是一個由你在本地管理的本地 DNS 區域)
7.2.1. 啟動金鑰
利用 Spacewalk 的網頁介面,建立一個預設的啟動金鑰來登記你的系統。請進到 Systems -> Activation keys 並點擊 create new key。
- Description: default key
- Universal default: 選用
7.2.2. 頻道設定
若要用 Spacewalk 來管理 CentOS 伺服器及桌面,我們首先必須設定及裝載軟件頻道。由 Spacewalk 1.0 起,你已經可以透過 spacewalk-repo-sync 這個工具來直接存取 yum 軟件庫的內容。根據預先設定,套件將會被推往 /var/satellite 這個目錄。如果你想更改這個參數,請進到 Admin -> Spacewalk Configuration -> General。
現在是時候在 Spacewalk 的網頁介面內建立一個頻道。請進到 Channels -> Manage Software Channels 並點擊 create new channel。
7.2.2.1. 供 i386 使用的 CentOS 5 Base
以下是 CentOS 5 Base i386 頻道的設定範例:
Basic Channel Details * Channel Name: CentOS 5 Base - i386 * Channel Label: centos5-base-i386 * Parent Channel: None * Parent Channel Architecture: IA-32 * Yum Repository Checksum Type: sha1 * Channel Summary: CentOS 5 Base for i386 architecture Associated yum repository * Repository URL: http://mirror.centos.org/centos/5/os/i386/ * Label: centos5-base-i386 * Sync Repo: enabled Security: GPG * GPG key URL: http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 * GPG key ID: E8562897 * GPG key Fingerprint: 473D 66D5 2122 71FD 51CC 17B1 A8A4 47DC E856 2897
編輯 /etc/cron.daily/spacewalk_sync.cron:
# 嘗試建立鎖定檔案並檢查結果 LOCKFILE=/var/run/spacewalk_sync.lock lockfile -r 0 ${LOCKFILE} 1>/dev/null 2>&1 status=$? if [ ${status} -ne 0 ] ;then echo "Another instance already running. Aborting." exit 1 fi trap "rm ${LOCKFILE}" EXIT /usr/bin/spacewalk-repo-sync --channel centos5-base-i386 \ --url http://mirror.centos.org/centos/5/os/i386/ \ --type yum --label centos5-base-i386 > /dev/null
chmod 700 /etc/cron.daily/spacewalk_sync.cron chown root:root /etc/cron.daily/spacewalk_sync.cron
|
提示:spacewalk-repo-sync 這個指令是用來替把頻道的內容與相關的 yum 軟件庫進行同步。至目前為止,只有 yum 這個方法是被支援的。任何 yum 支援的軟件庫 URL 都可行(http://、 file://、 等)。整個 yum 軟件庫的內容將會被轉移到 spacewalk 伺服器上。 |
7.2.2.2. 供 i386 使用的 CentOS 5 Updates
以下是 CentOS 5 Updates i386 頻道的設定範例:
Basic Channel Details * Channel Name: CentOS 5 Updates - i386 * Channel Label: centos5-updates-i386 * Parent Channel: CentOS 5 Base - i386 * Parent Channel Architecture: IA-32 * Yum Repository Checksum Type: sha1 * Channel Summary: CentOS 5 Updates for i386 architecture Associated yum repository * Repository URL: http://mirror.centos.org/centos/5/updates/i386/ * Label: centos5-updates-i386 * Sync Repo: enabled Security: GPG * GPG key URL: http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 * GPG key ID: E8562897 * GPG key Fingerprint: 473D 66D5 2122 71FD 51CC 17B1 A8A4 47DC E856 2897
編輯 /etc/cron.daily/spacewalk_sync.cron 並加入以下內容:
/usr/bin/spacewalk-repo-sync --channel centos5-updates-i386 \ --url http://mirror.centos.org/centos/5/updates/i386/ \ --type yum --label centos5-updates-i386 > /dev/null
7.2.2.3. 供 i386 使用的 Spacewalk Client
以下是 Spacewalk Client i386 頻道的設定範例:
Basic Channel Details * Channel Name: Spacewalk Client - i386 * Channel Label: spacewalk-client-i386 * Parent Channel: CentOS 5 Base - i386 * Parent Channel Architecture: IA-32 * Yum Repository Checksum Type: sha1 * Channel Summary: Spacewalk Client for i386 architecture Associated yum repository * Repository URL: http://spacewalk.redhat.com/yum/1.0-client/RHEL/5/i386/ * Label: spacewalk-client-i386 * Sync Repo: enabled Security: GPG * GPG key URL: http://spacewalk.redhat.com/yum/RPM-GPG-KEY-spacewalk * GPG key ID: 430A1C35 * GPG key Fingerprint:
編輯 /etc/cron.daily/spacewalk_sync.cron 並加入以下內容:
/usr/bin/spacewalk-repo-sync --channel spacewalk-client-i386 \ --url http://spacewalk.redhat.com/yum/1.0-client/RHEL/5/i386/ \ --type yum --label spacewalk-client-i386 > /dev/nul
7.2.2.4. 供 i386 使用的 Extra Packages Enterprise Linux 5
以下是 Extra Packages Enterprise Linux 5 i386 頻道的設定範例:
Basic Channel Details * Channel Name: EPEL5 - i386 * Channel Label: epel5-i386 * Parent Channel: CentOS 5 Base - i386 * Parent Channel Architecture: IA-32 * Yum Repository Checksum Type: sha1 * Channel Summary: Extra Packages Enterprise Linux 5 for i386 architecture Associated yum repository * Repository URL: http://download.fedora.redhat.com/pub/epel/5/i386/ * Label: epel5-i386 * Sync Repo: disabled Security: GPG * GPG key URL: http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL * GPG key ID: 217521F6 * GPG key Fingerprint:
就這個頻道而言,我們不想存取整個 yum 軟件庫。我們反而只想存取它在 yum 設定檔內,於 includepkg 指令下所列出的套件。若是這樣,我們必須採用 reposync 這個工具。透過 reposync 這個指令,我們會下載 EPEL 的套件並建立一個本地旳 yum 軟件庫。接著,spacewalk-repo-sync 這個指令便會從這個本地的 yum 軟件庫中取得套件。
yum install yum-utils createrepo
為本地的 yum 軟件庫預留一個地方:
mkdir -p /var/www/html/pub/CentOS5-i386
編輯 /etc/cron.daily/spacewalk_sync.cron 並加入以下內容:
reposync --repoid=epel32 -c /etc/reposync.conf -p /var/www/html/pub/CentOS5-i386 -d -l -g -n -q > /dev/null cd /var/www/html/pub/CentOS5-i386/epel32 createrepo /var/www/html/pub/CentOS5-i386/epel32 > /dev/null /usr/bin/spacewalk-repo-sync --channel epel5-i386 \ --url file:///var/www/html/pub/CentOS5-i386/epel32/ \ --type yum --label epel5-i386 > /dev/null
|
提示:reposync 這個指令將會從 /etc/reposync.conf 設定檔內所指定的軟件庫來存取 EPEL 的 i386 RPM。套件將會被下載到 /var/www/html/pub/CentOS5-i386/epel32/ 這個目錄。我們沒有採用 reposync 的 --arch 選項,因為在某些情況下它未必正確。要對這個指令進行偵錯,請移除 -q 這個選項。 |
7.2.2.5. 供 i386 使用的 RPMforge Enterprise Linux 5
以下是 RPMforge Enterprise Linux 5 i386 頻道的設定範例:
Basic Channel Details * Channel Name: RPMforge EL5 - i386 * Channel Label: rpmforge-el5-i386 * Parent Channel: CentOS 5 Base - i386 * Parent Channel Architecture: IA-32 * Yum Repository Checksum Type: sha1 * Channel Summary: RPMforge Enterprise Linux 5 for i386 architecture Associated yum repository * Repository URL: http://apt.sw.be/redhat/el5/en/i386/dag/ * Label: rpmforge-el5-i386 * Sync Repo: disabled Security: GPG * GPG key URL: http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt * GPG key ID: 6B8D79E6 * GPG key Fingerprint:
就這個頻道而言,我們不想存取整個 yum 軟件庫。我們反而只想存取它在 yum 設定檔(/etc/reposync.conf)內,於 includepkg 指令下所列出的套件。
編輯 /etc/cron.daily/spacewalk_sync.cron 並加入以下內容:
reposync --repoid=rpmforge32 -c /etc/reposync.conf -p /var/www/html/pub/CentOS5-i386 -d -l -g -n -q > /dev/null cd /var/www/html/pub/CentOS5-i386/rpmforge32 createrepo /var/www/html/pub/CentOS5-i386/rpmforge32 > /dev/null /usr/bin/spacewalk-repo-sync --channel rpmforge-el5-i386 \ --url file:///var/www/html/pub/CentOS5-i386/rpmforge32/ \ --type yum --label rpmforge-el5-i386 > /dev/null
7.2.2.6. GPG 金鑰
為了方便 Spacewalk 客戶端,我們將所有受管理套件的公共 GPG 鑰放在網頁伺服器上。這些金鑰會收錄在 http://spacewalk.example.com/pub 。
cp /etc/pki/rpm-gpg/RPM-GPG-KEY-* /var/www/html/pub/
7.3. 升級
若要升級舊版本的 Spacewalk ,你必須先將 /etc/yum.repos.d/spacewalk.repo 這個 yum 設定檔及 /etc/cron.daily/spacewalk_sync.cron 這個 cron 腳本升級。
|
提示:在執行 yum update 這個指令之先,請遵從 https://fedorahosted.org/spacewalk/wiki/HowToUpgrade 內的指引。 |
8. Spacewalk 客戶端(基本設定)
每個客戶端都必須被設定以 Spacewalk 伺服器作為它們的 RPM 套件來源。我們會臨時地在客戶端機器上設置 EPEL 軟件庫來存取所需的套件。請編輯 /etc/yum.repos.d/epel.repo:
[epel] name=Extra Packages for Enterprise Linux 5 - $basearch #baseurl=http://download.fedora.redhat.com/pub/epel/5/$basearch mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch failovermethod=priority gpgkey=http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL gpgcheck=1 enabled=1 includepkgs=bea-stax* cobbler editarea gc gc-devel git* jabberd jabberpy* jakarta-commons-cli jcommon \ jfreechart libapreq2 libgsasl* libntlm* libyaml perl-Algorithm-Diff perl-Apache-DBI \ perl-BerkeleyDB perl-Cache-Cache perl-Class-MethodMaker perl-Class-Singleton \ perl-Convert-BinHex perl-Config-IniFiles perl-Crypt-DES perl-Crypt-GeneratePassword \ perl-DateTime perl-DateTime-Format-Mail perl-DateTime-Format-W3CDTF perl-Error \ perl-FreezeThaw perl-Frontier-RPC perl-GD perl-Git perl-Math-FFT perl-HTML-TableExtract \ perl-IO-Capture perl-IO-stringy perl-IPC-ShareLite perl-libapreq2 perl-MIME-Lite \ perl-MIME-tools perl-Net-IPv4Addr perl-Net-SNMP perl-Params-Validate perl-Proc-Daemon \ perl-SOAP-Lite perl-TermReadKey perl-Text-Diff perl-Unix-Syslog perl-XML-RSS perl-version \ perlAlgorithm-Diff python-cheetah python-dmidecode python-hashlib python-netaddr PyYAML \ python-simplejson rhino tzdata-java udns*
安装 Spacewalk repo:
rpm -Uhv http://spacewalk.redhat.com/yum/1.4/RHEL/5/x86_64/spacewalk-client-repo-1.4-1.el5.noarch.rpm
現在我們已經準備好下載所需的套件:
yum install rhn-setup yum-rhn-plugin python-dmidecode
此刻我們在 Spacewalk 伺服器上註冊這個客戶端:
|
注意: 請記得總是為你的 Spacewalk 伺服器使用 FQDN。 |
rhnreg_ks --serverUrl=http://spacewalk.example.com/XMLRPC --activationkey=<default-activation-key>
|
提示:請進到你的 Spacewalk 伺服器網頁介面裡的 Systems -> Activation Keys,以便取得你的預設啟動金鑰。 |
在 Spacewalk 的網頁介面裡,進到 Systems -> Overview。你的客戶端系統現在應該在榜上有名。選取它並點擊 System Info 下的 Alter Channel Subscriptions 連結。在 Base Software Channel 部份,請選取 CentOS 5 Base - i386 這個頻道並點擊 Confirm 按鈕。當你返回 Software Channel 管理頁面時,你便可以為你的系統訂閱子頻道。
當你設定好一個 Spacewalk 頻道,你便可以安全地停用該電腦上相應的 yum 軟件庫。請編輯 /etc/yum.repos.d 內的 repo 檔並確定相關的部份內含有這個字串:
enabled=0
9. 利用 Cobbler 來管理 Spacewalk 客戶端
自 0.4 版起,Cobbler 已隨 Spacewalk 一供附上。Cobbler 是一個安裝服務,用來簡化裝備伺服器的過程。我們會示範你可以如何透過 Spacewalk 內的 Cobbler,在你現有的網絡裡增設一台新的伺服器。
在以上步驟,我們簡介了如何建立一個 CentOS 5 - i386 的發行版本。現在我們會解釋如何用 Cobbler 在一台新的伺服器上裝備 CentOS 5 - i386。
9.1. 填滿發行目錄樹
Spacewalk 伺服器必須藏有發行版本的整個 kickstart 目錄樹。這棵樹包含內核、initrd 及軟件庫資料。這個目錄應該容讓 apache 及 tomcat 用戶讀取。
mkdir -p /var/iso-images /var/distro-trees
下載發行版本的首個 ISO 映像檔為 /var/iso-images/CentOS-5-i386-bin-1.iso。這個映像內藏有所需的檔案。
mount -o loop /var/iso-images/CentOS-5-i386-bin-1.iso /var/distro-trees/CentOS-5-i386
我們亦會編輯 /etc/fstab 於開機時自動掛載這個 ISO 映像:
/var/iso-images/CentOS-5-i386-bin-1.iso /var/distro-trees/CentOS-5-i386 iso9660 rw,loop=/dev/loop0 0 0
|
提示要保持你的發行目錄樹在最新狀態,請定時下載最新版本 CentOS 5 的 ISO 映像。每當一個新的 CentOS 5 ISO 映像被發行時,你亦須要卸除及重新掛載它。 |
9.2. 建立一個新的發行版本
進到 Spacewalk 的介面並選擇 Systems -> Kickstart -> Distributions。點擊 create a new distribution 這個連結。
Distribution Label: CentOS-5-i386 Tree Path: /var/distro-trees/CentOS-5-i386 Base Channel: CentOS 5 Base - i386 Installer Generation: Red Hat Enterprise Linux 5
點擊 Create Kickstart Distribution 這個按鈕。
9.3. 建立一個新的 kickstart 設定檔
若然要成功地安裝我們的發行版本,我們需要一個 kickstart 檔。它是一個簡單的文字檔,內裡含有項目清單,每個項目均以關鍵字來辨認,為來自 anaconda 安裝器的問題提供答案。
進到 Spacewalk 的介面並選擇 Systems -> Kickstart。點擊 create a new kickstart profile 這個連結。
Label: CentOS-5-i386 Channel Base: CentOS 5 Base - i386 Kickstartable Tree: CentOS-5-i386 Virtualization Type: None
點擊 Next 這個按鈕。
在下一個畫面,跳過預設的下載位置並為 root 用戶挑選一個密碼。
進到 Spacewalk 的介面並選擇 Systems -> Kickstart -> Profiles。選取 CentOS-5-i386 這個設定檔。在 Operating System 這個頁籤,啟用 centos-updates-i386 及 spacewalk-client-i386 這兩個頻道。其它子頻道亦可以被啟動。
9.4. TFTP 伺服器
這個 kickstart 設定檔是透過 TFTP 公佈在網絡上。請編輯 TFTP 服務的設定檔(/etc/xinetd.d/tftp)並將 disabled 的值改為 no。接著,請確定 xinetd 服務已在運行中。
/etc/init.d/xinetd status
你的 Spacewalk 伺服器上的 TFTP 埠(69)必須接受來自網絡端的連線。
9.5. 網絡設定
你需要一台正確地設定 filename 及 next-server 變數的 DHCP 伺服器。如果你採用 dhcp 這個常駐程式,請編輯 /etc/dhcpd.conf 並在你的設定檔內加入這些選項:
filename "pxelinux.0"; next-server <spacewalk server IP address>;
你須要重新啟動 DHCP 服務來實施這些改動。
你要裝備的伺服器必須能夠解析你的 Spacewalk 伺服器名稱。請確定在相關的 DNS 伺服器中備有一個項目是針對你的 Spacewalk 伺服器名稱的。
9.6. 客戶端伺服器
雖然一台沒有操作系統的伺服器會嘗試每一個可行的開機方法,才至它進入 PXE 開機模式,已安裝了操作系統的伺服器卻未必能進入 PXE 開機模式。請在它的 BIOS 內將 PXE 放置在開機模式清單的最高位置,好讓這台伺服器有機會被 PXE 被控制。
當客戶端伺服器關機時,它會展示一個包含 CentOS-5-i386 選項的畫面。選取它來開始自動化地安裝客戶端伺服器。
|
注意:這台客戶端伺服器的硬碟將會被重新格式化,而 CentOS 5 - i386 將會被重新安裝在客戶端伺服器上。 |
當客戶端端伺服器的安裝完成後,請用你先前設定的 root 密碼登入。借著編輯 /etc/yum.repos.d 內的 repo 檔,停用本地設定的 yum 軟件庫。請確定相關的部份包含以下字串:
enabled=0
接著,請進到 Spacewalk 的介面並選擇 Systems。請選取新安裝的客戶端伺服器。在 Details -> Overview 這個畫面,點擊 Alter Channel Subscriptions 這個連結。請為你新管理的伺服器設定合適的頻道。
10. 利用 Spacewalk 來管理設定檔
你可以利用 Spacewalk 來管理設定檔。你只需一個設定頻道,當中包含一個或以上的檔案/目錄。
10.1. 建立一個新的設定頻道
你必須先建立一個設定頻道。進到 Spacewalk 的介面並選擇 Configuration -> Configuration Channels。點擊 create new config channel 這個連結。
這裡有一個範例:
Name*: SSH Keys Label*: ssh-keys Description*: Channel to manage ~/.ssh/authorized_keys
頻道被建立後,你可以在其中加入一個或以上的檔案/目錄。進到 Configuration -> Configuration Channels 並選取你剛建立的頻道。現在點擊 Create new configuration file or directory 並適當地編輯各欄位。
10.2. 容讓系統上的檔案透過 Spacewalk 被管理
你已經建立了設定頻道並加入了檔案。現在你須要令你系統上的檔案可以透過 Spacewalk 被管理。進到 Configuration -> Systems -> Target Systems 後你便會看見所有登記在 Spacewalk 上的系統。
請選擇你想啟用設定管理的系統並點擊 Enable Spacewalk Configuration Management。Spacewalk 會嘗試加進裝備的權限並在系統上安裝所需的套件。
|
註: 假若你看見 Could not subscribe to the Spacewalk Tools channel 這個錯誤信息,你便需要以人手安裝所需的套件。 |
11. 設置 OSAD(即時執行更新)
透過 OSAD,在 Spacewalk 介面上所個的更新會近乎即時在客戶端執行。它亦為 Spacewalk 的其它功能提供這服務。因此,你便不用等候 Spacewalk 編排時間。
11.1. 設置客戶端
安裝 osad 這個套件:
yum install osad
開啟 /etc/sysconfig/rhn/osad.conf 並將以 osa_ssl_cert 起首的那一行改為:
osa_ssl_cert = /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT
下載被信任的憑證:
cd /usr/share/rhn/ wget http://spacewalk.example.com/pub/RHN-ORG-TRUSTED-SSL-CERT
|
注意: 切記時常使用你的 Spacewalk 伺服器的全域名。 |
要啟用 osad 你很可能須要安裝 python-hashlib:
yum install python-hashlib
現在你只須啟用 osad 這個常駐程式:
service osad start
|
提示: 你可以強迫 Spacewalk 承認某台客戶端的 OSA 現況。要這樣做,請在網頁介面上進到該客戶端的主機概覽頁。在該頁的右邊,你會看見一處用來顯示客戶端的 OSA 現況。傳送一個 ping 到該客戶端將會更新它的現況為 online。 |
由現在起,你的更新將會接近即時地被執行。
12. 把軟件庫同步的腳本
Davidson Paulo <davidsonpaulo AT gmail.com> 炮製了一個更好的腳本來管理軟件庫及將它們同步(謝謝你的傑作 )。它會尋找一個設定檔並將內裡所列出的一切鏡像進行同步。
要應用這個腳本,你需要:
一個設定檔(例如:/etc/sysconfig/spacewalk-repo-sync)
- 該腳本
12.1. 設定檔
設定檔(/etc/sysconfig/spacewalk-repo-sync)採用以下語法:
[頻道名稱] [軟件庫 URL] [方法]
以下是一個實例:
centos-5-updates-i386 http://mirror.centos.org/centos/5/updates/i386/ yum centos-5-extras-i386 http://mirror.centos.org/centos/5/extras/i386/ yum centos-5-base-i386 http://mirror.centos.org/centos/5/os/i386/ yum epel-5-i386 http://download.fedora.redhat.com/pub/epel/5/i386/ yum
12.2. 腳本
而這裡是為你代勞的腳本(我很快會用它取代舊的版本):
# # spacewalk-repo-sync # Repository synchronization utility for Spacewalk # # Authors: Davidson Paulo <davidsonpaulo AT gmail.com> # # This is free software. You are free to use it and distribute it under # the terms of the GNU General Public License v3+ ## Variables config=/etc/sysconfig/spacewalk-repo-sync log=/var/log/spacewalk-repo-sync lockfile=/var/run/spacewalk-repo-sync.lock ## Functions syncrepo() { echo "/usr/bin/spacewalk-repo-sync --channel $1 --url $2 --type $3" /usr/bin/spacewalk-repo-sync --channel $1 --url $2 --type $3 } ## Main routine # try to create the lock and check the outcome lockfile -r 0 ${lockfile} 1>/dev/null 2>&1 status=$? if [ ${status} -ne 0 ] ; then echo "Another instance already running. Aborting." exit 1 fi # Remove $lockfile when Ctrl+C is pressed trap "rm ${lockfile}" EXIT # Read $config and execute /usr/bin/spacewalk-repo-sync for each repository if [ -f $config ] ; then while read line ; do syncrepo $line done < <(egrep -v '^([[:space:]#]+|$)' $config) else echo "Config file $config does not exist." exit 1 fi | tee -a $log exit 0
請儲存它,譬如成為 /usr/bin/spacewalk-repo-sync,然後執行:
$ chmod +x /usr/bin/spacewalk-repo-sync
現在,每次你需要把的軟件庫同步,你只需執行這個腳本。你亦可以將它加進 cron 內。
|
注意:這個腳本可以正確運作,而且較本指引先前所描述的方法更易管理。我計劃以該腳本取代將本指引的某些部份。不過我首先需要一些回饋。所以假若你遇到問題,請告訴我。 |
Translation of revision 86