高效工作之一:标准操作环境(SOE)详解

Linux阅码场 2023-05-10 09:47

SOE的定义和益处

节选自《基于Linux的企业自动化》第一章。

本章详细探讨了Linux中的标准操作环境(Standard Operating Environment以下简称SOE)概念。尽管我们稍后将更详细地讨论,但简而言之,SOE是一个以标准方式来创建和修改所有内容的环境。例如,这意味着所有Linux服务器都以相同的方式,使用相同版本的软件构建。这是一个重要的概念,因为它使管理环境变得更加容易,并减少了那些看管环境的人的工作量。

1. 2 什么是SOE

既然我们已经探讨了SOE对企业如此重要的原因,并且从较高的层次上理解了解决这些问题的方法,那么让我们来详细了解一下SOE。

我们将从定义SOE本身开始。

1.2.1 定义SOE

让我们从一个更实际的角度来快速看一下。我们已经说过,SOE是一个概念,而不是绝对的。在最简单的层次上,它是一个通用的服务器映像或构建标准,部署在整个公司的大量服务器上。在这里,所有必需的任务都是以已知的、文档化的方式完成的。

首先是基本操作系统,正如我们所讨论的,有数百种Linux发行版可供选择。从系统管理的角度来看,有些非常相似(例如,Debian和Ubuntu),而有些则明显不同(例如,Fedora和Manjaro)。举个简单的例子,假设你想在Ubuntu 18.04 LTS上安装Apache Web服务器,你可以输入以下命令:

# sudo apt-get update

# sudo apt-get install apache2

现在,如果你想在CentOS 7上执行相同的操作,你可以输入以下命令:

# sudo yum install httpd

如你所见,这些命令之间没有任何共同之处,甚至连软件包的名称都不同,尽管这两种情况的最终结果都是安装了Apache。在小规模时,这不是一个问题,但是当服务器数量众多并且随着服务器数量的增加,管理这样一个环境的复杂性也会增加。

基本操作系统只是一个开始。我们上面的例子是安装Apache,但是我们也可以安装nginx甚至lighttpd。毕竟,它们也是web服务器。

然后是配置。你希望用户能够通过SSH以root身份登录吗?为了审计或调试的目的,你需要一定级别的日志记录吗?你需要本机身份验证还是集中式身份验证?这份清单是无穷无尽的,如你所见,如果任其发展,可能会成为一个巨大的头痛问题。

这就是SOE的用武之地。它实际上是一个规范,在较宏观的层次上,它可能会规定:

·我们的标准基本操作系统是Ubuntu 18.04 LTS

·我们的标准web服务器将是Apache 2.4。

·SSH登录已启用,但仅适用于具有SSH密钥的用户而不是root用户。

·所有用户登录都必须记录并存档,以便进行审核。

·除少数本机应急break glass账户外,所有账户都必须集中管理(例如,通过LDAP或Active Directory)。

·我们的公司监控解决方案必须集成(例如,必须安装并配置Nagios NCPA代理,以便与Nagios服务器通信)。

·所有系统日志必须发送到公司中央日志管理系统。

·必须对系统应用安全加固。

以上只是一个例子,绝不是完整的;但是,它应该开始让你了解SOE在宏观层次上的样子。随着本章的继续,我们将深入探讨这个问题,并给出更多的例子来建立一个明确的定义。

1.2.2 了解一下要包含哪些内容

在继续之前,我们先稍微更详细地了解一下环境中要包含哪些内容。在上一节中,我们概述了一个非常简单的SOE定义。任何一个好的SOE操作过程的一部分就是拥有一个预定义的操作系统构建,它可以随时被部署。有多种方法可以实现这一点,我们将在本书后面讨论这些,但是,目前,让我们假设已经建立了Ubuntu 18.04 LTS的基本映像,正如前面所建议的那样。

我们在这个标准构建中集成了什么?例如,我们知道我们的登录策略将应用于整个组织,因此,在创建构建时,/etc/ssh/sshd_config必须定制为包含PermitRootLogin no和PasswordAuthentication no。在部署后,再在配置中执行此步骤没有意义,因为这必须在每个部署上执行。很简单,这将是低效的。

对于我们的操作系统映像,还有一些重要的自动化考虑因素。我们知道Ansible本身是通过SSH进行通信的,因此我们知道需要某种凭据(很可能是基于SSH密钥的),以便Ansible在所有部署的服务器上运行。在实际执行任何自动化操作之前,必须手动将Ansible凭据推送到每台计算机是没有什么意义的,因此重要的是要考虑Ansible要使用的身份验证类型(例如,基于密码或SSH密钥的身份验证),并在构建映像此时创建账户和相应的凭据。具体方法取决于你的公司安全标准,但我建议将以下内容作为一种潜在的解决方案:

·在标准映像上创建一个本机账户,以便Ansible进行身份验证。

·授予此账户适当的sudo权限,以确保可以执行所有所需的自动化任务。

·设置此账户的本机口令,或者将从Ansible密钥对中取出的SSH公钥添加到你创建的本机Ansible账户的authorized_keys文件中。

提示

这样做当然会带来一些安全风险。Ansible很可能需要完全访问你服务器上的root,以便它有效地执行你可能要求它执行的所有自动化任务,因此如果凭据被泄露,此Ansible账户可能会成为后门。建议尽可能少的人可以访问你的凭据,并建议你使用诸如AWX或Ansible Tower(我们将在第3章“使用AWX优化基础设施管理”中探讨)之类的工具来管理你的凭据,从而防止人们不适当地获取凭据。你几乎肯定还希望启用对Ansible账户执行的所有活动的审计,并将这些活动记录到某个中央服务器上,以便你可以检查它们是否存在任何可疑活动,并根据需要对它们进行审计。

从用户账户和身份验证开始,还可以考虑Nagios跨平台代理(NCPA)。在我们的示例中,我们知道需要监视所有部署的服务器,因此必须安装NCPA代理,并定义令牌以便它可以与Nagios服务器通信。同样,在部署标准映像之后,再在每台服务器上执行此操作是没有意义的。

但是web服务器呢?制定一个标准是明智的,因为这意味着所有对环境负责的人都能对这项技术感到满意。这使得管理更容易,并且对于自动化特别有利,我们将在下一节中看到。但是,除非你只需要部署运行在Linux上的web服务器,否则这可能不应该作为标准构建的一部分包含在内。

作为一个合理的原则,标准构建应该尽可能简单和轻量级。当额外的服务都是多余的时,在服务器上面运行它们,占用内存和CPU周期是没有意义的。同样,拥有未配置的服务会增加任何潜在攻击者的攻击面,因此出于安全原因,建议将其排除在外。

简言之,标准构建应该只包含将对部署的每个服务器都通用的配置和/或服务。这种方法有时被称为刚刚够用操作系统(Just enough Operating System或简称为JeOS,它是SOE的最佳起点。

在了解了SOE的基本原理之后,我们将在下一节中更详细地了解SOE给你的企业带来的好处。

1.3 探索SOE的好处

到目前为止,你应该对什么是SOE以及它如何为Linux环境带来规模经济和更高的效率有所了解。现在,让我们在此基础上更详细地看一个标准化重要性的例子。

1.3.1 Linux环境中SOE的好处示例

Linux环境中有共同点,也就是说组成SOE的服务器都共享一些属性和特性。例如,它们可能都是基于Ubuntu Linux构建的,或者它们都用Apache作为其web服务器。

我们可以用一个例子来探讨这个概念。假设在负载均衡器后面有10台Linux web服务器,它们都提供简单的静态内容。一切正常,但随后必须进行配置更改。也许这是为了更改每个web服务器的文档根目录,使其指向另一个团队已部署完成的新代码版本。

作为负责人,你知道,由于整个解决方案是负载均衡的,所以所有服务器都应该提供相同的内容。因此,每台服务器都需要进行配置更改。这意味着,如果你手工来做的话,你需要改变10个配置。

当然,你可以手工完成这项工作,但这将是一项乏味的工作,对于熟练的Linux管理员来说,这肯定不是最佳的时间利用方式。它也很容易出错——在10台服务器中的一台上可能会出现打字错误,但不会被发现。或者管理员可能会被其他地方的事情中断,最后只有服务器配置的一部分发生了更改。

更好的解决方案是编写一个脚本来进行更改。这正是自动化的基础,几乎可以肯定的是,在10台服务器上运行一次单个脚本要比在10台服务器上手动进行相同的更改更好地利用时间。它不仅效率更高,而且如果在一个月内需要进行相同的更改,那么只需稍加调整就可以重用脚本。

现在,让我们把计划打乱。如果由于未知的原因,有人在CentOS 7上使用Apache构建了五个web服务器,而在Ubuntu 18.04 LTS上使用nginx构建了另外五个服务器,会怎么样?最终的结果是相同的,毕竟,在一个基本的水平,它们都是网络服务器。但是,如果要在CentOS 7上的Apache中更改文档根目录,则需要执行以下操作:

1./etc/httpd/conf.d中找到相应的配置文件。

2.对DocumentRoot参数进行所需的更改。

3.使用systemctl reload httpd.service重新加载web服务器。

如果必须在ubuntu18.04 LTS上对nginx执行相同的操作,你可以执行以下操作:

1./etc/nginx/sites-available中找到正确的配置文件。

2.对root参数进行所需的更改。

3.确保已使用a2ensite命令启用站点配置文件。否则,Apache将看不到配置文件。

4.使用systemctl reload apache2.service重新加载web服务器。

从这个相当简单(尽管是人为的)的例子中可以看出,缺乏通用性是自动化的敌人。为了应对这种情况,你需要执行以下操作:

1.检测每台服务器上的操作系统。这本身就是不简单的。没有一种方法可以检测Linux操作系统,因此你的脚本必须经过一系列检查,包括以下内容:

1./etc/os版本的内容(如果存在)。

2. lsb_release的输出(如果已安装)。

3. /etc/redhat-release的内容(如果存在)。

4. /etc/debian_version的内容(如果存在)。

5.其他操作系统所需的特定文件,如果上述步骤没有产生有意义结果。

2.在不同的目录中运行不同的修改命令以影响更改,如前所述。

3.运行不同的命令来重新加载web服务器,同样如前所述。

因此,脚本变得复杂,更难编写和维护,当然也更难使其可靠。

尽管这个特殊的例子在现实生活中不太可能出现,但它确实有助于说明一个重要的问题:当环境按照给定的标准构建时,自动化更容易实现。如果决定所有web服务器都基于CentOS 7,都运行Apache 2,并以服务名称命名站点配置,那么我们的自动化就变得简单多了。实际上,你甚至可以运行一个简单的sed命令来完成更改;例如,假设新的web应用程序部署到/var/www/newapp:

# sed -i 's!DocumentRoot.*!DocumentRoot /var/www/newapp!g'

/etc/httpd/conf.d/webservice.conf

# systemctl reload httpd.service

根本不需要环境检测,只需两个简单的shell命令。这可能是一个非常简单的自动化脚本的基础,可以依次在10台服务器上运行,也可以通过SSH远程运行。不管是哪种方式,我们的自动化任务现在都非常简单,并且显示了通用性的重要性。重要的是,SOE在本质上提供了这种通用性。缺乏通用性不仅使自动化变得困难,而且还会妨碍测试,常常会扭曲测试结果,因为如果环境不同,测试结果可能不具有代表性。

在本章的下一节中,我们将在这些知识的基础上演示SOE如何为软件测试过程带来好处。

1.3.2 SOE对软件测试的好处

我在许多环境中看到的一个常见问题是,一个新的软件部署在一个隔离的预生产环境中成功地进行了测试,但在发布到生产环境中时却不能正常工作。通常,这个问题可以归结到生产环境和预生产环境之间的根本区别,因此很明显,要使测试有效,两个环境必须尽可能相似。

事实上,像Docker这样的容器化平台要解决的问题之一就是这个问题,因此可移植性是容器环境的一个核心特性。部署在Docker上的代码构建在容器映像之上,简单地说,就是一个精简的操作系统映像(还记得JeOS吗?)。实际上,这是一个非常小的SOE,只是在容器中运行,而不是在裸机服务器或虚拟机上运行。然而,值得考虑的是,如果通过环境标准化实现的可移植性是容器技术的一个关键特性,那么我们不应该尝试在不考虑基础设施的情况下全面实现这一点。

毕竟,如果生产服务器的配置与预生产服务器不同,那么测试的有效性如何?如果预生产环境是在CentOS 7.6上构建的,但是生产环境是落后于它CentOS 7.4,那么你真的能确保在一个环境中成功的测试结果将保证在另一个环境中成功吗?从理论上讲,它应该可以工作,但由于环境之间的软件和库版本存在根本性差异,这永远无法得到保证。这甚至是在我们考虑配置文件和安装的软件之间可能存在的差异之前需要考虑的

因此,如果所有的环境都按照相同的标准构建,那么从理论上讲,它们都应该是相同的,那么SOE在这方面可以提供帮助。你们中那些目光敏锐的人会注意到“应该”(should这个词在前一句中的用法,这是有充分理由的。SOE在定义解决测试失败的方案方面向前迈出了一大步,但它们并不是全部。

一个环境只有在没有人修改它的情况下才是标准的,如果所有用户都有管理员级别的权限,那么很容易有人(善意的或其他的)登录并进行更改,这意味着环境偏离了标准。

这个问题的答案是,自动化,SOE不仅仅是促进和实现自动化,它们还依赖于自动化来保持最初要求的标准化水平。两者直接相互支持,理想情况下应该是不可分割的伙伴:SOE是环境本身的定义,自动化提供标准的实现、执行和审计。实际上,这正是本书的前提,即环境应该尽可能地标准化,并且应该让尽可能多的更改自动化。

本书的重点将放在这个等式的自动化方面,因为除了坚持本章概述的原则之外,所采用的标准对于每个环境都是独特的,本书的目标不是在微观级别上确定它们。以我们前面的示例为例,Apache和nginx都有它们的优点,适合一个用例的可能不适合另一个用例。

操作系统也是如此,一些机构可能依赖Red Hat Enterprise Linux提供的支持软件包,而其他机构则不需要支持软件包,但需要Fedora提供的前沿技术。定义一个标准没有对错之分,只要它满足它所支持的服务的需求。到目前为止,我们非常关注通用性和标准;然而,在需要替代解决方案的情况下,总会有一些边缘案例。在下一节中,我们将确定如何知道何时应该偏离标准。

...

要从Red Hat的角度了解更多关于SOE的信息,请参阅本文:https://servicesblog.redhat.com/2016/11/03/standard-operating-environment-part-i-concepts-and-structures/


Linux阅码场 专业的Linux技术社区和Linux操作系统学习平台,内容涉及Linux内核,Linux内存管理,Linux进程管理,Linux文件系统和IO,Linux性能调优,Linux设备驱动以及Linux虚拟化和云计算等各方各面.
评论 (0)
  • 六西格玛首先是作为一个量度质量水平的指标,它代表了近乎完美的质量的水平。如果你每天都吃一个苹果,有一间水果店的老板跟你说,他们所卖的苹果,质量达到六西格玛水平,换言之,他们每卖一百万个苹果,只会有3.4个是坏的。你算了一下,发现你如果要从这个店里买到一个坏苹果,需要805年。你会还会选择其他店吗?首先发明六西格玛这个词的人——比尔·史密斯(Bill Smith)他是摩托罗拉(Motorloa)的工程师,在追求这个近乎完美的质量水平的时候,发明了一套方法模型,开始时是MAIC,后来慢慢演变成DMA
    优思学院 2025-03-27 11:47 151浏览
  • 案例概况在丹麦哥本哈根,西门子工程师们成功完成了一项高安全设施的数据集成项目。他们利用宏集Cogent DataHub软件,将高安全设施内的设备和仪器与远程监控位置连接起来,让技术人员能够在不违反安全规定、不引入未经授权人员的情况下,远程操作所需设备。突破OPC 服务器的远程连接难题该项目最初看似是一个常规的 OPC 应用:目标是将高安全性设施中的冷水机(chiller)设备及其 OPC DA 服务器,与远程监控站的两套 SCADA 系统(作为 OPC DA 客户端)连接起来。然而,在实际实施过
    宏集科技 2025-03-27 13:20 109浏览
  • 汽车导航系统市场及应用环境参照调研机构GII的研究报告中的市场预测,全球汽车导航系统市场预计将于 2030年达到472亿美元的市场规模,而2024年至2030年的年复合成长率则为可观的6.7%。汽车导航系统无疑已成为智能汽车不可或缺的重要功能之一。随着人们在日常生活中对汽车导航功能的日渐依赖,一旦出现定位不准确或地图错误等问题,就可能导致车主开错路线,平白浪费更多行车时间,不仅造成行车不便,甚或可能引发交通事故的发生。有鉴于此,如果想要提供消费者完善的使用者体验,在车辆开发阶段便针对汽车导航功能
    百佳泰测试实验室 2025-03-27 14:51 188浏览
  • 在智能语音产品的开发过程中,麦克风阵列的选型直接决定了用户体验的优劣。广州唯创电子提供的单麦克风与双麦克风解决方案,为不同场景下的语音交互需求提供了灵活选择。本文将深入解析两种方案的性能差异、适用场景及工程实现要点,为开发者提供系统化的设计决策依据。一、基础参数对比分析维度单麦克风方案双麦克风方案BOM成本¥1.2-2.5元¥4.8-6.5元信噪比(1m)58-62dB65-68dB拾音角度全向360°波束成形±30°功耗8mW@3.3V15mW@3.3V典型响应延迟120ms80ms二、技术原
    广州唯创电子 2025-03-27 09:23 161浏览
  • 在嵌入式语音系统的开发过程中,广州唯创电子推出的WT588系列语音芯片凭借其优异的音质表现和灵活的编程特性,广泛应用于智能终端、工业控制、消费电子等领域。作为该系列芯片的关键状态指示信号,BUSY引脚的设计处理直接影响着系统交互的可靠性和功能拓展性。本文将从电路原理、应用场景、设计策略三个维度,深入解析BUSY引脚的技术特性及其工程实践要点。一、BUSY引脚工作原理与信号特性1.1 电气参数电平标准:输出3.3V TTL电平(与VDD同源)驱动能力:典型值±8mA(可直接驱动LED)响应延迟:语
    广州唯创电子 2025-03-26 09:26 206浏览
  • 文/陈昊编辑/cc孙聪颖‍2025 年,作为中国实施制造强国战略第一个十年计划的关键里程碑,被赋予了极为重大的意义。两会政府工作报告清晰且坚定地指出,要全力加速新质生产力的发展进程,推动传统产业全方位向高端化、智能化与绿色化转型。基于此,有代表敏锐提议,中国制造应从前沿技术的应用切入,逐步拓展至产业生态的构建,最终延伸到提升用户体验的维度,打出独树一帜、具有鲜明特色的发展牌。正是在这样至关重要的时代背景之下,于 AWE 2025(中国家电及消费电子博览会)这一备受瞩目的舞台上,高端厨房的中国方案
    华尔街科技眼 2025-03-25 16:10 85浏览
  • 长期以来,智能家居对于大众家庭而言就像空中楼阁一般,华而不实,更有甚者,还将智能家居认定为资本家的营销游戏。商家们举着“智慧家居、智慧办公”的口号,将原本价格亲民、能用几十年的家电器具包装成为了高档商品,而消费者们最终得到的却是家居设备之间缺乏互操作性、不同品牌生态之间互不兼容的碎片化体验。这种早期的生态割裂现象致使消费者们对智能家居兴趣缺失,也造就了“智能家居无用论”的刻板印象。然而,自Matter协议发布之后,“命运的齿轮”开始转动,智能家居中的生态割裂现象与品牌生态之间的隔阂正被基于IP架
    华普微HOPERF 2025-03-27 09:46 109浏览
  • 家电,在人们的日常生活中扮演着不可或缺的角色,也是提升人们幸福感的重要组成部分,那你了解家电的发展史吗?#70年代结婚流行“四大件”:手表、自行车、缝纫机,收音机,合成“三转一响”。#80年代随着改革开放的深化,中国经济开始飞速发展,黑白电视机、冰箱、洗衣机这“新三件”,成为了人们对生活的新诉求。#90年代彩电、冰箱、全自动洗衣机开始大量进入普通家庭,快速全面普及,90年代末,家电产品实现了从奢侈品到必需品的转变。#00年代至今00年代,随着人们追求高品质生活的愿望,常用的电视机、洗衣机等已经远
    启英AI平台 2025-03-25 14:12 90浏览
  • 在当今竞争激烈的工业环境中,效率和响应速度已成为企业制胜的关键。为了满足这一需求,我们隆重推出宏集Panorama COOX,这是Panorama Suite中首款集成的制造执行系统(MES)产品。这一创新产品将Panorama平台升级为全面的工业4.0解决方案,融合了工业SCADA和MES技术的双重优势,帮助企业实现生产效率和运营能力的全面提升。深度融合SCADA与MES,开启工业新纪元宏集Panorama COOX的诞生,源于我们对创新和卓越运营的不懈追求。通过战略性收购法国知名MES领域专
    宏集科技 2025-03-27 13:22 189浏览
  • WT588F02B是广州唯创电子推出的一款高性能语音芯片,广泛应用于智能家电、安防设备、玩具等领域。然而,在实际开发中,用户可能会遇到烧录失败的问题,导致项目进度受阻。本文将从下载连线、文件容量、线路长度三大核心因素出发,深入分析烧录失败的原因并提供系统化的解决方案。一、检查下载器与芯片的物理连接问题表现烧录时提示"连接超时"或"设备未响应",或烧录进度条卡顿后报错。原因解析接口错位:WT588F02B采用SPI/UART双模通信,若下载器引脚定义与芯片引脚未严格对应(如TXD/RXD交叉错误)
    广州唯创电子 2025-03-26 09:05 146浏览
  • 在电子设计中,电磁兼容性(EMC)是确保设备既能抵御外部电磁干扰(EMI),又不会对自身或周围环境产生过量电磁辐射的关键。电容器、电感和磁珠作为三大核心元件,通过不同的机制协同作用,有效抑制电磁干扰。以下是其原理和应用场景的详细解析:1. 电容器:高频噪声的“吸尘器”作用原理:电容器通过“通高频、阻低频”的特性,为高频噪声提供低阻抗路径到地,形成滤波效果。例如,在电源和地之间并联电容,可吸收电源中的高频纹波和瞬态干扰。关键应用场景:电源去耦:在IC电源引脚附近放置0.1μF陶瓷电容,滤除数字电路
    时源芯微 2025-03-27 11:19 157浏览
  • ​2025年3月27日​,贞光科技授权代理品牌紫光同芯正式发布新一代汽车安全芯片T97-415E。作为T97-315E的迭代升级产品,该芯片以大容量存储、全球化合规认证、双SPI接口协同为核心突破,直击智能网联汽车"多场景安全并行"与"出口合规"两大行业痛点,助力车企抢占智能驾驶与全球化市场双赛道。行业趋势锚定:三大升级回应智能化浪潮1. 大容量存储:破解车联网多任务瓶颈随着​车机功能泛在化​(数字钥匙、OTA、T-BOX等安全服务集成),传统安全芯片面临存储资源挤占难题。T97-415E创新性
    贞光科技 2025-03-27 13:50 148浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦