35 使用 SFCB 的基于 Web 的企业管理 #
35.1 简介和基本概念 #
SUSE® Linux Enterprise Server (SLES) 提供了一组基于开放标准的工具,用于统一管理不同的计算系统和环境。我们的企业解决方案实现 Distributed Management Task Force 所提出的标准。以下段落描述了它们的基本组件。
Distributed Management Task Force, Inc (DMTF) 是业内引领企业和因特网环境管理标准开发的公司。他们的目标是统一管理标准和计划,开发出集成度更高、成本更低、可互操作性更好的管理解决方案。DMTF 标准为控制和通讯提供通用系统管理组件。他们的解决方案是独立于平台和技术的。基于 Web 的企业管理和通用信息模型是其关键技术之一。
基于 Web 的企业管理 (WBEM) 是一整套管理和因特网标准技术。开发 WBEM 的意图是统一企业计算环境的管理。它为该行业提供了使用 Web 技术并且良好集成的管理工具集。WBEM 由以下标准组成:
数据模型:通用信息模型 (CIM) 标准
编码规范:CIM-XML 编码规范
传输机制:通过 HTTP 的 CIM 操作
通用信息模型是描述系统管理的概念信息模型。它并不局限于特定的实施,能在管理系统、网络、服务和应用程序之间交换管理信息。CIM 有两部分 — CIM 规范和 CIM 纲要。
CIM 规范描述语言、命名和元纲要。元模式是模型的正式定义。它定义用来表示模型及其用途以及语义的术语。元模式的元素有类、属性和方法。元纲要也支持使用指令和关联作为类的类型,使用参考作为属性的类型。
CIM 纲要可提供实际模型描述。它提供具有属性和关联的类集合,这些类可提供易理解的概念框架,在该框架内可组织关于受管环境的可用信息。
“通用信息模型对象管理器”(CIMOM)是一种 CIM 对象管理器,或更确切地说,它是一个根据 CIM 标准管理对象的应用程序。CIMOM 管理 CIMOM 提供程序与 CIM 客户端(管理员管理系统的位置)之间的通讯。
CIMOM 提供程序是在 CIMOM 内执行客户端应用程序请求的特定任务的软件。每个提供者实施 CIMOM 模式的一个或多个方面。这些提供程序直接与硬件交互。
Standards Based Linux Instrumentation for Manageability (SBLIM) 是设计用来支持基于 Web 的企业管理 (WBEM) 的工具集。SUSE® Linux Enterprise Server 使用名为小规模 CIM 中介程序的 SBLIM 项目提供的开放源 CIMOM(或 CIM 服务器)。
小规模 CIM 中介程序是设计用于资源有限或嵌入式环境中的 CIM 服务器。它设计为同时保持模块化与轻量级。它是基于开放标准的,支持 CMPI 提供程序、CIM-XML 编码和管理对象格式 (MOF)。它可以灵活配置,并且即便提供程序崩溃也仍然表现稳定。它也很容易访问,因为它支持各种传输协议,例如 HTTP、HTTPS、Unix 域套接字、Service Location Protocol (SLP) 和 Java Database Connectivity (JDBC)。
35.2 设置 SFCB #
要设置小规模 CIM 中介程序 (SFCB) 环境,请确保 基于 Web 的企业管理模式。或者选择它作为组件安装到已在运行的服务器上。确保您的系统上安装了以下包:
安装期间选择了 YaST 中的- cim-schema,通用信息模型 (CIM) 纲要
包含通用信息模型 (CIM)。CIM 是描述网络或企业环境中总体管理信息的模型。CIM 由规范和模式组成。规范定义与其他管理模型集成的详细信息。模式提供实际模型说明。
- cmpi-bindings-pywbem
包含在 Python 中写入和运行 CMPI 类型的 CIM 提供程序的适配器。
- cmpi-pywbem-base
包含基本系统 CIM 提供程序。
- cmpi-pywbem-power-management
包含基于 DSP1027 的电源管理提供程序。
- python-pywbem
包含通过 WBEM 协议调用 CIM 操作来查询和更新受管对象的 Phthon 模块。
- cmpi-provider-register,CIMOM 中性提供程序注册实用程序
包含的实用程序允许 CMPI 提供程序包用 CIMOM 存在于系统上的任何内容注册。
- sblim-sfcb,小规模 CIM 中介程序
包含小规模 CIM 中介程序。它是通过 HTTP 协议与 CIM 操作保持一致的 CIM 服务器。它功能强大,占用资源又少,因此很适合嵌入式和资源有限的环境。SFCB 支持通过 Common Manageability Programming Interface (CMPI) 写入的提供程序。
- sblim-sfcc
包含小规模 CIM 客户端库运行时库。
- sblim-wbemcli
包含 WBEM 命令行界面。它是一个独立的命令行 WBEM 客户端,特别适合基本的系统管理任务。
- smis-providers
包含用于在 Linux 文件系统上处理卷和快照的提供程序。这些分别基于 SNIA 的 SMI-S 卷管理配置文件和 Copy Services 配置文件。
35.2.1 安装其他提供程序 #
SUSE® Linux Enterprise Server 软件储存库包含基于 Web 的企业管理安装模式中没有的额外 CIM 提供程序。您可以在 YaST 软件安装模块中搜索模式 sblim-cmpi-
来方便地获取其列表和安装状态。这些提供程序涵盖了各种系统管理任务,例如 DHCP、NFS 或内核参数设置。安装要用于 SFCB 的那些提供程序是很有用的。
35.2.2 启动、停止 SFCB 和检查其状态 #
CIM 服务器 sfcbd 守护程序是和基于 Web 的企业管理软件一起安装的,默认会在系统启动时启动。下表描述如何启动、停止 sfcbd 和检查其状态。
任务 |
Linux命令 |
---|---|
启动 sfcbd |
以 |
停止 sfcbd |
以 |
检查 sfcbd 状态 |
以 |
35.2.3 确保安全访问 #
SFCB 的默认设置相对来说比较安全。但是也要检查对 SFCB 组件访问的安全性是否符合您的组织要求。
35.2.3.1 证书 #
安全套接字层 (SSL) 传输需要保证安全通讯的证书。安装 SFCB 时,会生成自我签名的证书。
您可以通过更改 /etc/sfcb/sfcb.cfg
中的 sslCertificateFilePath: PATH_FILENAME
设置,将默认证书的路径替换成商用证书或自我签名证书的路径。该文件必须是 PEM 格式。
默认生成的服务器证书位置如下:
/etc/sfcb/server.pem
默认生成的证书文件 servercert.pem
和 serverkey.pem
储存在 /etc/ssl/servercerts
目录下。文件 /etc/sfcb/client.pem
、/etc/sfcb/file.pem
和 /etc/sfcb/server.pem
是这些文件的符号链接。
要生成新证书,请以 root
身份在命令行中输入以下命令:
tux >
sh /usr/share/sfcb/genSslCert.sh
Generating SSL certificates in .
Generating a 2048 bit RSA private key
...................................................................+++
.+++
writing new private key to '/var/tmp/sfcb.0Bjt69/key.pem'
-----
默认情况下,该脚本在当前工作目录下生成证书 client.pem
、file.pem
和 server.pem
。如果希望脚本在 /etc/sfcb
目录中生成证书,需要将它追加到命令后。如这些文件已存在,将显示一条警告消息,而不会重写旧的证书。
tux >
sh /usr/share/sfcb/genSslCert.sh /etc/sfcb
Generating SSL certificates in .
WARNING: server.pem SSL Certificate file already exists.
old file will be kept intact.
WARNING: client.pem SSL Certificate trust store already exists.
old file will be kept intact.
必须从文件系统删除旧的证书并重新运行命令。
要更改 SFCB 使用证书的方式,请参见第 35.2.3.3 节 “身份验证”。
35.2.3.2 端口 #
默认情况下,将 SFCB 配置为接受通过安全端口 5989 的所有通讯。以下段落描述通讯端口的设置和建议的配置。
- 端口 5989(安全)
SFCB 通讯通过 HTTPS 服务使用的安全端口。这是默认选项。通过此设置,当通过因特网在服务器和工作站之间发送通信时,将加密 CIMOM 和客户程序应用程序之间的所有通信。用户必须以客户端应用程序进行身份验证,才能连接到 SFCB 服务器。建议您保留该设置。如果客户端应用程序与所监视的节点之间存在路由器和防火墙,为了使 SFCB CIMOM 能够与必要的应用程序通讯,必须在路由器和防火墙上打开此端口。
- 端口 5988(不安全)
SFCB 通讯通过 HTTP 服务使用的不安全端口。在默认情况下会禁用该设置。通过此设置,当任何人在未经身份验证的情况下通过因特网在服务器和工作站之间发送通讯时,将打开并查看 CIMOM 和客户端应用程序之间的所有通讯。建议仅当尝试调试 CIMOM 问题时才使用此设置。在问题解决后,请再次禁用非安全端口选项。如果客户端应用程序与所监视的节点之间存在路由器和防火墙,为了使 SFCB CIMOM 能够与需要非安全访问的必要应用程序通讯,必须在路由器和防火墙中打开此端口。
如果希望更改默认端口指派,请参见第 35.2.3.2 节 “端口”。
35.2.3.3 身份验证 #
SFCB 支持 HTTP 基本身份验证和基于客户端证书的身份验证(通过 SSL 连接的 HTTP)。基本 HTTP 身份验证通过在 SFCB 配置文件(默认是 /etc/sfcb/sfcb.cfg
)中指定 doBasicAuth =true
来启用。SFCB 的 SUSE® Linux Enterprise Server 安装支持可嵌入身份验证模块 (PAM) 方式;因此本地 root 用户可以用本地 root 身份凭证向 SFCB CIMOM 验证。
如果 sslClientCertificate
配置属性设置为 accept
或 require
,SFCB HTTP 适配器通过 HTTP over SSL (HTTPS) 连接时,会从客户端请求证书。如果指定了 require
,客户端必须提供有效的证书(根据通过 sslClientTrustStore
指定的客户端信任储存)。如果客户端未能提供,CIM 服务器将拒绝该连接。
sslClientCertificate =accept
设置可能不是显式的。如果同时允许基本和客户端证书身份验证,它将很有用。如果客户端能提供有效的证书,将建立 HTTPS 连接,并且不会执行基本身份验证过程。如果该功能不能校验证书,则会发生 HTTP 基本身份验证。
35.3 SFCB CIMOM 配置 #
SFCB 是 CIM 服务器的“轻量级”实现,但也是可以灵活配置的。有若干选项可控制其行为。您可以通过三种方式控制 SFCB 服务器:
设置相应的环境变量
使用命令行选项
更改其配置文件
35.3.1 环境变量 #
有若干环境变量会直接影响 SFCB 的行为。您必须使用 systemctl restart sfcb
重启动 SFCB 守护程序才能使这些更改生效。
PATH
指定
sfcbd
守护程序和实用程序的路径。LD_LIBRARY_PATH
指定 sfcb 运行时库的路径。或者可以将此路径添加到系统范围的动态加载器配置文件
/etc/ld.so.conf
中。SFCB_PAUSE_PROVIDER
指定提供程序的名称。SFCB 服务器会在第一次装载提供程序后暂停。然后您就可以将运行时调试程序加到提供程序的进程中,以便调试。
SFCB_PAUSE_CODEC
指定 SFCB 编解码器(目前仅支持
http
)的名称。SFCB 服务器将在第一次装载编解码器后暂停。然后您就可以将运行时调试程序加到进程中。SFCB_TRACE
为 SFCB 指定调试消息的级别。有效值有 0(无调试消息)、1(关键调试消息)和 4(全部调试消息)。默认值是 1。
SFCB_TRACE_FILE
默认情况下,SFCB 将其调试消息输出到标准错误输出 (STDERR)。设置该值会将调试消息写入指定的文件。
SBLIM_TRACE
为 SBLIM 提供程序指定调试消息级别。有效值有 0(无调试消息)、1(关键调试消息)和 4(全部调试消息)。
SBLIM_TRACE_FILE
默认情况下,SBLIM 提供程序将把跟踪消息输出到 STDERR。设置该值会将调试消息写入指定的文件。
35.3.2 命令行选项 #
SFCB 守护程序 sfcbd
有若干命令行选项,可以打开或关闭特定运行时功能。SFCB 守护程序启动时输入这些选项。
-c, --config-file
=FILESFCB 守护程序启动时,默认会从
/etc/sfcb/sfcb.cfg
读取其配置。您可以用该选项指定备用配置文件。-d, --daemon
强制 sfcbd 及其子进程在后台运行。
-s, --collect-stats
打开运行时统计数字收集。各种 sfcbd 运行时统计数字都会写入当前工作目录下的
sfcbStat
文件。默认情况下,不收集统计数字。-l, --syslog-level
=LOGLEVEL指定系统日志记录工具的详细级别。LOGLEVEL 可以是 LOG_INFO、LOG_DEBUG 或 LOG_ERR(默认)。
-k, --color-trace
=日志级别以不同颜色打印每个进程的跟踪输出,以方便调试。
-t, --trace-components
=NUM激活组件级跟踪消息,其中 NUM 是进行 OR 运算的位掩码整数,它定义要跟踪哪个组件。您指定
-t ?
后,它会列出所有组件及其相关整数位掩码:tux >
sfcbd -t ? --- Traceable Components: Int Hex --- providerMgr: 1 0x0000001 --- providerDrv: 2 0x0000002 --- cimxmlProc: 4 0x0000004 --- httpDaemon: 8 0x0000008 --- upCalls: 16 0x0000010 --- encCalls: 32 0x0000020 --- ProviderInstMgr: 64 0x0000040 --- providerAssocMgr: 128 0x0000080 --- providers: 256 0x0000100 --- indProvider: 512 0x0000200 --- internalProvider: 1024 0x0000400 --- objectImpl: 2048 0x0000800 --- xmlIn: 4096 0x0001000 --- xmlOut: 8192 0x0002000 --- sockets: 16384 0x0004000 --- memoryMgr: 32768 0x0008000 --- msgQueue: 65536 0x0010000 --- xmlParsing: 131072 0x0020000 --- responseTiming: 262144 0x0040000 --- dbpdaemon: 524288 0x0080000 --- slp: 1048576 0x0100000能反映 sfcbd 的内部功能,但不会产生过多消息的有用值是
-t
2019。
35.3.3 SFCB 配置文件 #
SFCB 启动后从配置文件 /etc/sfcb/sfcb.cfg
读取其运行时配置。该行为在启动时可以用 -c
选项覆盖。
配置文件包含 option
:VALUE 对,一行一对。当对此文件执行更改时,如果文本编辑器保存文件的格式是所使用环境的本机格式,则可以使用此文本编辑器更改文件。
由井号 (#) 注释的选项的所有设置都使用默认设置。
以下选项列表可能不完整。查看 /etc/sfcb/sfcb.cfg
和 /usr/share/doc/packages/sblim-sfcb/README
的内容以获取其完整列表。
35.3.3.1 httpPort #
用途#
指定 sfcbd 用于侦听接收自 CIM 客户端的 HTTP(非安全)请求的本地端口值。默认值是 5988
。
语法#
httpPort:
PORT_NUMBER
35.3.3.2 enableHttp #
用途#
指定 SFCB 是否接受 HTTP 客户端的连接。默认为 false
。
语法#
enableHttp:
OPTION
选项 |
描述 |
---|---|
true |
启用 HTTP 连接。 |
false |
禁用 HTTP 连接。 |
35.3.3.3 httpProcs #
用途#
指定在阻止新传入 HTTP 请求之前,HTTP 客户端连接的最大并行数。默认值是 8
。
语法#
httpProcs:
MAX_NUMBER_OF_CONNECTIONS
35.3.3.4 httpUserSFCB、httpUser #
用途#
这些选项控制将运行 HTTP 服务器的用户。如果 httpUserSFCB
为 true
,HTTP 将以 SFCB 主进程的同一用户身份运行。如果为 false
,将使用为 httpUser
指定的用户名。此设置用于 HTTP 和 HTTPS 服务器。如果 httpUserSFCB
设置为 false,则必须
指定 httpUser
。默认值为 true
。
语法#
httpUserSFCB: true
35.3.3.5 httpLocalOnly #
用途#
指定是否将 HTTP 请求限制为仅 localhost。默认为 false
。
语法#
httpLocalOnly: false
35.3.3.6 httpsPort #
用途#
指定 sfcbd 侦听来自 CIM 客户端的 HTTPS 请求的本地端口值。默认值是 5989
。
语法#
httpsPort: 端口号
35.3.3.7 enableHttps #
用途#
指定 SFCB 是否接受 HTTPS 客户端连接。默认值是 true
。
语法#
enableHttps: 选项
选项 |
描述 |
---|---|
true |
启用 HTTPS 连接。 |
false |
禁用 HTTPS 连接。 |
35.3.3.8 httpsProcs #
用途#
指定在阻止新传入 HTTPS 请求之前,HTTPS 客户端连接的最大并行数。默认为 8
。
语法#
httpsProcs:
MAX_NUMBER_OF_CONNECTIONS
35.3.3.9 enableInterOp #
用途#
指定 SFCB 是否为指示支持提供 interop 名称空间。默认值是 true
。
语法#
enableInterOp:
OPTION
选项 |
描述 |
---|---|
true |
启用 interop 名称空间。 |
false |
禁用 interop 名称空间。 |
35.3.3.10 provProcs #
用途#
指定并发提供程序进程的最大数。达到这点之后,如果有新传入请求要求装载新提供程序,则现有提供程序之一将自动卸载。默认值是 32
。
语法#
provProcs:
MAX_NUMBER_OF_PROCS
35.3.3.11 doBasicAuth #
用途#
根据客户端用户标识符打开或关闭它接受请求之前所做的基本身份验证。默认值为 true
,表示执行基本客户端身份验证。
语法#
doBasicAuth:
OPTION
选项 |
描述 |
---|---|
true |
启用基本身份验证。 |
false |
禁用基本身份验证。 |
35.3.3.12 basicAuthLib #
用途#
指定本地库名称。SFCB 服务器将装载该库以验证客户端用户标识符。默认值是 sfcBasicPAMAuthentication
。
语法#
provProcs:
MAX_NUMBER_OF_PROCS
35.3.3.13 useChunking #
用途#
该选项启用或禁用 HTTP/HTTPS“分块”。如果启用,服务器将通过多个较小的“块”将大量响应数据返回客户端,而不是缓存数据并集中在一个块中全部送回。默认值是 true
。
语法#
useChunking:
OPTION
选项 |
描述 |
---|---|
true |
启用 HTTP/HTTPS 数据分块。 |
false |
禁用 HTTP/HTTPS 数据分块。 |
35.3.3.14 keepaliveTimeout #
用途#
指定一个连接上的 SFCB HTTP 进程在两次请求之间最多等待多少秒就终止。将它设置为 0
将禁用 HTTP keep-alive。默认值是 0
。
语法#
keepaliveTimeout:
SECS
35.3.3.15 keepaliveMaxRequest #
用途#
指定一个连接上连续请求的最大数。将它设置为 0
将禁用 HTTP keep-alive。默认值是 10
。
语法#
keepaliveMaxRequest:
NUMBER_OF_CONNECTIONS
35.3.3.16 registrationDir #
用途#
指定注册目录,它包含提供程序的注册数据、分阶段区域和静态储存库。默认值是 /var/lib/sfcb/registration
。
语法#
registrationDir:
DIR
35.3.3.17 providerDirs #
用途#
指定 SFCB 搜索提供程序库的目录的空格分隔列表。默认值是 /usr/lib64 /usr/lib64 /usr/lib64/cmpi
。
语法#
providerDirs:
DIR
35.3.3.18 providerSampleInterval #
用途#
指定提供程序管理器间隔多少秒检查空闲的提供程序。默认值是 30
。
语法#
providerSampleInterval:
SECS
35.3.3.19 providerTimeoutInterval #
用途#
指定提供程序管理器经过多少秒的间隔就卸载空闲的提供程序。默认值是 60
。
语法#
providerTimeoutInterval:
SECS
35.3.3.20 providerAutoGroup #
用途#
如果提供程序注册文件未指定任何其他组,而该选项设置为 true
,则同一共享库内的所有提供程序都将在同一进程中执行。
语法#
providerAutoGroup:
OPTION
选项 |
描述 |
---|---|
true |
启用提供程序分组。 |
false |
禁用提供程序分组。 |
35.3.3.21 sslCertificateFilePath #
用途#
指定包含服务器证书的文件的名称。该文件必须是 PEM (保密邮件,RFC 1421 和 RFC 1424)格式。只有当 enableHttps
设置为 true
时才需要该文件。默认值是 /etc/sfcb/server.pem
。
语法#
sslCertificateFilePath:
PATH
35.3.3.22 sslKeyFilePath #
用途#
指定包含服务器证书私用密钥的文件的名称。该文件必须是 PEM 格式且不能有通行口令的保护。该文件仅当 enableHttps
设置为 true
时才需要。默认值是 /etc/sfcb/file.pem
。
语法#
sslKeyFilePath:
PATH
35.3.3.23 sslClientTrustStore #
用途#
指定包含客户端的 CA 或自我签名证书的文件的名称。该文件必须是 PEM 格式,只有当 sslClientCertificate
设置为 accept
或 require
时才需要。默认值是 /etc/sfcb/client.pem
。
语法#
sslClientTrustStore:
PATH
35.3.3.24 sslClientCertificate #
用途#
指定 SFCB 处理基于客户端证书的身份验证的方式。如果设置为 ignore
,将不会从客户端请求证书。如果设置为 accept
,它会从客户端请求证书,但即使客户端没有证书也不会失败。如果设置为 require
,会在客户端不存在证书时拒绝客户端连接。默认值是 ignore
。
语法#
sslClientCertificate:
OPTION
选项 |
描述 |
---|---|
ignore |
禁止请求客户端证书。 |
accept |
禁止请求客户端证书。 如果证书不存在,不会失败。 |
require |
拒绝无有效证书的客户端连接。 |
35.3.3.25 certificateAuthLib #
用途#
指定用于请求基于客户端证书的用户身份验证的本地库名称。只有当 sslClientCertificate
未设置成 ignore
时才这样请求。默认值是 sfcCertificateAuthentication
。
语法#
certificateAuthLib:
FILE
35.3.3.26 traceLevel #
用途#
指定 SFCB 的跟踪级别您可以通过设置环境变量 SFCB_TRACE_LEVEL
覆盖它。默认值是 0
。
语法#
traceLevel:
NUM_LEVEL
35.3.3.27 traceMask #
用途#
指定 SFCB 的跟踪掩码。您可以用命令行选项 --trace-components
覆盖它。默认值是 0
。
语法#
traceMask:
MASK
35.3.3.28 tracefile #
用途#
为 SFCB 指定跟踪文件。您可以通过设置环境变量 SFCB_TRACE_FILE
覆盖它。默认值是 stderr
(标准错误输出)。
语法#
traceFile:
OUTPUT
35.4 高级 SFCB 任务 #
本章涵盖了与 SFCB 使用相关的更多高级主题。要了解这些主题,您需要有 Linux 文件系统的基础知识,并具有使用 Linux 命令行的经验。本章包括以下任务:
安装 CMPI 提供程序
测试 SFCB
使用
wbemcli
CIM 客户端
35.4.1 安装 CMPI 提供程序 #
要安装 CMPI 提供程序,您必须确保其共享库已复制到 providerDirs
配置选项所指定的目录之一,参见第 35.3.3.17 节 “providerDirs”。提供程序还必须用 sfcbstage
和 sfcbrepos
命令正确注册。
提供程序包通常是为 SFCB 准备的,为此其安装过程负责进行正确的注册。多数 SBLIM 提供程序是为 SFCB 准备的。
35.4.1.1 类储存库 #
类储存库就是 SFCB 储存 CIM 类信息的位置。它通常由包含名称空间组件的目录树组成。典型的 CIM 名称空间如 root/cimv2
或 root/interop
,它们会分别转换为文件系统上的类储存库目录路径
/var/lib/sfcb/registration/repository/root/cimv2
和
/var/lib/sfcb/registration/repository/root/interop
每个名称空间目录都包含文件 classSchemas
。该文件中有该名称空间下注册的所有 CIM 类的已编译二进制表示。它还包含有关其 CIM 超类的必要信息。
此外,每个名称空间目录都可能包含文件 qualifiers
,其中包含了该名称空间的所有限定符。sfcbd 重启动时,类提供程序会扫描目录 /var/lib/sfcb/registration/repository/
及其全部子目录,以确定注册的名称空间。然后将解码 classSchemas
文件,为每个名称空间构建类的层次结构。
35.4.1.2 添加新类 #
SFCB 不能在线处理 CIM 类。您需要脱机添加、更改或去除类,然后使用 systemctl restart sfcb
重启动 SFCB 服务来注册这些更改。
为储存提供程序类和注册信息,SFCB 使用名为分阶段区域的位置。在 SUSE® Linux Enterprise Server 系统上,它就是 /var/lib/sfcb/stage/
下的目录结构。
为添加新的提供程序,您必须:
将提供程序类定义文件复制到分阶段区域目录的子目录
./mofs
(/var/lib/sfcb/stage/mofs
)。将包含类名、提供程序类型和可执行库文件名的注册文件复制到
./regs
子目录。
分阶段目录中有两个默认的 “mof”(类定义)文件:indication.mof
和 interop.mof
。运行 sfcbrepos
命令后,root 阶段目录 /var/lib/sfcb/stage/mofs
下的 MOF 文件将复制到每个名称空间。interop.mof
将只编译到 interop 名称空间。
目录布局看上去如下所示:
tux >
ls /var/lib/sfcb/stage
default.reg mofs regs
tux >
ls /var/lib/sfcb/stage/mofs
indication.mof root
tux >
ls /var/lib/sfcb/stage/mofs/root
cimv2 interop suse virt
tux >
ls -1 /var/lib/sfcb/stage/mofs/root/cimv2 | less
Linux_ABIParameter.mof
Linux_BaseIndication.mof
Linux_Base.mof
Linux_DHCPElementConformsToProfile.mof
Linux_DHCPEntity.mof
[..]
OMC_StorageSettingWithHints.mof
OMC_StorageVolumeDevice.mof
OMC_StorageVolume.mof
OMC_StorageVolumeStorageSynchronized.mof
OMC_SystemStorageCapabilities.mof
tux >
ls -1 /var/lib/sfcb/stage/mofs/root/interop
ComputerSystem.mof
ElementConformsToProfile.mof
HostSystem.mof
interop.mof
Linux_DHCPElementConformsToProfile.mof
[..]
OMC_SMIElementSoftwareIdentity.mof
OMC_SMISubProfileRequiresProfile.mof
OMC_SMIVolumeManagementSoftware.mof
ReferencedProfile.mof
RegisteredProfile.mof
tux >
ls -1 /var/lib/sfcb/stage/regs
AllocationCapabilities.reg
Linux_ABIParameter.reg
Linux_BaseIndication.reg
Linux_DHCPGlobal.reg
Linux_DHCPRegisteredProfile.reg
[..]
OMC_Base.sfcb.reg
OMC_CopyServices.sfcb.reg
OMC_PowerManagement.sfcb.reg
OMC_Server.sfcb.reg
RegisteredProfile.reg
tux >
cat /var/lib/sfcb/stage/regs/Linux_DHCPRegisteredProfile.reg
[Linux_DHCPRegisteredProfile]
provider: Linux_DHCPRegisteredProfileProvider
location: cmpiLinux_DHCPRegisteredProfile
type: instance
namespace: root/interop
#
[Linux_DHCPElementConformsToProfile]
provider: Linux_DHCPElementConformsToProfileProvider
location: cmpiLinux_DHCPElementConformsToProfile
type: instance association
namespace: root/cimv2
#
[Linux_DHCPElementConformsToProfile]
provider: Linux_DHCPElementConformsToProfileProvider
location: cmpiLinux_DHCPElementConformsToProfile
type: instance association
namespace: root/interop
SFCB 对每个提供程序使用自定义提供程序注册文件。
SBLIM 网站上的所有 SBLIM 提供程序都已包括用于生成 SFCB 的 .reg 文件的注册文件。
SFCB 注册文件的格式是:
[<class-name>] provider: <provide-name> location: <library-name> type: [instance] [association] [method] [indication] group: <group-name> unload: never namespace: <namespace-for-class> ...
其中:
<class-name>
CIM 类名(必需)
<provider-name>
CMPI 提供程序名称(必需)
<location-name>
提供程序库的名称(必需)
type
提供程序的类型(必需)它可以是以下的任意组合:
instance
、association
、method
或indication
。<group-name>
可以将多个提供程序组合起来,在单一进程下运行,以进一步最小化运行时资源的占用。所有注册在同一 <group-name> 下的提供程序都将在同一进程下执行。默认情况下每个提供程序作为单独的进程运行。
unload
指定提供程序的卸载策略。目前唯一支持的选项是
never
,即指定不监视提供程序的空闲次数,也从不卸载。默认情况下,每个提供程序只要空闲次数超过配置文件中指定的值就卸载。namespace
可执行本提供程序的名称空间的列表。这是必需的,尽管对于多数提供程序来说它就是
root/cimv2
。
所有类定义和提供程序注册文件都储存在分阶段区域后,就需要用命令 sfcbrepos
-f
重构建 SFCB 类储存库。
您可以用这种方式添加、更改或删除类。重构建类储存库后,用命令 systemctl restart sfcb
重启动 SFCB。
或者,SFCB 包包含一个实用程序,它会将提供程序类 mof 文件和注册文件复制到分阶段区域中正确的位置。
sfcbstage
-r
[provider.reg] [class1.mof] [class2.mof] ...
运行该命令后,您还需要重构建类储存库并重启动 SFCB 服务。
35.4.2 测试 SFCB #
SFCB 包包括两个测试脚本:wbemcat
和 xmltest
。
wbemcat
通过 HTTP 协议将原始 CIM-XML 数据发送到端口 5988 上正在侦听的指定 SFCB 主机(默认为本地主机)。然后它会显示返回的结果以下文件包含标准 EnumerateClasses 请求的 CIM-XML 表示:
<?xml version="1.0" encoding="utf-8"?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLEREQ> <IMETHODCALL NAME="EnumerateClasses"> <LOCALNAMESPACEPATH> <NAMESPACE NAME="root"/> <NAMESPACE NAME="cimv2"/> </LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"> <CLASSNAME NAME=""/> </IPARAMVALUE> <IPARAMVALUE NAME="DeepInheritance"> <VALUE>TRUE</VALUE> </IPARAMVALUE> <IPARAMVALUE NAME="LocalOnly"> <VALUE>FALSE</VALUE> </IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"> <VALUE>FALSE</VALUE> </IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"> <VALUE>TRUE</VALUE> </IPARAMVALUE> </IMETHODCALL> </SIMPLEREQ> </MESSAGE> </CIM>
将该请求发送到 SFCB CIMOM 后,会返回具有已注册提供程序的所有支持类的列表。假定您将文件保存为 cim_xml_test.xml
。
tux >
wbemcat cim_xml_test.xml | less
HTTP/1.1 200 OK
Content-Type: application/xml; charset="utf-8"
Content-Length: 337565
Cache-Control: no-cache
CIMOperation: MethodResponse
<?xml version="1.0" encoding="utf-8" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="4711" PROTOCOLVERSION="1.0">
<SIMPLERSP>
<IMETHODRESPONSE NAME="EnumerateClasses">
[..]
<CLASS NAME="Linux_DHCPParamsForEntity" SUPERCLASS="CIM_Component">
<PROPERTY.REFERENCE NAME="GroupComponent" REFERENCECLASS="Linux_DHCPEntity">
</PROPERTY.REFERENCE>
<PROPERTY.REFERENCE NAME="PartComponent" REFERENCECLASS="Linux_DHCPParams">
</PROPERTY.REFERENCE>
</CLASS>
</IRETURNVALUE>
</IMETHODRESPONSE>
</SIMPLERSP>
</MESSAGE>
</CIM>
列出的类会随您在系统上安装的提供程序的不同而不同。
第二个脚本 xmltest
也用于将原始 CIM-XML 测试文件发送到 SFCB CIMOM。它会随即比较返回的结果和以前保存的“OK”结果文件。如果还不存在对应的“OK”文件,将创建它以备后用:
tux >
xmltest cim_xml_test.xml Running test cim_xml_test.xml ... OK Saving response as cim_xml_test.OKroot #
xmltest cim_xml_test.xml Running test cim_xml_test.xml ... Passed
35.4.3 命令行 CIM 客户端:wbemcli #
除了 wbemcat
和 xmltest
外,SBLIM 项目包含更高级的命令行 CIM 客户端 wbemcli
。该客户端用于将 CIM 请求发送到 SFCB 服务器,并显示返回的结果。它独立于 CIMOM 库,可与所有 WBEM 兼容实现一起使用。
例如,如果您需要列出注册到您的 SFCB 的 SBLIM 提供程序实现的所有类,则将 “EnumerateClasses” (ec) 请求发送到 SFCB:
tux >
wbemcli -dx ec http://localhost/root/cimv2
To server: <?xml version="1.0" encoding="utf-8" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL \
NAME="EnumerateClasses"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"> \
</NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE> \
</LOCALNAMESPACEPATH>
<IPARAMVALUE NAME="DeepInheritance"><VALUE>TRUE</VALUE> \
</IPARAMVALUE>
<IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE>
<IPARAMVALUE NAME="IncludeQualifiers"><VALUE>FALSE</VALUE> \
</IPARAMVALUE>
<IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE> \
</IPARAMVALUE>
</IMETHODCALL></SIMPLEREQ>
</MESSAGE></CIM>
From server: Content-Type: application/xml; charset="utf-8"
From server: Content-Length: 337565
From server: Cache-Control: no-cache
From server: CIMOperation: MethodResponse
From server: <?xml version="1.0" encoding="utf-8" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="4711" PROTOCOLVERSION="1.0">
<SIMPLERSP>
<IMETHODRESPONSE NAME="EnumerateClasses">
<IRETURNVALUE>
<CLASS NAME="CIM_ResourcePool" SUPERCLASS="CIM_LogicalElement">
<PROPERTY NAME="Generation" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="ElementName" TYPE="string">
</PROPERTY>
<PROPERTY NAME="Description" TYPE="string">
</PROPERTY>
<PROPERTY NAME="Caption" TYPE="string">
</PROPERTY>
<PROPERTY NAME="InstallDate" TYPE="datetime">
</PROPERTY>
[..]
<CLASS NAME="Linux_ReiserFileSystem" SUPERCLASS="CIM_UnixLocalFileSystem">
<PROPERTY NAME="FSReservedCapacity" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="TotalInodes" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="FreeInodes" TYPE="uint64">
</PROPERTY>
<PROPERTY NAME="ResizeIncrement" TYPE="uint64">
<VALUE>0</VALUE>
</PROPERTY>
<PROPERTY NAME="IsFixedSize" TYPE="uint16">
<VALUE>0</VALUE>
</PROPERTY>
[..]
-dx
选项向您显示 wbemcli
发送到 SFCB 的实际 XML,以及收到的实际 XML。在以上示例中,众多返回类中的第一个就是 CIM_ResourcePool
,后面是 Linux_ReiserFileSystem
。类似的条目会对所有其他注册的类显示。
如果您省略 -dx
选项,wbemcli
会显示返回数据的简化表示:
tux >
wbemcli ec http://localhost/root/cimv2
localhost:5988/root/cimv2:CIM_ResourcePool Generation=,ElementName=, \
Description=,Caption=,InstallDate=,Name=,OperationalStatus=, \
StatusDescriptions=,Status=,HealthState=,PrimaryStatus=, \
DetailedStatus=,OperatingStatus=,CommunicationStatus=,InstanceID=, \
PoolID=,Primordial=,Capacity=,Reserved=,ResourceType=, \
OtherResourceType=,ResourceSubType=, \AllocationUnits=
localhost:5988/root/cimv2:Linux_ReiserFileSystem FSReservedCapacity=, \
TotalInodes=,FreeInodes=,ResizeIncrement=,IsFixedSize=,NumberOfFiles=, \
OtherPersistenceType=,PersistenceType=,FileSystemType=,ClusterSize=, \
MaxFileNameLength=,CodeSet=,CasePreserved=,CaseSensitive=, \
CompressionMethod=,EncryptionMethod=,ReadOnly=,AvailableSpace=, \
FileSystemSize=,BlockSize=,Root=,Name=,CreationClassName=,CSName=, \
CSCreationClassName=,Generation=,ElementName=,Description=,Caption=, \
InstanceID=,InstallDate=,OperationalStatus=,StatusDescriptions=, \
Status=,HealthState=,PrimaryStatus=,DetailedStatus=,OperatingStatus= \
,CommunicationStatus=,EnabledState=,OtherEnabledState=,RequestedState= \
,EnabledDefault=,TimeOfLastStateChange=,AvailableRequestedStates=, \
TransitioningToState=,PercentageSpaceUse=
[..]
35.5 更多信息 #
- http://www.dmtf.org
Distributed Management Task Force 网站
- http://www.dmtf.org/standards/wbem/
Web-Based Enterprise Management (WBEM) 网站
- http://www.dmtf.org/standards/cim/
通用信息模型 (CIM) 网站
- http://sblim.wiki.sourceforge.net/
Standards Based Linux Instrumentation (SBLIM) 网站
- http://sblim.sourceforge.net/wiki/index.php/Sfcb
小规模 CIM 中介程序 (SFCB) 网站
- http://sblim.sourceforge.net/wiki/index.php/Providers
SBLIM 提供程序包