内容


Linux 系统运维工具 OpenLMI

Comments

前言

OpenLMI 是一个 Linux 平台的服务配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack。当你去管理 10 台服务器,你肯定会说小意思。没有任何压力。 当你去管理 50 台服务器,你可能也会说没问他。当你去管理 1000+ 台服务器呢?你是不是就头痛了,不同的硬件,不同的内核版本,不同的软件版本。为了提升效率,OpenLMI 就派上了大用场。OpenLMI 可管理网络监控、用户、用户组、软件包、系统服务、软件包安装删除等。它是是通过 Python 语言开发。相比较其它同类产品来说,OpenLMI 还是非常年轻的,本文以最新 Fedora 21 为平台介绍 OpenLMI 的部署过程和使用方法。

OpenLMI 就是开放式的 Linux 管理基础架构。OpenLMI 是开源项目使用 WBEM 标准的 Linux 系统管理。WBEM 即 Web-Based Enterprise Management,WBEM 由 DMTF(Distributed Management Task Force,分布式管理任务组)在许多厂商的帮助下创立,目标是为管理企业环境开发一个标准的接口集。WBEM 模型最关键的部分是它的数据模型(或描述和定义对象的方式)、编码规范(Encoding Specification),以及在客户端和服务器端之间传输数据的模式。WBEM (Web-Based Enterprise Management) 作为一项业界倡议,起始于 1996 年,它规范了企业网络中受管资源的描述与使用。

OpenLMI 功能

OpenLMI 提供了一套抽象层 API,将系统管理的相关工作任务,以及底层系统运作的复杂程序,统一起来。OpenLMI 里面提供了一整套的代理程序包括:控制器、客户端程序与命令行工具码。其中代理程序可安装在那些需要控管的服务器或虚拟 机上,然后再由 OpenLMI 控制器来管理这些代理程序,并提供相关接口,而客户端程序的作用是,经由控制器来调取代理程序,可利用命令行接口使用 C/C++、Python 或 Java 等语言。oenlmi 项目为管理 Linux 系统提供常用的基础设施。它还可让用户配置、管理并监控硬件、操作系统及系统服务。OpenLMI 旨在简化任务配置及产品服务器管理。OpenLMI 为 Linux 提供常用管理接口。OpenLMI 可让用户执行以下操作:

配置、管理和监控服务器及虚拟机运行情况;

配置、管理和监控本地或者远程操作系统;

配置、管理及监控本地或者远程的存储和网络;

使用 C/C++、Python、Java 或者命令行界面调用系统管理。

图 1. OpenLMI 的结构示意图
OpenLMI 的结构示意图
OpenLMI 的结构示意图

通过图 1 可以了解到 OPenLMI 主要包括如下几个部分:

一套代理程序,又称为 LMI Providers 或 CIM Providers,可安装在需要监控的服务器上。用来查询,修改和监控系统运行情况。

一组标淮化的远程 API,又称 OpenLMI object broker,负责管理所有的代理程序,并为它们提供存取接口。

一个标淮通讯基础设施(使用 https 连接的 XML 技术),OpenLMI 被认为是安全性,因为它使用 TLS(HTTPS)进行加密通信。

LMIshell,这是一个客户端客户端程序,它的作用是通过 OpenLMI object broker 來调用 LMI Providers。这个客户端通过使用 WBEM + HTTPS 协议访问 CIMOM。其中 LMIshell 客户端系统包括:

一组命令行工具和 lmi 交互命令

脚本工具(基于 Python 的 lmishell)

其他语言(包括 C/C++、Java 等)组成结构如图 2

图 2. LMIshell 组成结构
LMIshell 组成结构
LMIshell 组成结构

主要 Linux 发行版本对于 OpenLMI 的支持情况

Fedora 是 OpenLMI 的主要开发平台。从 Fedora 18 这个版本开始支持,推荐使用 Fedora 21 及其之后的版本,它们可以提供所有功能组件。RHEL 和 CentOS,从版本 7 开始支持,这两个发行版本可以提供大部分功能组件。用户需要通过 epel 软件源安装 openlmi 软件包。SuSE Linux 从版本 12 开始支持,可以提供一部分功能组件。Debian 和 Ubuntu 这两个发行版本目前不支持。

OpenLMI 应用环境和软件配置

笔者使用最简单的网络结构,两台计算机直连,分别代表服务器和客户端。操作系统平台全部是 64 位的 Fedora 21 系统。ip 地址和主机名称:

192.168.0.1 Managed systems 主机名称:server1

192.168.0.2 LMIshell Clint 主机名称:client2

在 2 个节点上添加如下的 hosts 文件

# vi /etc/hosts

192.168.0.1 server1

192.168.0.2 client2

服务器端配置

首先安装软件包

# yum install openlmi

然后启动服务

# systemctl start tog-pegasus

# systemctl enable tog-pegasus

打开防火墙的 5989 端口

# firewall-cmd --permanent --add-port 5989/tcp

设置 Selinux 为 permissive 模式

# setenforce 0

设置 pegasus 用户密码

# passwd pegasus

设置远程访问权限

修改配置文件

#vi /etc/Pegasus/access.conf

把下面一行;

ALL EXCEPT pegasus:wbemNetwork

修改为

ALL EXCEPT root pegasus:wbemNetwork

客户端设置

首先安装 OpenLMI 脚本文件

# 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

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 命令可以得到子命令列表和其他帮助信息见图 3 。图 3 输入“?”或者 help 命令可以得到子命令列表

图 3. 输入 lmi
输入 lmi
输入 lmi

lmi 命令行应用实例

查看主机硬件配置

要查看主机硬件情况,对于本地主机使用交互模式,在 lmi> 提示符下输入 hwinfo 子命令即可。命令输出结果见图 4

图 4. 查看主机硬件情况
查看主机硬件情况
查看主机硬件情况

图 3 显示这个命令收集的硬件信息包括:制造商名称或配置的主机名,服务器的型号名称,CPU 类型,CPU 插槽数量,CPU 核心,CPU 的工作频率、cpu 线程数量、主板型号、内存容量、内存频率、内存插槽信息、磁盘类型等信息。 状态颜色说明:在图 3 中看到 SMART Status 状态显示是 OK,所以显示为绿色,如果显示为黄色表示状态不明确(就是说系统没有检测的具体的状态),如果显示为红色的 error 表示该模块没有正常工作。 另外如果是收集远程主机硬件情况,要输入用户和密码。下面是一个例子,这里使用 -h 参数,然后输入远程主机名称即可,清单 1 是操作过程和输出界面。

清单 1. 查看主机硬件情况
 # lmi -h cyq 
 lmi> hwinfo 
 username: pegasus 
 password: 
 Hostname:         centos70n02.linux.net 
 Chassis Type:     SMBIOS Reseved 
 Manufacturer:     HP 
 Model:            Not Specified (ProLiant DL385p Gen8) 
 Serial Number:    CN7230040Z 
 Asset Tag:        CN7230040Z 
 Virtual Machine:  N/A 
 Motherboard info: N/A 
 CPU:              AMD Opteron(TM) Processor 6238 
 Topology:         2 cpu(s), 24 core(s), 24 thread(s) 
 Max Freq:         3500 MHz 
 Arch:             x86_64 
 Mmory:           16.0 GB 
 Modules:          8.0 GB, DDR3 (DIMM), 1333 MHz, HP, Not Specified 
                  8.0 GB, DDR3 (DIMM), 1333 MHz, HP, Not Specified 
 Slots:            2 used, N/A total

说明:hwinfo 命令其他主要参数包括:

 hwinfo system :获取主机名称。
 hwinfo motherboard:获取主板信息。
 hwinfo cpu:获取 CPU 信息。
 hwinfo memory:获取内存信息。
 hwinfo [all] :获取所有信息。
 hwinfo pci:获取 pci 插槽信息。
 hwinfo disks: 获取磁盘信息。

查看主机软件系统信息

OpenLMI 不仅可以收集硬件信息,还可以收集本地和远程主机操作系统的系统概要。收集内容包括:操作系统版本信息,防火墙配置,网络接口信息、内核版本、时区、SElinux 状态、日志系统、系统语言等。下面是一个例子,清单 2 就是操作过程和输出界面。

清单 2. 查看主机软件系统信息
 lmi>  system 
 Host: localhost.localdomain 
 Hardware:         To Be Filled By O.E.M. 
 Serial Number:    To Be Filled By O.E.M. 
 Asset Tag:        To Be Filled By O.E.M. 
 CPU:              Intel(R) Celeron(R) CPU G1820 @ 2.70GHz, x86_64 arch 
 CPU Topology:     1 cpu(s), 2 core(s), 2 thread(s) 
 Memory:           8.0 GB 
 Disk Space:       65.7 GB total, 57.2 GB free 
 OS:               Fedora release 21 (Twenty One) 
 Kernel:           3.19.3-200.fc21.x86_64 
 Language:         zh_CN.UTF-8 
 Time Zone:        Asia/Shanghai (NTP is on) 
 SELinux:          on (Permissive) 
 Firewall:         off 
 Logging:          on (journald) 
                  
 Networking:       
  NIC 1           
    Name:         wlp0s26u1u1 
    Status:       In Service 
    IPv4 Address: 192.168.1.101 
    IPv6 Address: fe80::16e6:e4ff:fe29:6c16 
 MAC Address:  14:E6:E4:29:6C:16

管理主机的服务运行情况

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 重新加载一个服务配置

系统软件管理

sw 命令可以用来查看、搜索、安装、升级、删除本地和远程的软件包。下面是几个例子:

查看一个软件包详情,使用如下命令:

lmi> sw show pkg php

安装一个软件包,使用如下命令:

lmi> sw install httpd

升级一个软件包,使用如下命令:

lmi> sw update nmap

删除一个软件包,使用如下命令:

lmi> sw remove nmap

存储管理

lmi 的 storage 子命令用来进行存储设置,它的参数比较多,这里笔者介绍几个常用的例子 , 查看存储设备列表,

使用如下命令:lmi> storage list,清单 3 就是操作过程和输出界面。

清单 3.查看存储设备列表
 lmi>storage list 
 Name                    Size       Format 
 /dev/sda                8589934592 MS-DOS partition table 
 /dev/sr0                58120192   iso9660 
 /dev/mapper/fedora-root 7159676928 ext4 
 /dev/mapper/fedora-swap 859832320  swap 
 /dev/sda1               524288000  ext4 
 /dev/sda2               8064598016 physical volume (LVM)

使用树形结构显示存储设备列表,使用如下命令:lmi> storage tree,清单 4 就是操作过程和输出界面。

清单 4..使用树形结构显示存储设备列表
 lmi> storage tree 
 Name                          Size       Format 
 /dev/sda                      8589934592 MS-DOS partition table 
├─ /dev/sda1                 524288000  ext4 
└─ /dev/sda2                 8064598016 physical volume (LVM) 
  └─ fedora                  8061452288 volume group (LVM) 
    ├─ /dev/mapper/fedora-root 7159676928 ext4 
└─ /dev/mapper/fedora-swap 859832320  swap

查看某一个存储设备详情,清单 5 就是操作过程和输出界面。

清单 5.查看某一个存储设备详情
 lmi>  storage show /dev/disk/by-id/ata-VBOX_HARDDISK_VB289545a2-5d00c206-part1 
 /dev/disk/by-id/ata-VBOX_HARDDISK_VB289545a2-5d00c206-part1: 
 Name                      Value 
 Type                      Partition 
 DeviceID                  /dev/disk/by-id/ata-VBOX_HARDDISK_VB289545a2-5d00c206-part1 
 Name                      /dev/sda1 
 ElementName               sda1 
 Total Size                524288000 
 Block Size                512 
 Partition Type            primary 
 Starting sector           2048 
 Ending sector             1026047 
 Sector Size               512 
 Disk                      /dev/sda 
 Filesystem                ext4 
 UUID                      4ebdf6a9-530e-417f-b9ef-a7974e2aa339 
 Persistence               Persistent 
 Total space on filesystem 499355648 
 Free space on filesystem  333806592

网络接口管理

使用 lmi 的 net 子命令,用户可以查看连接到管理服务器的网卡和虚拟接口的运行情况。包括:接口名称、目前的状态、MAC 地址列表。下面介绍几个常用的例子 查看网络设备列表,使用如下命令:

lmi>net device list 
 ElementName OperatingStatus MAC Address 
 enp0s3      In Service      08:00:27:49:FE:04 
 lo          Not Available   00:00:00:00:00:00

设置网络接口新的 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

用户和用户组管理

lmi 的 user 和 group 子命令是用来进行用户和用户组管理的,使用这两个命令可以查看、添加、删除本地或者远程主机上的系统帐户。下面介绍几个常用的例子。

查看已经存在的用户列表,使用如下命令:

lmi> user list

查看已经存在的用户组列表,使用如下命令:

lmi>group list

添加一个用户,使用如下命令:

lmi> user create cyq1

查看已经某用户详情列表,使用如下命令:

lmi> user show cyq1

Name UID Home Login shell Password last change

cyq1 1001 /home/cyq1 /bin/bash 2015/04/15

删除一个用户,使用如下命令:

lmi> user delete cyq1

电源管理

lmi 的 power 子命令是用来进行电源管理的,使用这两个命令可以启动、关闭、休眠计算机。下面介绍几个常用的例子。

查看系统支持的电源管理,使用如下命令:

lmi> power list

PowerState Available

suspend yes

force reboot yes

hibernate yes

force poweroff yes

poweroff yes

reboot yes

重启系统,使用如下命令:

lmi> power reboot

让系统休眠,使用如下命令:

lmi> power hibernate

让系统挂起,使用如下命令:

lmi> power  suspend

关闭系统,使用如下命令:

lmi> power poweroff

直接命令模式说明

除了交互模式外。还可以使用直接命令模式,通常直接模式的执行速度比较快,不过需要用户熟悉各种参数。下面是 2 个例子:

显示远程主机:managedsystem.mydomain.org 所有的服务列表

# lmi -h managedsystem.mydomain.org service list – all

设置远程主机上的 raid 存储

#lmi -h managedsystem.mydomain.org storage raid create 5 /dev/sdb /dev/sdd /dev/sde

总结

对于 Linux 系统管理员来说 OpenLMI 是一个非常好用的工具,能够进行快速大量的部署系统存储、软件包安装删除、网络管理等工作。本文介绍的网络环境是一个最简单的例子,随着服务器集群规模越来越大,自动化配置和部署这些服务器能够使管理变得非常容易并大大减小管理部署成本,因而系统管理员的价值将会得到体现。


相关主题

  • 访问 OpenLMI 官方网址 ,可以查看更多关于 OpenLMI 操作的信息。
  • 访问 OpenLMI 在 Fedora 项目主页,可以查看更多关于 OpenLMI 操作的信息。
  • 访问 RHEL 7 系统管理员指南,其中包括 OpenLMI 的一些使用范例。
  • 访问 developerWorks Linux 专区,了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。

评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=1035476
ArticleTitle=Linux 系统运维工具 OpenLMI
publish-date=08022016