购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.4 保证Linux映像的一致性

在第1章中,我们讨论了SOE环境中通用性的重要性。现在我们实际上正在研究构建过程本身,这又回到了第一次研究如何实际实现通用性的时候。假设Ansible是你选择的工具,请考虑以下任务。我们正在为映像构建过程编写剧本,并决定标准映像要将其时间与本地时间服务器同步。假设出于历史原因,我们选择的基本操作系统是Ubuntu 16.04 LTS。

让我们创建一个简单的角色来确保安装了NTP,并对公司标准ntp.conf进行复制,其中包括内部时间服务器的地址。最后,需要重新启动NTP来获取更改。

本章中的示例纯粹是假设性的,旨在说明用于给定目的的Ansible代码可能是什么样子。我们将在后面的章节中详细介绍所执行的任务(例如部署配置文件),并提供实际的操作示例。

此角色可以如下所示:

此角色简洁、切中要害。它始终确保安装了ntp包,还确保我们对配置文件的同一版本进行复制,确保每个服务器上的配置文件都相同。我们可以通过将此文件从版本控制系统中检出来进一步改进它,这留作练习。

很快,你就可以看到为该步骤编写一个Ansible角色的强大功能,将此角色包含在剧本中可以实现强大的一致性。如果你将此方法扩展到整个企业,那么所有配置的服务都将得到一致的安装和配置。

不过,还有更好的。假设业务部门决定将标准操作系统改为Ubuntu 18.04 LTS,以利用更新的技术并延长受支持的环境的使用期限。ntp包在Ubuntu 18.04上仍然可用,不过默认情况下,现在已经安装了chrony包。要继续使用NTP,只需稍加调整角色,即可确保先删除chrony(如果愿意,也可以禁用它),此后的步骤都相同,例如,请考虑以下角色代码:

我们将通过添加两个更进一步的任务来继续此代码,这两个任务对配置进行复制并重新启动服务,以确保它得到新配置:

或者,我们可以决定接受此更改,并在新的基础映像上使用chrony。只需要创建一个新的chrony.conf来确保它与企业NTP服务器通信,然后完全像以前一样继续:

注意这些角色都是在哪些地方类似的?即使在支持基本操作系统甚至底层服务的改变时,也只需要很少量的修改。

尽管这三个角色在某些地方不同,但它们都执行相同的基本任务:

1.确保安装了正确的NTP服务。

2.从标准配置复制。

3.确保服务在引导时启用并已启动。

因此,可以确定,使用这种方法,我们具有一致性。

即使平台完全改变了,此方法在宏观上仍然可以应用。假设企业现在采用了一个仅在CentOS 7上受支持的应用程序。这意味着SOE可以接受的偏差,但是,即使是新的CentOS 7构建也需要有正确的时间,而且由于NTP是一个标准,所以它仍将使用相同的时间服务器。因此,我们可以编写一个角色来支持CentOS 7:

修改幅度仍然非常小。这是接受Ansible作为企业自动化的首选自动化工具的一个重要原因,我们可以轻松地构建并遵守我们的标准,即使更改所使用的Linux版本甚至整个发行版,操作系统构建还是一致的。 eXc40hSc0sl0bW6BC5mE2pcTJj+k587om24xQCtMrJKWHMKnISLrkfiZDQSRUsD0

点击中间区域
呼出菜单
上一章
目录
下一章
×