手把手教你搭建SUSE Manager (内有安装视频)
本文是手把手教学系列之一:手把手教你搭建SUSE Manager,由SUSE技术专家萨柱发提供。
SUSE Manager 可帮助您的企业 DevOps 和 IT Operations 降低 IT 资产复杂性并重新控制 IT 资产:通过一种工具跨各种硬件体系结构、虚拟化、容器、物联网和云平台来管理 Linux 系统。它能够将供应、打补丁、安全CVE扫描和配置自动部署到 Linux 服务器和物联网设备上,实现更快、一致和可重复的服务器部署,从而帮助优化运营并降低成本。通过在开发、测试和生产环境中自动监视、跟踪、审计和报告关于系统、VM 和容器的信息,可以确保企业IT环境遵守内部安全策略和外部法规要求。
下面手把手演示如何搭建SUSE Manager。
1. 概述
本文介绍如何从零开始安装,安装和配置SUSE Manager 4.0, 并使用它为客户端进行补丁升级的过程。
1.1. 部署需求
1.1.1. 订阅需求
必须有正式订阅,或者试用订阅,请通过https://www.suse.com 申请SUSEManager的试用订阅:
根据页面提示完成订阅申请,并登录到https://scc.suse.com验证自己的订阅已经生效:
最终的有效订阅包括:“注册码”和 “组织身份凭证”。
1.1.2. 硬件需求
实验中,需要运行一个SUMA服务器和两个受管系统作为试验对象, 使用浏览器操作,因此实施硬件建议具备16G以上内存。
其中SUMA服务器的要求的配置如下:
- CPU 最少:4Cores or 8vCPUs
- 内存 8G(最少), 16G(基础), 32G+(生产环境)
- 根盘 / 24GiB+
- 交换区 swap 3GiB
- DB盘 /var/lib/pgsql 60GiB+
- 仓库盘 /var/spacewalk 120GiB
使用虚拟机实验时,可配置三个虚拟磁盘:第1个50G(用于安装系统),第2个60G,第三个120G(分别用于存放DB和仓库)。
注意: 低于8G内存很可能无法正常启动相关服务,低于4G内存完全不可行。
1.1.3. 软件介质需求
需要以下的安介质:
- SLE-15-SP1-Installer-DVD-x86_64-QU1-DVD1.iso
第一个文件是启动光盘,官网下载(https://download.suse.com/Download?buildid=vOfDDb9tAg0~)
1.2. 操作环境
请使用最新版本(Y2019)的Firefox/Chromium/Chrome/Edge浏览器。 (注:Windows Internet Explorer 浏览器不能正确渲染页面)
1.3. 安装规划
此处给出一个大概的实验安装规划,生产环境需要提前制定专门的规划文档。
1.3.1. 结构和拓扑图
1.3.2. 主机和服务器列表
主机角色 | 主机名 | 系统版本 | IP地址 |
SUMA服务器 | suma4v | 4.0 | 192.168.100.70/24 |
受管系统1 | linux-sle12sp3 | SLES-12-SP3 | DHCP |
受管系统2 | linux-c7 | CentOS7 | DHCP |
注意: SUMA服务器需要一个全域主机名(FQDN), 建议使用客户的生产网络域名, 本文假定为使用“suse.lab”
2. SUMA服务器安装
安装前,请按照实验环境的要求, 确认硬件需求已经满足。
主要步骤如下:
- 使用iso启动介质启动安装程序
- 选择SUSE Manager产品
- 指定软件仓库
- 安装SUSE Manager Server组件
2.1. 启动安装程序
按照一般SLES安装方法 ,使用iso或者U盘介质启动安装程序。
2.2. 选择SUMA产品进行安装
选择安装 “SUSE Manager Server 4.0”
2.3. 系统注册及选择软件仓库
当安装界面上出现系统注册时,不同的选择方式对应不同的仓库使用方法。 图中三个选项分别对应了:
- 注册到SCC (常规生产环境 官方建议方式)
- 注册到SMT (离线生产环境,使用分离式SMT,专家使用)
- 跳过注册 (后续手工创建仓库,操作麻烦, 测试环境使用)
我们准备安装完再注册,选择第三项“跳过注册”
在 “Add On Product” 环境, 默认不要增加任何内容, 直接下一步。
2.4. 手工选择安装内容
这里请选择最后一项 “Minimal”。
后续可调整的内容:
- 分区布局和文件系统,以及交换区大小
- 网络配置参数的设置
- 防火墙设置,OpenSSH端口开启
- 关闭Kdump功能
如:测试环境可关闭Kdump节省资源…
请根据实际需要进行调整, 并最终完成安装程序。
2.5. 注册操作系统
运行以下命令进行注册,然后更新整个系统:
shell # SUSEConnect -r <你的有效注册码>
shell # zypper –n up
说明:运行完会提供重启,但不必着急,可以完全其它步骤再重启。
运行以下命令安装必要的工具:
shell # zypper –n in lvm2 vim
shell # zypper –n in yast2-storage-ng lvm2
说明:两条命令分别对应命令行配置lvm和yast2配置lvm的必要工具集,可根据自己的技能喜好,选择其中一种方法进行存储配置,安装对应工具。
注:进行下一步之前,请部署需求的内容,把存储和文件系统准备好。
2.6. 安装SUSE Manager Server组件
使用root用户运行以下命令,安装SUSE Manager Server 组件:
shell # zypper in –auto-agree-with-licenses -t pattern suma_server
根据当前系统中实际包安装情况,zypper自动补充缺失的组件,有可能需要安装700多个包:
回答’y’,继续完成安装。 安装完成后,进入配置步骤。
3. SUMA服务器配置
针对SUMA服务器的初始化设置工作,主要包括以下步骤:
- 检验主机名
- 检验工作目录
- 配置SUMA服务
3.1. 检验主机名
在只有一块网卡的情况下,使用root用户运行以下命令,完成网络配置:
shell # hostname –f # 返回FDQN如:suma4v.suse.lab
shell # hostname –s # 返回短主机名: suma4v
shell # hostname –I # 返回本机IP地址 192.168.100.70
shell # yast2 lan # 可修改网络参数
3.2. 检验工作目录
请根据前面硬件要求,确认工作目录是否符合要求:
目录名 | 属主owner | 权限mode | 容量大小 |
/var/lib/pgsql | postgres:postgres | rwxr-x—(750) | 50GiB以上 |
/var/spacewalk | wwwrun:www | rwxrwxr-x(775) | 根据产品数量而定 |
如果有必要,对磁盘进行进一步分区和挂载操作,请参考SLES文档。
示例的效果如下图:
3.3. 配置SUMA服务
在开始配置工作前,请再次确认以上两项配置(“网络”和“工作目录”)内容的正确。
使用root用户,运行以下命令开始配置SUMA服务:
shell # yast2 susemanager_setup
… 进入配置界面
新的安装,选择 “from scratch”, 如下图:
确认管理员邮件地址后,接下来出现CA配置界面,如下图:
填写如下参数:
- Organization: MyCorp
- Organization Unit: MyDepmnt
- City: GuangZhou
- State GuangDong
- Country: CN
- SSL Password; suma4.SSLpwd
接下来出现数据库配置界面,如下图:
填写如下参数:
- Database User: susemanager
- Database Password: suma4.DBpwd
最后,提示配置参数已经准备好,询问是否马上执行:
按回车马上执行。
- 执行完成的输出画面如下图:
其中绿色框中的错误输出是正常的信息,可以忽略。
最后显示SUMA系统的访问信息:
通过浏览器访问 https://suma-svr.suse.lab 创建管理员帐号。
3.4. 首次登录SUMA
完成SUMA服务配置后, 其中没有任何组织数据,因此第一次登录需要设置一些初始的管理员信息。 使用指定的浏览器,访问 “https://192.168.98.40/”,创建管理者信息: (https://192.168.98.40/rhn/newlogin/CreateFirstUser.do)
- Organization Name: POCORG
- Desired Login: pocadm
- Desired Password: Su2020#Ma,888
- Confirm Password:
- Email:pocadm@myorg.org
- First Name: Mr. admin
- Last Name: Administrator
注意:当前配置为自签名SSL证书,浏览器会弹出安全警告,忽略它并继续访问
提交管理者信息后, 进入SUMA服务器的管理控制台。
3.5. 配置SUMA完成
最后记录以下表格,内容作为项目交工文档的一部分:
参数名称 | 参数值 | 参数用途 |
SUMA自签名CA密码 | suma4.SSLpwd | 更新证书时使用 |
SUMA数据库用户 | susemanager | pgsql数据维护 |
SUMA数据库密码 | suma4.DBpwd | pgsql数据维护 |
SUMA初始组织名 | POCORG | SUMA操作和维护 |
SUMA初始管理用户 | pocadm | SUMA操作和维护 |
SUMA初始管理密码 | Su2020#Ma,888 | SUMA操作和维护 |
4. 使用SUMA服务器
SUMA服务器的日常使用主要以打补丁为主,打补丁并非一次性工作,而是持续的例行工作,在过程中还会涉及到多次的补丁仓库更新等不定时事件/工作的进行。日常使用SUMA服务器主要有以下方面的内容:
- 软件仓库管理(主要指SUSE提供的产品,包括创建产品仓库和更新仓库内容)
- 客户端管理(主要包括新增各种产品版本的客户端)
- 客户端补丁管理(按特定漏洞,按特定时间,按特定批次等)
4.1. 软件仓库管理
软件仓库在SUMA界面通常显示为Software Channel, 配置工作一般都以使用SUSE产品作为起点。
4.1.1. 产品通道创建
登录SUMA的WEB界面后,从 [SUSE Manager]>Admin>Setup Wizard 开始:
有两个方式获得SUSE产品软件:
- SUMA服务器在线访问SCC同步本地软件仓库
- SUMA服务器使用离线介质(由SMT/RMT导出)导入本地软件仓库
正规生产环境,SUSE的建议是使用方式1, 可以达到最方便的管理效果;
对于Poc环境,或者特殊的离线环境,则可通过方式2。(注意SUMA应具备SMT/RMT所使用的SCC组织凭据)
注意:两种方式都需要配置SCC组织凭据,没有凭据的情况下,假如出现问题难以定位问题根因,而且得不到官方的支持。
4.1.2. 产品通道刷新和导入
本文使用方式1(通过有效组织凭据)获得SUSE产品, 产品通道的刷新和导入会自动进行。
请在下面的页面上, 配置组织凭据:
然后切换到”SUSE Products” 标签页,并点击刷新:
刷新后, 在SUSE产品的页面上,将显示“可导入”的产品,如下图:
在红圈指示的位置是可以选择和操作, 用于把软件仓库加入到SUMA仓库,勾选并点击“Add procducts”后,开始从SUSE的更新网站传送rpm软件包。
在导入过程中, WEB页面会有进度条显示。
同步完成如下图所示:
4.2. 客户端管理
SUMA支持多种客户端管理方式(无代理/常规代理/Salt代理),下面以常规代理为例,进行客户管理。
主要是以下步骤:
- 针对产品版本,创建“客户端仓库”
- 创建Activation Key
- 创建客户端注册脚本
- 客户端上的注册操作
4.2.1. 创建客户端仓库
在软件仓库中完成了某个产品(如sles12-sp3)通道的导入后, SUMA即具备了创建此产品的客户端仓库的选项。
有时这个仓库也会称为启动仓库,提供客户端接受SUMA管理的最小软件组件集合。
使用以下命令创建指定产品的客户端仓库:
shell # mgr-create-bootstrap-repo –create SLE-12-SP3-x86_64
…
注意:必须完成软件通道的导入后方可创建,否则可能会因rpm文件不全而失败!
执行过程如下图:
4.2.2. 创建Activation_Key
Activation_Key是一系列配置的集合,用来定义客户端在注册时订阅什么软件仓库,需要额外定义什么软件包等. 因此通常使用不同的Activation_key来区分不同的软件仓库,还可包括客户端数量, 这一点对于合规性来说,也是很有用的。
比如, 用户有15个SLES订阅和5个LivePatching订阅,分别用在WEB和DB两类服务器上,则可以生成:
- Activation_Key=“1-sles12-sp3-web”, 包含基本产品通道,限制数量=10
- Activation_Key=“1-sles12-sp3-db”, 包含LivePatching通道,限制数量=5
如下图:
这样web服务器可以使用普通订阅的软件通道, 而db服务器具备LivePatching订阅,实现ZeroDown。
4.2.3. 创建注册脚本
完整的操作分成两步:
- 创建注册脚本的模板,此模板不能直接运行。
- 创建注册脚本的实例,根据Activation_Key绑定具体的订阅。
4.2.4. 创建注册脚本模板
SUMA系统可以生成脚本模板,其中定义了客户端的类型(传统还是salt)和行为(用不用ssl,用不用proxy)等。 系统自动生成的脚本不能直接运行。
登录SUMA的WEB界面后,进入 [SUSE Manager]>Admin>Manager Configuration>Bootstrap Script 页面,可以调整相关参数后,点击下方的“Update”按钮, 将会创建脚本: “/srv/www/htdocs/pub/bootstrap/bootstrap.sh”
圆圈内的位置用于指定是否使用salt进行客户端管理,可根据实际情况自由决定,详细信息请参考SUSE Manager的文档(官网开放下载)。
命令行更灵活,使用mgr-bootstrap命令创建注册脚本模板,脚本位置与上面相同。
以下命令,分别创建四个模板: 传统客户端,传统客户端nossl,Salt客户端,Salt客户端nossl。
shell # mgr-bootstrap –script bootstrap-tpl-trad.sh –traditional
shell # mgr-bootstrap –script bootstrap-tpl-trad-nossl.sh –traditional –no-ssl
shell # mgr-bootstrap –script bootstrap-tpl-salt.sh
shell # mgr-bootstrap –script bootstrap-tpl-salt-nossl.sh –no-ssl
命令会同时创建(或覆盖)client-config-overrides.txt文件,内容对应相关的命令行参数。
重要说明: 客户端可以使用其它主机名访问SUMA服务器,但不能使用IP地址 (需较多调整并降低安全机制)
如果需要内外网使用不同的主机名访问SUMA服务器, 请参考其它进阶文档。
4.2.4.1. 创建具体的脚本实例
使用特定Activation_Key结合特定模板,创建可执行的注册脚本。
以 bootstrap-tpl-trad.sh 为例,创建web类型的SLES12-SP3客户端(无LivePatching):
shell # cp bootstrap-tpl-trad.sh bootstrap-trad-sles12sp3-web.sh
shell # vi bootstrap-trad-sles12sp3-web.sh
#需要把脚本中第一个 “exit 1″注释掉, 这是个保护标记,防止意外的脚本运行
#需要把Activation_Key填入到脚本中ACTIVATION_KEYS变量中 (例如:”1-sles12-sp3-web”)
如下图:
4.2.4.2. 没有DNS环境的处理
前面提及,客户端访问SUMA服务器必须通过主机名,客户环境没有配置DNS时,需要增加hosts文件方面的处理。 (如果有DNS服务器,并可以正确解析SUMA服务器主机名,请忽略)
在 bootstrap脚本的开始位置(紧接上图“HOSTNAME”行),增加以下脚本内容:
OLDIFS=$IFS
IFS=”
SUMAHOSTRECORD=’192.168.98.40’$’\t’$HOSTNAME
grep $SUMAHOSTRECORD /etc/hosts > /dev/null || {
sed -i “/$HOSTNAME/d” /etc/hosts
echo $SUMAHOSTRECORD >> /etc/hosts
}
IFS=$OLDIFS
此脚本将在客户端注册时,在/etc/hosts中创建正确的SUMA服务器条目,请注意IP地址不要写错
4.2.5. 客户端注册操作
在需要管理的客户端上, 用root运行注册脚本即可完成注册。
登录到待纳管客户端(SLES12-SP3为例), 以root用户执行以下命令:
shell # curl http://192.168.98.40/pub/bootstrap/bootstrap-trad-sles12sp3-web.sh | bash
脚本运行最后,显示: -bootstrap complete- 表示已经成功注册到SUMA上。
在SUMA的WEB界面上,进入 [SUSE Manager]>Systems>System List>All 页面,可以看到新注册的客户端系统。
如果是Salt客户端,首先需要在WEB界面的Salt菜单,接受新的Salt-Key方能让新客户端系统进入System列表中。
4.3. 客户端补丁管理
登录到SUMA的WEB界面,进入 [SUSE Manager]>Systems>Overview 页面,可以查看各个注册客户端的补丁情况概况:
如下图:
说明:
- 此处红色感叹号图标表示客户端当前需要应用紧急安全补丁
- 当有大量客户端时,可在此通过客户端名称进行搜索
4.3.1. 单个客户端全量补丁
点击特定客户端,会进入此客户端的“Software->Patches”标签中,可以此标签页中应用补丁。
如下图:
说明:
- ”Select All” 按钮选择所有补丁
- “Apply Patchs” 按钮会提示升级补丁的时间安排:
请1选择时间后,再2提交操作请求。
4.3.2. 单个客户端特定补丁
点击特定客户端,会进入此客户端的“Software->Patches”标签中,可以此标签页中可以”搜索“和”勾选“特定补丁 。
选择补丁后,使用“Apply Patchs”按钮进行操作, 过程同上:
按搜索结果进入特定补丁声明详情页面可以查看包含的各软件包版本信息
4.3.3. 按特定CVE实施补丁
SUSE Manager提供按CVE编号进行审计并提供对应补丁应用功能 进入 [SUSE Manager]>Audit>CVE Audit页面,在搜索框输入CVE编号,如CVE-2019-11477:
如图显示Audit相关结果, 点击图中的SUSE-12-SP3-2019-1532链接,SUSE Manager分析可应用该补丁的系统列表,可对列表中的系统单个或批量应用对应补丁包。
后续操作与前面类似。
4.3.4. 批量客户端应用补丁
登录到SUMA的WEB界面,进入 [SUSE Manager]>Systems>Overview 页面,可以根据需要选中需要批量操作的客户端,勾选的客户端会进入“System Set Manager”集合,后续即可进行批量操作:
进入[SUSE Manager]>Systems>System Set Manager 页面的Systems选项卡,可以看到加入列表的所有客户端:
同一页面上的Patches选项卡可以进行批量补丁,可以看到图中受影响的系统为2,点击”Apply Patches”按钮后,补丁会应用到这两台服务器:
5. 管理CentOS客户端
由于CentOS社区默认只支持当前产品的最高版本,下面以CentOS-7为例进行说明。
主要包括以下步骤:
- SUMA服务器创建CentOS软件通道
- 同步关联的软件仓库(在线和离线 两种方式)
- 准备注册环境
5.1. 创建CentOS软件通道
CentOS是社区产品,SUSE Manager预留了社区产品的接口和工具进行对接。
在SUMA服务器上,执行以下命令,安装社区接口工具:
shell # zypper in spacewalk-utils
创建相关的软件通道, 执行以下命令:
shell # spacewalk-common-channels -a x86_64 centos7
shell # spacewalk-common-channels -a x86_64 centos7-uyuni-client
shell # spacewalk-common-channels -a x86_64 centos7-updates
…或者也可以把以上三条命令合并为一条:
shell # spacewalk-common-channels -a x86_64 centos7 centos7-uyuni-client centos7-updates
在上述命令中,带有两类必要的参数:
- “-a”参数指定了系统架构,与 spacewalk-common-channels.ini 定义有关。
- 最后面指定了“channel”参数,可以指定一个到多个。
上述命令会在交互过程中要求输入凭据,也可以在命令行直接提供:
shell # spacewalk-common-channels -u pocadm -p XXXXX -a x86_64 centos7
通道创建后, 在SUMA的WEB界面 [SUSE Manager]>Software>Manage>Channels 可看到:
根据上面的命令执行结果,这里生成了三个软件通道,分别如下:
- ①基础软件包,对应着CentOS的 “os” 仓库
- ②SUMA托管客户端软件包,由Uyuni提供
- ③升级软件包,对应着CentOS的 “updates” 仓库
刚加入时, 这些“Software Channel”都是空的, 因此在Packages 列显示的是数量是 “0”。
进一步查看软件通道,点击 “CentOS 7(x86_64)”, 并选择“Repositories”标签页:
可以看到,“CentOS 7 (x86_64)” 这个软件通道下,包含了一个仓库(Repository):“External – CentOS 7 (x86_64)”,这个仓库的默认信息如下:
可以看到,这个仓库URL内容对应着CentOS的os仓库。
5.2. 同步CentOS仓库
SUMA软件通道在第一次创建出来后,是没有内容的(Packages=0),需要对仓库(Repository)进行操作以完成填充。
在SUMA的WEB界面 [SUSE Manager]>Software>Manage>Channels 中,选择指定的“Software Channel”后, 选择 “Respositories > Sync”, 然后点击“Sync Now”:
SUMA将创建并执行一个后台任务, 可以在两个地方观察到:
- Web页面: [SUSE Manager]>Admin>Task Engine Status
- 操作系统进程: spacewalk-repo-sync
当同步任务成功完成后,此软件通道(Software Channel) 就绪。
提示:
由于包依赖关系的版本变化原因,建议完成os仓库(“base”)同步后,马上创建bootstrap仓库,这样可以减少bootstrap仓库中的rpm包数量。
5.3. CentOS客户端注册
5.3.1. 准备注册环境
与其它类型的客户端类似,需要三个准备步骤:
- 准备bootstrap仓库
- 准备Activation Key
- 准备注册脚本
5.3.2. 准备bootstrap仓库
运行以下命令创建CentOS的bootstrap仓库:
shell # mgr-create-bootstrap-repo -f –create centos-7-x86_64
shell # mgr-create-bootstrap-repo -f –create centos-7-x86_64 python2-uyuni-common-libs python-dmidecode python-ethtool libgudev1
pyOpenSSL m2crypto python-gudev
一般来说,第一条命令即可,但有时会因为版本依赖关系缺失的问题,在bootstrap过程中缺少依赖包;万一发生这种情况,可以按照第二条命令的方式,把缺少的依赖包加进bootstrap仓库中。
在注册时,偶然会因为目标系统安装得太精简出现此类问题,建议是根据需要添加特定包。
特殊补充:
把CentOS7x介质中的“RPM-GPG-KEY-CentOS-7”文件复制到“/srv/www/htodcs/pub/bootstrap”目录中。
5.3.2.1. 准备Activation_Key
详细的操作请参考poc文档对应章节, 这里要注意的是:
- Key名字:1-centos7-top
- Base Channel: CentOS 7 (x86_64)
- Child Channels: CentOS 7 Update 和 Uyuni Client Toosl。
5.3.2.2. 准备注册脚本
详细的说明请参考poc文档对应章节,这里的重点是需要补充GPG公钥。
先从模板复制一个脚本实例:
shell # cp bootstrap-tpl-trad.sh bootstrap-trad-centos7.sh
shell # vi bootstrap-trad-centos7.sh
修改内容如下:
需要把脚本中第一个 “exit 1″注释掉, 这是个保护标记,防止意外的脚本运行
需要把Activation_Key填入到脚本中ACTIVATION_KEYS变量中 (例如:”1-centos7-top”)
需要ORG_GPG_KEY参数: RPM-GPG-KEY-CentOS-7
注意需要增加一个公钥: RPM-GPG-KEY-CentOS-7
5.3.3. 执行注册
在需要管理的客户端上, 用root运行以下命令:
shell # curl http://192.168.98.40/pub/bootstrap/bootstrap-trad-centos7.sh | bash
shell # systemctl restart timers.target
注册脚本运行结束后,显示: -bootstrap complete-
5.3.4. 补丁管理
与SUSE Linux客户端类似,略。
手把手教你搭建SUSE HA视频:
https://v.qq.com/x/page/v3072ezd8l7.html
参考资料:
https://documentation.suse.com/suma/4.0/
No comments yet