文章
服务器与存储管理
作者:Glynn Foster
2014 年 7 月发布
|
Oracle Solaris 11 拥有一套完整的技术,可在云环境中实现安全、敏捷、合规的应用供应。这些技术让开发人员和管理员能够在典型的开发、测试和生产生命周期跨物理和虚拟边界迁移其应用环境。此外,通过集成的安全和合规性特性,管理员可以锁定生产环境,以避免意外或有意的管理配置及招致的人为错误的风险,并且还可以简化组织内的合规性规章。

图 1.应用环境的生命周期阶段
本文演示一个使用 Oracle Solaris 区域将 Oracle WebLogic Server 12c 部署到开发环境的简单示例。然后克隆应用环境,创建一个测试环境。我们将使用该测试环境介绍如何使用不可变非全局区域从安全角度锁定环境,以及如何使用 Oracle Solaris 11 的新合规性特性执行一些基本检查和报告。最后,我们将通过虚拟到物理迁移将此测试环境迁移到裸机生产环境。
我们将使用 Oracle Solaris 区域作为虚拟化环境。与其他供应商的虚拟化解决方案不同,Oracle Solaris 区域技术提供了近乎零开销的虚拟化,通过使用共享内核深入集成到操作系统。这意味着企业可以通过更高的虚拟化密度大大降低成本和数据中心占地面积。Oracle Solaris 区域投入生产使用已经逾 10 年,为应用负载提供了高度可靠的环境。
在本文中,我们将使用两个系统:一个系统充当开发和测试环境,另一个系统将作为生产环境。我们还假设有一个 Oracle Solaris Automated Installer 服务用于无需人工干预的多节点供应,并有足够的空间存储从测试环境捕获的统一存档。
注:本文假设读者对 Oracle Solaris 有基本的了解。有关区域的信息,请参见 Oracle Solaris 区域简介;有关使用 Automated Installer 实现无需人工干预的多节点供应的信息,请参见“使用安装服务器安装”。
在本文中,我们将使用一个标准的非全局区域,在其中部署一个 Oracle WebLogic Server 12c 实例。首先使用 zonecfg 命令行创建一个新的名为 wl-zone 的非全局区域,如清单 1 所示:
root@dev:~# zonecfg -z wl-zone create root@dev:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - wl-zone configured /system/zones/wl-zone solaris excl
清单 1
对于清单 1 中的示例,我们对该区域使用了一个非常基本的配置,默认情况下,它将基于自动虚拟化网络接口 (VNIC) 的创建设置一个专用 IP 堆栈,VNIC 是 Oracle Solaris 网络虚拟化的一个核心特性,无需专设一个物理网络接口。
下一步是使用 zoneadm install 命令从 Oracle Solaris 映像包管理系统软件包信息库(托管在 pkg.oracle.com 上)安装此区域,如清单 2 所示:
root@dev:~# zoneadm -z wl-zone install
The following ZFS file system(s) have been created:
rpool/VARSHARE/zones/wl-zone
Progress being logged to /var/log/zones/zoneadm.20140611T102913Z.wl-zone.install
Image: Preparing at /system/zones/wl-zone/root.
Install Log: /system/volatile/install.16955/install_log
AI Manifest: /tmp/manifest.xml.kra4fH
SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
Zonename: wl-zone
Installation: Starting ...
Creating IPS image
Startup linked: 1/1 done
Installing packages from:
solaris
origin: http://pkg.oracle.com/solaris/release
DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 283/283 52917/52917 349.7/349.7 1.0M/s
PHASE ITEMS
Installing new actions 70570/70570
Updating package state database Done
Updating package cache 0/0
Updating image state Done
Creating fast lookup database Done
Updating package cache 1/1
Installation: Succeeded
Note: Man pages can be obtained by installing pkg:/system/manual
Done: Installation completed in 1297.580 seconds.
Next Steps: Boot the zone, then log into the zone console (zlogin -C)
to complete the configuration process.
Log saved in non-global zone as /system/zones/wl-zone/root/var/log/zones/zoneadm.20140611T102913Z.wl-zone.install
root@dev:~# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- wl-zone installed /system/zones/wl-zone solaris excl
清单 2
在清单 2 的输出中,我们可以看到 wl-zone 区域已成功安装。接下来启动并登录此区域:
root@dev:~# zoneadm -z wl-zone boot root@dev:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 4 wl-zone running /system/zones/wl-zone solaris excl root@dev:~# zlogin -C wl-zone
在安装区域过程中,您可能已经注意到关联了一个默认系统配置文件(位于 /usr/share/auto_install/sc_profiles/enable_sci.xml)。该配置文件导致管理员首次登录区域时会被提示提供一些基本的配置信息(主机名、网络配置、DNS、管理员用户、时区等)。我们将该区域的主机名设置为 wl-zone。
现在准备好开始安装 Oracle WebLogic Server 12c。鉴于这是一个基于 Java 的应用,我们需要安装 Java JDK。可以使用 pkg install 命令在该区域中安装 JDK 及任何其他相关软件。developer/java/jdk 软件包是一个包括多个其他软件包的软件包组。
root@wl-zone:~# pkg install --accept developer/java/jdk
Packages to install: 13
Mediators to change: 1
Create boot environment: No
Create backup boot environment: No
DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 13/13 2023/2023 113.7/113.7 1.2M/s
PHASE ITEMS
Installing new actions 2573/2573
Updating package state database Done
Updating package cache 0/0
Updating image state Done
Creating fast lookup database Done
Updating package cache 1/1
我们可以使用 java -version 命令检查安装的 Java 版本,如清单 3 所示:
root@wl-zone:~# java -version java version "1.7.0_55" Java(TM) SE Runtime Environment (build 1.7.0_55-b13) Java HotSpot(TM) Client VM (build 24.55-b03, mixed mode)
清单 3
如清单 3 可见,Java SE 7 是 Oracle Solaris 11.2 中包含的默认 Java 系统版本。这将满足您的需要,但还可以使用名为“调解器”的映像包管理系统特性通过 pkg mediator 命令更改此设置。Oracle Solaris 11.2 中也提供了 Java SE 8,可以从软件包信息库安装。
安装 Java 之后,需要创建一个默认用户,用于运行 Oracle WebLogic Server 12c 实例。我们来创建 wladmin 用户,为其分配密码,并以此用户身份登录。
root@wl-zone:~# useradd -d /export/home/wladmin -m wladmin 80 blocks root@wl-zone:~# passwd wladmin New Password: ********** Re-enter new Password: ********** passwd: password successfully changed for wladmin root@wl-zone:~# su - wladmin Oracle Corporation SunOS 5.11 11.2 April 2014 wladmin@wl-zone:~$
现在准备好安装 Oracle WebLogic Server 12c(本例中为 12.1.1.0 版)。我们从 Oracle 技术网下载通用安装程序。下载 zip 文件之后解压缩。它将包含一个名为 wls1211_generic.jar 的 JAR 存档。将该存档复制到 wladmin 用户的 $HOME 中。
然后使用 java -jar 命令启动基于文本的安装程序,如下所示:
wladmin@wl-zone:~$ java -jar ./wls1211_generic.jar Unable to instantiate GUI, defaulting to console mode. Extracting 0%.................................................................. .................................100% <-------------------- Oracle Installer - WebLogic 12.1.1.0 -------------------> Welcome: -------- This installer will guide you through the installation of WebLogic 12.1.1.0. Type "Next" or enter to proceed to the next prompt. If you want to change data entered previously, type "Previous". You may quit the installer at any time by typing "Exit". Enter [Exit][Next]>
就本文而言,我们并不讨论 Oracle WebLogic Server 12c 配置,您可能需要使用某种最适合您环境的其他配置。在本文中,我们将使用安装程序建议的默认值(/export/home/wladmin/Oracle/Middleware 作为中间件主目录并采用默认系统 JDK)。
一旦安装完毕,我们将需要使用快速启动向导配置基本的 Oracle WebLogic Server 域,如下所示:
wladmin@wl-zone:~$ Oracle/Middleware/wlserver_12.1/common/bin/config.sh
Unable to instantiate GUI, defaulting to console mode.
<-------------------- Fusion Middleware Configuration Wizard ----------------->
Welcome:
--------
Choose between creating and extending a domain. Based on your selection,
the Configuration Wizard guides you through the steps to generate a new or
extend an existing domain.
-> 1|Create a new WebLogic domain
| Create a WebLogic domain in your projects directory
-> 2|Extend an existing WebLogic domain
| Use this option to add new components to an existing domain and modify
|configuration settings.
Enter index number to select OR [Exit][Next]>
我们将选择此向导建议的默认值(base_domain 作为域名,/export/home/wladmin/Oracle/Middleware/user_projects/domains 作为目标位置,weblogic 作为管理员用户,以及相应的密码)。
向导完成之后,即可启动 Oracle WebLogic Server 12c 实例,如下所示:
wladmin@wl-zone:~$ Oracle/Middleware/user_projects/domains/base_domain/startWebLogic.sh JAVA Memory arguments: -Xms256m -Xmx512m -XX:MaxPermSize=256m WLS Start Mode=Production ... Enter username to boot WebLogic server:weblogic Enter password to boot WebLogic server:******** ... <Jun 11, 2014 2:00:15 PM UTC> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.> <Jun 11, 2014 2:00:15 PM UTC> <Notice> <WebLogicServer> <BEA-000360> <The server started in RUNNING mode.>
要验证启动是否成功,请打开 URL http://localhost:7001。您应该看到 Oracle WebLogic Server 12c 的登录控制台,如图 2 所示。

图 2.登录控制台
输入 weblogic 和密码凭证之后,即可看到仪表盘,如图 3 所示。

图 3.主仪表盘
成功运行 Oracle WebLogic Server 12c 实例之后,现在该启动一个典型的测试周期了。为方便起见,暂时假设在同一系统上执行测试周期。首先需要使用 zoneadm shutdown 命令关闭区域:
root@dev:~# zoneadm -z wl-zone shutdown root@dev:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - wl-zone installed /system/zones/wl-zone solaris excl
区域关闭之后,现在来创建测试环境。首先创建一个名为 wl-zone-test 的新区域:
root@dev:~# zonecfg -z wl-zone-test Use 'create' to begin configuring a new zone. zonecfg:wl-zone-test> create create: Using system default template 'SYSdefault' zonecfg:wl-zone-test> exit root@dev:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - wl-zone installed /system/zones/wl-zone solaris excl - wl-zone-test configured /system/zones/wl-zone-test solaris excl
我们将利用 ZFS 文件系统是 Oracle Solaris 区域的底层数据存储的事实,而不是像以前那样继续安装新区域。这意味着我们可以使用 zoneadm clone 命令利用 ZFS 快照和克隆功能:
root@dev:~# zoneadm -z wl-zone-test clone wl-zone
The following ZFS file system(s) have been created:
rpool/VARSHARE/zones/wl-zone-test
Progress being logged to /var/log/zones/zoneadm.20140613T193310Z.wl-zone-test.clone
Log saved in non-global zone as /system/zones/wl-zone-test/root/var/log/zones/zoneadm.20140613T193310Z.wl-zone-test.clone
root@dev:~# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- wl-zone installed /system/zones/wl-zone solaris excl
- wl-zone-test installed /system/zones/wl-zone-test solaris excl
安装新的 wl-zone-test 区域只需数秒,比从映像包管理系统信息库安装区域快多了。使用区域克隆从开发环境移至测试环境时,也可以根据需要使用它创建进一步派生的开发环境。
要开始测试周期,只需启动区域并通过 System Configuration Interactive (SCI) 工具提供一些配置,然后就可以启动和运行了。
root@dev:~# zoneadm -z wl-zone-test boot root@dev:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 wl-zone installed /system/zones/wl-zone solaris excl 3 wl-zone-test running /system/zones/wl-zone-test solaris excl
现在假设应用已经成功在测试环境中运行,并已经完成对应用的一些基本测试。当我们需要将应用部署到生产环境时,从安全的角度来看,我们希望尽可能地强化应用。虽然 Oracle Solaris 本身做得很好,但我们还是可以使用 Oracle Solaris 11 的一个新特性进一步锁定环境:不可变全局区域和不可变非全局区域,它们提供了只读功能。这意味着我们可以降低外部攻击的风险,同时还可减少日常管理中人为错误导致问题的机会。
为了使用非全局区域实现这一结果,我们在关闭运行中的区域之后在区域配置内设置 file-mac-profile 属性。我们可以设置三个不同的值:strict、fixed-configuration 和 flexible-configuration。这些值将导致不同行为,如无法安装新软件的完整的只读文件系统,或允许更新特定目录但不能更新其他目录的环境。“配置和管理不可变区域”中略微详细地定义了这些配置文件。锁定全局区域的机制与此完全相同。
我们选择最严格的配置 strict,如下所示:
root@dev:~# zoneadm -z wl-zone-test shutdown root@dev:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 wl-zone installed /system/zones/wl-zone solaris excl 3 wl-zone-test installed /system/zones/wl-zone-test solaris excl root@dev:~# zonecfg -z wl-zone-test zonecfg:wl-zone-test> set file-mac-profile=strict zonecfg:wl-zone-test> verify zonecfg:wl-zone-test> commit
设置好此配置之后,我们需要启动区域来实施此只读策略。启动区域之后,重新登录区域,查看是否可以创建新文件,如清单 4 所示:
root@dev:~# zoneadm -z wl-zone-test boot root@dev:~# zlogin -C wl-zone-test root@wl-zone-test:~# touch foobar touch: cannot create foobar: Read-only file system
清单 4
在清单 4 中可以看到,我们现在有了一个只读文件系统。将区域配置为只读之后,需要再次关闭并重新配置区域,使其重新成为可写的区域。如果已经将此配置应用于全局区域,则需要在启动管理器中使用 -w 选项重新启动系统。
现在,根据我们的需求,如果想要使用 fixed-configuration 或 flexible-configuration 指定某些数据集为不受限制(即可读写),则可以锁定区域的特定方面。
例如,可以用非全局区域的以下配置替换先前的 strict 策略,从而确保 /export 可读写。
root@dev:~# zonecfg -z wl-zone-test zonecfg:wl-zone-test> set file-mac-profile=flexible-configuration zonecfg:wl-zone-test> add dataset zonecfg:wl-zone-test:dataset> set name=rpool/export zonecfg:wl-zone-test:dataset> end zonecfg:wl-zone-test> verify zonecfg:wl-zone-test> commit
要将区域重新设置为正常的完全可读/写操作模式,只需通过将 file-mac-profile 属性设置为 none 来反转配置,如下所示:
root@dev:~# zonecfg -z wl-zone-test zonecfg:wl-zone-test> set file-mac-profile=none zonecfg:wl-zone-test> verify zonecfg:wl-zone-test> commit zonecfg:wl-zone-test> exit
应用生命周期的最后一部分对于大多数企业都很关键,在一个典型 IT 预算中它通常就是一个高成本项目。通过合规性检查和报告确保系统同时符合内外部安全策略和控制的要求可能会占用审计人员和管理员的大量管理开销。
最近,Oracle Solaris 11.2 中新添加了一个基于安全内容自动化协议 (SCAP) 的合规性框架,它将通过一组集成的脚本帮助缓解一部分这种痛苦,这些脚本根据 Oracle Solaris 安全策略和支付卡行业数据安全标准 (PCI DSS) 这两个安全基准测试评估和报告系统的合规性。这些基准测试避免了关于如何最好地解释这些标准以及如何将其与 Oracle Solaris 内的控制最佳匹配的任何疑问。
假设我们现在已经准备好评估 wl-zone-test 区域的合规性。重要的是能够在将此应用投入生产之前进行任何可能需要的更改。一旦将应用投入生产之后,我们将继续定期检查其是否合规。
可以使用带 -v 选项的 compliance list 命令查看有哪些基准测试可用,如清单 5 所示:
root@wl-zone-test:~# compliance list -v
Benchmarks:
pci-dss
Payment Card Industry Data Security Standard
solaris
Oracle Solaris Security Policy
Assessments:
No assessments available
清单 5
在清单 5 中可以看到,有两个基准测试:pci-dss 和 solaris。目前尚未进行任何合规性评估。我们还可以使用 -p 选项列出每个基准测试内有哪些可用的配置文件。
root@wl-zone-test:~# compliance list -p
Benchmarks:
pci-dss: Solaris_PCI-DSS
solaris: Baseline, Recommended
Assessments:
No assessments available
现在来运行评估。我们将使用 PCI DSS 基准测试,这是针对支付卡安全性所需标准的基准测试。为此,将使用 compliance assess 命令,如清单 6 所示:
root@wl-zone-test:~# compliance assess -b pci-dss Assessment will be named 'pci-dss.Solaris_PCI-DSS.2014-06-22,00:15' Title The OS version is current Rule Test_1.1 Result pass Title Package integrity is verified Rule Test_1.2 Result fail Title Package signature checking is globally activated Rule Test_1.3 Result pass ... Title Find and list .netrc files Rule Test_8.42 Result pass Title Permissions on User .netrc Files are correct Rule Test_8.43 Result pass Title Permissions on User "." (Hidden) Files are correct Rule Test_8.44 Result pass
清单 6
由清单 6 中的输出节略可见,其中包含一些作为此基准测试的一部分运行的测试,并非全部通过。一旦评估完成,它将在运行 compliance list 命令时再次显示:
root@wl-zone-test:~# compliance list
Benchmarks:
pci-dss
solaris
Assessments:
pci-dss.Solaris_PCI-DSS.2014-06-22,00:15
运行合规性评估时,还将生成一份报告。可以使用 compliance report 命令查看报告位置,默认情况下该命令将返回基于 HTML 的报告的位置,如下所示:
root@prod:~# compliance report /var/share/compliance/assessments/pci-dss.Solaris_PCI-DSS.2014-06-22,00:15/report.html
我们将此报告载入 Web 浏览器,看看报告的样子(参见图 4)。

图 4.合规性报告示例
由报告可以看到,138 项通过,53 项失败。作为可能会看到的内容的示例,我们来看其中一次失败(参见图 5)。

图 5.合规性失败详细信息
在本例中,我们需要确保记录相应的密码历史记录。我们需要将 /etc/default/passwd 中的 HISTORY 变量设置为值 10,以便通过此测试。
根据合规性报告生成的结果,可能希望对系统做进一步的更改以符合任何合规性要求;在本例中,某些工作当然需要完成。如果有特定于环境的特定合规性要求,合规性框架允许创建新的测试并将其集成到生命周期中。
假设已经完成为让此测试合规而必需的更改,因而可以继续将此应用部署到生产环境。这显然并非合规性生命周期的结束,我们还需要确保持续监视生产环境,以确保满足合规性要求。
Oracle Solaris 11.2 包括一种名为统一存档的新存档格式,它能够在单一存档内创建裸机环境和虚拟化环境的快照以便重新部署,这些快照可以作为云环境内的克隆,也可以用于系统备份和灾难恢复。
统一存档还利用 ZFS 快照和克隆功能,并使用 ZFS 流捕获系统映像。这意味着可以在实时运行中的系统上有效捕获统一存档。通过与映像包管理系统和 Oracle Solaris 服务管理工具集成,存档可以完全跨裸机和虚拟化边界移植,从而允许进行物理到虚拟或虚拟到物理转换。这意味着开发人员可以在较小的系统上工作,然后将其环境轻松迁移到较大规模的生产系统。
首先生成 wl-zone-test 区域的存档。假设测试周期显示它满足所需质量标准和合规性级别,现在已准备好将此应用环境部署到生产。
我们使用 archiveadm create 命令将此运行中的系统捕获到一个名为 wl-zone-test.uar 的存档。首先将关闭测试环境。
root@dev:~# zoneadm -z wl-zone-test shutdown root@dev:~# archiveadm create -z wl-zone-test ./wl-zone-test.uar Initializing Unified Archive creation resources... Unified Archive initialized: /root/wl-zone-test.uar Logging to: /system/volatile/archive_log.21196 Executing dataset discovery... Dataset discovery complete Creating install media for zone(s)... Media creation complete Preparing archive system image... Beginning archive stream creation... Archive stream creation complete Beginning final archive assembly... Archive creation complete root@dev:~# ls -lh wl-zone-test.uar -rw-r--r-- 1 root root 3.7G Jun 11 14:48 wl-zone.uar
创建统一存档之后,我们使用 archiveadm info 命令进行仔细查看,如清单 7 所示:
root@dev:~# archiveadm info wl-zone-test.uar
Archive Information
Creation Time: 2014-06-11T14:26:11Z
Source Host: dev
Architecture: i386
Operating System: Oracle Solaris 11.2 X86
Deployable Systems: wl-zone-test
清单 7
在清单 7 中,可以看到存档的创建时间、创建存档的主机、架构、存档所基于的操作系统以及可部署的系统。这一次我们只是捕获 wl-zone-test,但还可以轻松捕获完整系统,包括全局区域和许多不同的非全局区域。
我们使用 -t 选项查看此存档的更多详细信息,如清单 8 所示。
root@dev:~# archiveadm info -v wl-zone-test.uar
Archive Information
Creation Time: 2014-06-11T14:26:11Z
Source Host: dev
Architecture: i386
Operating System: Oracle Solaris 11.2 X86
Recovery Archive: No
Unique ID: 49fc9779-9e48-6efc-9255-c465b2fb5f4d
Archive Version: 1.0
Deployable Systems
'wl-zone-test'
OS Version: 0.5.11
OS Branch: 0.175.2.0.0.37.1
Active BE: solaris
Brand: solaris
Size Needed: 3.5GB
Unique ID: 08d597fb-d5e5-465a-ddb0-8cea93f751ee
AI Media: 0.175.2_ai_i386.iso
Root-only: Yes
清单 8
清单 8 显示的输出更有意思。不带任何选项,archiveadm create 创建一个所谓的“克隆”存档。这意味着它会捕获系统的所有活动引导环境。如果在创建存档时使用了 -r 选项,就会创建一个捕获所有引导环境(包括活动和非活动环境)的恢复存档。在本例中可以看到,它并非一个恢复存档。
此外,这种冗余模式还为我们提供了每个可部署系统的更多详细信息。可以看到,我们只有一个可部署系统 wl-zone-test,总大小为 3.5 GB。还可以看到,此存档包含一个 Automated Installer ISO 映像。这是统一存档的一个重要方面 — 它们是完全自包含的,可以随时(远在存档创建之后)成功部署,只需从 ISO 映像引导系统即可。
捕获了统一存档之后,需要部署它。统一存档旨在与 Oracle Solaris 11 中包含的现有技术集集成。可以实用两种方法部署此存档:通过 Automated Installer 进行裸机安装,或通过 Oracle Solaris 区域。
在本例中,我们进行虚拟到物理转换,生成这个基于区域的存档,并使用 Automated Installer 将其部署为裸机系统(即全局区域)。
注:如果您不熟悉 Automated Installer,请阅读使用安装服务器安装。
我们需要确保新创建的存档对 Automated Installer 服务器可用。
我们转到 Automated Installer 服务器(例如,位于 aiserver.oracle.com),使用 installadm list 命令检查 Automated Installer 服务的状态,如清单 9 所示。
root@aiserver:~# installadm list Service Name Status Arch Type Secure Alias Aliases Clients Profiles Manifests ------------ ------ ---- ---- ------ ----- ------- ------- -------- --------- default-i386 on i386 pkg no yes 0 0 0 1 solaris11_2-i386 on i386 pkg no no 1 0 0 1
清单 9
在清单 9 中,可以看到我们现在设置了一个非常简单的 Automated Installer 服务。设置了一个名为 solaris11_2-i386、别名为 default-i386 的服务。
使用 -m 选项检查 Automated Installer 清单的状态,如清单 10 所示:
root@aiserver:~# installadm list -m Service Name Manifest Name Type Status Criteria ------------ ------------- ---- ------ -------- default-i386 orig_default derived default none solaris11_2-i386 orig_default derived default none
清单 10
清单 10 显示有关新服务的默认 Automated Installer 清单集,其类型为 derived。这意味着它们同时从 Automated Installer 服务器和连接客户端继承了某些配置。默认情况下,使用 Automated Installer 创建的新服务被设置成从映像包管理系统信息库执行基本安装。在本例中,我们希望将这一做法更改为从统一存档安装。
首先通过 Automated Installer 服务器让存档对任何连接的客户端可用。为此,只需在服务器上创建一个托管存档的目录,将存档复制到该目录下,并通过服务管理工具和 svccfg 命令设置 all_services/webserver_files_dir 属性。最后,将刷新 install/server 服务管理工具服务,如下所示:
root@aiserver:~# mkdir /export/auto_install/archives root@aiserver:~# cp wl-zone-test.uar /export/auto_install/archives root@aiserver:~# svccfg -s install/server:default setprop \ all_services/webserver_files_dir = astring: /export/auto_install/archives root@aiserver:~# svccfg -s install/server:default refresh
下一个任务是创建一个 Automated Installer 清单,充当 Automated Installer 服务的默认清单。“供应客户端系统”中介绍了如何创建自己的 Automated Installer 清单。您可以从 /usr/share/auto_install/manifest 目录复制一份 Automated Installer 基本清单,也可以使用 AI Manifest Wizard 创建一份。重要的是添加必要的配置以指向统一存档。
因为我们是在进行虚拟到物理转换,所以还需要包含安装非全局区域中可能未包含但系统引导必需的其他软件包(如硬件驱动程序)的映像包管理系统信息库的位置。
我们所需包含的清单片段如下所示。
<software type="ARCHIVE">
<source>
<file uri="http://aiserver.oracle.com:8080/wl-zone.uar"/>
</source>
<software_data action="install">
<name>wl-zone</name>
</software_data>
</software>
<software type="IPS">
<source>
<publisher name="solaris">
<origin name="http://pkg.oracle.com/solaris/release"/>
</publisher>
</source>
</software>
在“用于存档恢复的 XML 清单示例”中,可以看到更多针对统一存档部署所包含的 Automated Installer 清单片段示例。
为完整起见,清单 11 是将用于供应裸机系统的完整 AI 清单,位于 /tmp/manifest.xml:
root@aiserver:~# cat /tmp/manifest.xml
<!DOCTYPE auto_install SYSTEM "file:///usr/share/install/ai.dtd.1">
<auto_install>
<ai_instance name="default">
<target>
<logical>
<zpool name="rpool" is_root="true">
<filesystem name="export" mountpoint="/export"/>
<filesystem name="export/home"/>
<be name="solaris"/>
</zpool>
</logical>
</target>
<software type="ARCHIVE">
<source>
<file uri="http://aiserver.oracle.com:8080/wl-zone.uar"/>
</source>
<software_data action="install">
<name>wl-zone</name>
</software_data>
</software>
<software type="IPS">
<source>
<publisher name="solaris">
<origin name="http://pkg.oracle.com/solaris/release"/>
</publisher>
</source>
</software>
</ai_instance>
</auto_install>
清单 11
下一步是将清单与服务关联。由于我们并未自定义默认清单集,因此将使用 installadm create-manifest 命令基于 /tmp/manifest.xml 文件创建一份新的 Automated Installer 清单,并将其设置为默认清单。
root@aiserver:~# installadm create-manifest -n default-i386 -m wl-zone -f /tmp/manifest.xml -d Created Manifest: 'wl-zone'
完成之后,将通过网络启动生产系统。该系统将从 DHCP 服务器获取 IP 地址,然后联系 Automated Installer 服务器,找到相应清单并通过网络安装其自身。
我们并不打算检查安装的完整日志,清单 12 只显示了几行可以从 /var/log/install/install_log 看到的内容:
2014-06-27 13:29:40,656 InstallationLogger DEBUG Starting up Progress Handler 2014-06-27 13:29:41,660 InstallationLogger DEBUG Starting Automated Installation 2014-06-27 13:29:41,660 InstallationLogger INFO Install Log: /system/volatile/install_log 2014-06-27 13:29:41,717 InstallationLogger INFO Using XML Manifest: /system/volatile/ai.xml 2014-06-27 13:29:41,775 InstallationLogger INFO Using profile specification: /system/volatile/profile 2014-06-27 13:29:41,832 InstallationLogger INFO Using service list file: /var/run/service_list 2014-06-27 13:29:41,889 InstallationLogger INFO Starting installation. 2014-06-27 13:29:41,944 InstallationLogger DEBUG Registering Manifest Parser Checkpoint 2014-06-27 13:29:41,945 InstallationLogger DEBUG Engine registering: 2014-06-27 13:29:41,945 InstallationLogger DEBUG name: manifest-parser 2014-06-27 13:29:41,945 InstallationLogger DEBUG module_path: solaris_install.manifest.parser 2014-06-27 13:29:41,945 InstallationLogger DEBUG checkpoint_class_name: ManifestParser 2014-06-27 13:29:41,945 InstallationLogger DEBUG args: None ... 2014-06-27 13:29:42,203 InstallationLogger DEBUG Configuring Checkpoints 2014-06-27 13:29:42,204 InstallationLogger DEBUG Engine registering: 2014-06-27 13:29:42,204 InstallationLogger DEBUG name: archive-1 2014-06-27 13:29:42,204 InstallationLogger DEBUG module_path: solaris_install.archive.checkpoints 2014-06-27 13:29:42,204 InstallationLogger DEBUG checkpoint_class_name: InstantiateUnifiedArchive 2014-06-27 13:29:42,204 InstallationLogger DEBUG args: ['http://aiserver.oracle.com:8080/wl-zone-test.uar'] 2014-06-27 13:29:42,204 InstallationLogger DEBUG kwargs: None 2014-06-27 13:29:42,204 InstallationLogger DEBUG insert_before: None 2014-06-27 13:29:42,204 InstallationLogger DEBUG log_level: None ... 2014-06-27 13:29:57,984 InstallationLogger.generated-transfer-1390-1 DEBUG Parsing the Data Object Cache 2014-06-27 13:29:57,984 InstallationLogger.generated-transfer-1390-1 DEBUG Reading the ARCHIVE source 2014-06-27 13:29:57,985 InstallationLogger.generated-transfer-1390-1 DEBUG Archive Object stream list: ['rpool@4881b23b-d2aa-c321-d564-8d0680 0c0ebc'] 2014-06-27 13:29:57,987 InstallationLogger.generated-transfer-1390-1 DEBUG Transfer archive 2014-06-27 13:29:57,987 InstallationLogger.generated-transfer-1390-1 DEBUG Transferring Archive input 2014-06-27 13:29:57,987 InstallationLogger DEBUG Executing: ['/usr/sbin/zfs', 'get', '-H', '-p', '-o', 'value', 'used', 'rpool'] 2014-06-27 13:29:58,028 InstallationLogger DEBUG 1938933248 2014-06-27 13:29:58,030 InstallationLogger.generated-transfer-1390-1 INFO Commencing transfer of stream: 4881b23b-d2aa-c321-d564-8d06800c0eb c-0.zfs to rpool 2014-06-27 13:29:58,047 InstallationLogger DEBUG Executing: ['/usr/sbin/zfs', 'get', '-H', '-p', '-o', 'value', 'used', 'rpool'] 2014-06-27 13:29:58,088 InstallationLogger DEBUG 1938933248 2014-06-27 13:29:58,090 InstallationLogger.generated-transfer-1390-1 DEBUG Progress of rpool: 0% 2014-06-27 13:29:58,522 InstallationLogger.generated-transfer-1390-1 DEBUG Transferring stream file [1/1]: '4881b23b-d2aa-c321-d564-8d06800c0 ebc-0.zfs.0' from http://192.168.56.80:8080/openstack-11.2-x86.uar (range: 8192 - 4522123543) ... 2014-06-27 13:42:54,049 InstallationLogger INFO Automated Installation succeeded. 2014-06-27 13:42:54,107 InstallationLogger DEBUG Transferring log to /a/var/log/install/ 2014-06-27 13:42:54,126 InstallationLogger INFO You may wish to reboot the system at this time. 2014-06-27 13:42:54,184 InstallationLogger DEBUG Shutting down Progress Handler
清单 12
从清单 12 中可以看到,已经成功启动网络安装。我们已经确定将从统一存档 wl-zone-test.uar 进行部署。随着安装过程的进行,我们将看到许多与 ZFS 有关的活动,这意味着在读取统一存档中包含的 ZFS 流并将其安装到磁盘。最后,在日志末尾处可以看到网络安装已经成功。
系统重新启动之后,即可使用 System Configuration Interactive (SCI) 工具配置相应的设置(如本例中的主机名 prod),并通过检查 wladmin 用户的 /export/home/ 目录的内容执行基本检查,看看是否一切都符合预期:
root@prod:~# ls -lsa /export/home total 9 3 drwxr-xr-x 3 root root 3 Jun 11 13:25 . 3 drwxr-xr-x 3 root root 3 Jun 11 11:02 .. 3 drwxr-xr-x 5 wladmin staff 12 Jun 11 14:18 wladmin
而且可以在生产系统上启动 Oracle WebLogic Server 12c,就像以前一样。
Oracle Solaris 11 引入了一些新特性,可提供安全、敏捷的软件生命周期。通过如统一存档、Automated Installer、Oracle Solaris 区域、不可变全局区域以及新的基于 SCAP 的合规性框架等技术,管理员可以简化日常任务,如以可靠、可重复的方式推出新版的业务关键型应用。此外,他们还可以锁定自己的环境以避免人为错误,并且可以持续评估和报告合规性情况。
下面是有关 Oracle Solaris 的一些其他资源:
Glynn Foster 是 Oracle Solaris 首席产品经理。他负责多个技术领域,包括 OpenStack、Oracle Solaris 映像包管理系统、安装和配置管理。
| 修订版 1.0,2014 年 7 月 3 日 |