OpenLMI(全称 Open Linux Management Infrastructure)即开放式的 Linux 管理基础架构。OpenLMI 是一个开源项目,用于管理 Linux 系统管理的通用基础架构。它建立在现有工具基础上,充当抽象层,以便向系统管理员隐藏基础系统的大部分复杂性。OpenLMI 分发有一组服务,这些服务可通过本地或远程访问并提供多种语言绑定、标准 API 和标准脚本接口,这些接口可用于管理和监控硬件、操作系统和系统服务,OpenLMI 旨在提高使用 WBEM 标准的 Linux 系统管理,为管理 Linux 系统提供常用的基础设施。它还可让用户配置、管理并监控硬件、操作系统及系统服务,可帮助用户快速大量的部署系统存储、软件包安装删除、网络管理等工作。对此,我们来整理 OpenLMI 的部署过程和使用方法,供相关同学参考。
OpenLMI 可让用户执行以下操作:
配置、管理和监控服务器及虚拟机运行情况;
配置、管理和监控本地或者远程操作系统;
配置、管理及监控本地或者远程的存储和网络;
使用 C/C++、Python、Java 或者命令行界面调用系统管理。
Fedora 是 目前OpenLMI 的主要开发平台。从 Fedora 18 这个版本开始支持,推荐使用 Fedora 21 及其之后的版本,它们可以提供所有功能组件。RHEL 和 CentOS,从版本 7 开始支持,centos6下是无法安装openlmi的,这两个发行版本可提供大部分功能组件。注意,用户需要通过 epel 软件源安装 openlmi 软件包。SuSE Linux 从版本 12 开始支持,可以提供一部分功能组件。Debian 和 Ubuntu 这两个发行版本待定。
资源参考:OpenLMI;openlmi-pcp;Python openlmi;fedoraproject
1)产品简介
OpenLMI 是一个 Linux 平台的服务配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack。OpenLMI 旨在为在物理机和虚拟机上运行红帽企业 Linux 系统的生产服务器提供一个通用管理接口。OpenLMI 的主要功能包括管理存储设备、网络、系统服务、用户帐户、硬件和软件配置、电源管理和 Active Directory 的交互。OpenLMI 里面提供了一整套的代理程序包括:控制器、客户端程序与命令行工具码,即以下三个组件组成:
系统管理代理: 这些代理安装在受管系统上,即需要监控的服务器上。用来查询,修改和监控系统运行情况。代理程序可安装在那些需要控管的服务器或虚拟机上,然后再由 OpenLMI 控制器来管理这些代理程序,并提供相关接口,系统管理代理通常称为通用信息模型提供商( LMI Providers )或 CIM 提供商(CIM Providers)。
标准对象代理(OpenLMI object broker): 它负责管理代理并为其提供接口。标准对象代理也称为 CIM 对象监控器或 CIMOM。
客户端应用程序和脚本:客户端应用程序和脚本通过标准对象代理调用系统管理代理,它使用 https 连接的 XML 技术,这也是OpenLMI 被认为是安全性,因为它使用 TLS(HTTPS)进行加密通信。其中,LMIshell是一个客户端客户端程序,主要包括组命令行工具和 lmi 交互命令,其他语言的脚本工具,它的作用是通过 OpenLMI object broker 來调用 LMI Providers。这个客户端通过使用 WBEM + HTTPS 协议访问 CIMOM。
受管系统即你想要使用 OpenLMI 客户端工具监控和管理的系统,OpenLMI 提供了一系列 RPM 软件包进行发布,其中包括 CIMOM、各个 CIM 提供程序和客户端应用,我们在受管系统部署安装OpenLMI,过程会用到TCP 5989 (wbem-https):
#安装软件包
yum install openlmi -y
或
yum install tog-pegasus -y #安装 OpenPegasus CIMOM 及其系统的所有依赖项,并为 peg asus 用户创建一个用户帐户。
yum install openlmi-{storage,networking,service,account,powermanagement} #安装用于存储、网络、服务、帐户和电源管理的 CIM 提供程序
#打开防火墙的 5989 端口
firewall-cmd --permanent --add-port 5989/tcp
iptables -I INPUT 1 -p tcp --dport 5989 -j ACCEPT
#设置 Selinux 为 permissive 模式
setenforce 0
#设置 pegasus 用户密码
passwd pegasus #默认情况下,只有 pegasus 用户才能远程和本地访问 CIMOM
#设置远程访问权限,自定义被允许连接到 OpenPegasus CIMOM 的用户列表,修改配置文件
vim /etc/Pegasus/access.conf #修改把下面一行;
#ALL EXCEPT pegasus:wbemNetwork //修改为
ALL EXCEPT root pegasus:wbemNetwork
#启动服务
systemctl start tog-pegasus #启动tog-pegasus.service服务来启动 OpenPegasus CIMOM
systemctl enable tog-pegasus
3)客户端配置
客户端访问CIMOM,过程中OpenLMI 使用基于 Web 的企业管理(WBEM)协议,该协议通过 HTTP 传输层运行。标准 HTTP 基本身份验证在此协议中执行,这意味着用户名和密码与请求一起传输。因此,需要将 OpenPegasus CIMOM 配置为使用 HTTPS 进行通信,以确保安全的身份验证。受管系统上需要一个安全套接字层(SSL)或传输层安全(TLS)证书来建立加密频道。
yum install openlmi-tools #交互式安装LMIShell,用于访问 OpenPegasus 提供的 CIM 对象,以及它对系统的所有依赖项
yum install 'openlmi-scripts*'
#说明:目前 OpenLMI 脚本文件主要包括如下模块:
OpenLMI-account :用户帐户管理模块
OpenLMI-logicalfile: 文件和目录管理模块
OpenLMI-networking: 网络配置管理模块
OpenLMI-powermanagement: 电源管理模块
OpenLMI-service: 服务系统管理模块
OpenLMI-storage: 存储管理模块
OpenLMI-hardware: 硬件信息检索模块
OpenLMI-software : 软件管理模块
OpenLMI-journald : 系统日志管理模块
#设置 ca
scp root@ server1:/etc/Pegasus/server.pem /etc/pki/ca-trust/source/anchors/client2-cert.pem
update-ca-trust extract
systemctl restart tog-pegasus.service
4)lmi命令说明
lmi 命令格式:lmi [options]
主要选项:
---hosts-file <hosts> 路径包含目标主机名的文件。 每个主机都必须列在一行
--user <user> 目标主机所使用的用户名
--same-credentials 所有主机使用一个认证文件
-n --noverify 不验证 SSL 证书
-v 屏幕显示输出信息
--trace 显示回溯上的错误
-c --config-file <config> 路径为用户配置文件
-h --host <host> 目标主机名称
--notrace 禁止显示回溯
--log-file <log_file> 输出日志文件
-N --no-headings 不打印表格标题
-L --lister-format (table | csv) 输出使用 table 或者 CSV 格式
说明:lmi 交互模式下支持如下子命令:
file : 文件系统等数据格式的管理
help :打印帮助信息
hwinfo : 显示收集的硬件信息。
system : 显示收集的系统信息。
sssd :sssd 系统服务管理功能。
selinux: selinux 管理。
group :用户组管理功能。
service : 系统服务管理。
storage: 基本的存储设备的信息。
sw : 系统软件管理。
net:网络服务管理
power :系统电源管理
user :用户管理
journald:系统日志
realmd: 管理 AD 或 Kerberos 域成员。
locale; 设置键盘布局、语言、时区、时间等功能。
说明 : 不同的 Linux 发行版本支持的子命令数量有差异,其中数量最多功能最全的是 Fedora 21。用户在终端下输入 lmi 进入交互环境,然后输入“?”或者 help 命令可以得到子命令列表和其他帮助。
5)命令使用
1、查看主机硬件配置
要查看主机硬件情况,对于本地主机使用交互模式,在 lmi> 提示符下输入 hwinfo 子命令即可
hwinfo system :获取主机名称。
hwinfo motherboard:获取主板信息。
hwinfo cpu:获取 CPU 信息。
hwinfo memory:获取内存信息。
hwinfo [all] :获取所有信息。
hwinfo pci:获取 pci 插槽信息。
hwinfo disks: 获取磁盘信息。
2、查看软件: lmi> system
收集内容包括:操作系统版本信息,防火墙配置,网络接口信息、内核版本、时区、SElinux 状态、日志系统、系统语言等。下面是一个例子,清单 2 就是操作过程和输出界面。
lmi 的 service 子命令可以用来查看、启动、停止、重新启动本地和远程服务。下面是两个例子。 查看运程主机服务运行情况,使用如下命令:
lmi> service show httpd.service
Name=httpd
Caption=The Apache HTTP Server
Enabled=No
Status=Running
停止一个本地服务,使用如下命令:
lmi> service stop sshd.service
说明:service 命令其他主要参数包括:
list 打印所有服务列表
show 显示服务运行情况
start 启动一个服务
stop 停止一个服务
restart 重新启动一个服务
reload 重新加载一个服务配置
lmi> sw show pkg php #查看一个软件包详情
lmi> sw install httpd #安装一个软件包
lmi> sw update nmap # 升级一个软件包
lmi> sw remove nmap #删除一个软件包
3、查看存储:lmi>storage list
lmi> storage tree #树形结构显示存储设备列表
lmi> storage show /dev/disk/by-id/ata-VBOX_HARDDISK_VB289545a2-5d00c206-part1 #查看具体某个存储详情
4、查看网络
lmi>net device list
#设置网络接口新的 ip 地址
lmi> net address replace enp0s3 192.168.0.130 24
#激活一个网络接口
lmi> net activate enp0s3
#设置 dns 服务器 ip 地址
lmi> net dns add enp0s3 192.168.0.1
5、用户管理
#查看用户
lmi> user list
#查看已经存在的用户组列表
lmi>group list
#添加一个用户
lmi> user create myql
#查看已经某用户详情列表
lmi> user show myq1
#删除一个用户
lmi> user delete myq1
6)直接命令模式
除了交互模式外。还可以使用直接命令模式,这种直接模式的执行速度更快:
lmi -h managedsystem.mydomain.org service list – all #显示所有的服务列表
lmi -h managedsystem.mydomain.org storage raid create 5 /dev/sdb /dev/sdd /dev/sde # 设置远程主机上的 raid 存储