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 的结构示意图
通过图 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 组成结构
主要 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> 提示符下输入 hwinfo 子命令即可。命令输出结果见图 4
图 4. 查看主机硬件情况
图 3 显示这个命令收集的硬件信息包括:制造商名称或配置的主机名,服务器的型号名称,CPU 类型,CPU 插槽数量,CPU 核心,CPU 的工作频率、cpu 线程数量、主板型号、内存容量、内存频率、内存插槽信息、磁盘类型等信息。 状态颜色说明:在图 3 中看到 SMART Status 状态显示是 OK,所以显示为绿色,如果显示为黄色表示状态不明确(就是说系统没有检测的具体的状态),如果显示为红色的 error 表示该模块没有正常工作。 另外如果是收集远程主机硬件情况,要输入用户和密码。下面是一个例子,这里使用 -h 参数,然后输入远程主机名称即可,清单 1 是操作过程和输出界面。
清单 1. 查看主机硬件情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 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 命令其他主要参数包括:
1 2 3 4 5 6 7 | hwinfo system :获取主机名称。 hwinfo motherboard:获取主板信息。 hwinfo cpu:获取 CPU 信息。 hwinfo memory:获取内存信息。 hwinfo [all] :获取所有信息。 hwinfo pci:获取 pci 插槽信息。 hwinfo disks: 获取磁盘信息。 |
查看主机软件系统信息
OpenLMI 不仅可以收集硬件信息,还可以收集本地和远程主机操作系统的系统概要。收集内容包括:操作系统版本信息,防火墙配置,网络接口信息、内核版本、时区、SElinux 状态、日志系统、系统语言等。下面是一个例子,清单 2 就是操作过程和输出界面。
清单 2. 查看主机软件系统信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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.查看存储设备列表
1 2 3 4 5 6 7 8 | 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..使用树形结构显示存储设备列表
1 2 3 4 5 6 7 8 | 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.查看某一个存储设备详情
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 地址列表。下面介绍几个常用的例子 查看网络设备列表,使用如下命令:
1 2 3 4 | 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 是一个非常好用的工具,能够进行快速大量的部署系统存储、软件包安装删除、网络管理等工作。本文介绍的网络环境是一个最简单的例子,随着服务器集群规模越来越大,自动化配置和部署这些服务器能够使管理变得非常容易并大大减小管理部署成本,因而系统管理员的价值将会得到体现。
发表评论