Cfengine系统配置与新基础设施搭建指南
立即解锁
发布时间: 2025-08-24 00:29:46 阅读量: 6 订阅数: 17 


Linux与Unix系统管理自动化实践
### Cfengine系统配置与新基础设施搭建指南
#### 1. Cfengine各部分功能介绍
##### 1.1 链接部分(The links Section)
在`hejgo`部分,`_b]cajp`可以创建符号链接。示例如下:
```plaintext
hejgo6
+qon+pil ): **+r]n+pil
+r]n+]`i+iaoo]cao ):! +r]n+hkc+iaoo]cao
+qon+hk_]h+^ej ': +qon+hk_]h+he^+lanh+^ej
```
- 第一个命令:如果符号链接不存在,则从`+qon+pil`创建一个指向`**+r]n+pil`(相对于`+qon+pil`)的符号链接。
- 第二个命令:即使`+r]n+]`i+iaoo]cao`位置已经有文件,也会创建一个从`+r]n+]`i+iaoo]cao`到`+r]n+hkc+iaoo]cao`的符号链接。`!`符号会覆盖`cfengine`内置的创建符号链接的默认安全机制。
- 第三个命令:在`+qon+hk_]h+^ej`中为`+qon+hk_]h+he^+lanh+^ej`中的每个文件创建一个链接。利用此技术,你可以将应用程序安装在单独的目录中,并在`+qon+hk_]h+^ej`目录中创建指向这些二进制文件的链接。
`hejgo`部分提供了很多可能的选项,但在实践中很少使用,更多信息可查看`cfengine`参考手册。
##### 1.2 进程部分(The processes Section)
你可以在`lnk_aooao`部分监控和操作系统进程。示例如下:
```plaintext
lnk_aooao6
_boanr` naop]np +r]n+_bajceja+^ej+_boanr`
_bata_` naop]np +r]n+_bajceja+^ej+_bata_`
```
对于`lnk_aooao`部分,`cfengine`会根据具体系统运行`lo`命令,并带上`)]qt`或`)ab`开关。输出会被缓存,`lnk_aooao`部分中每个命令的第一部分会被解释为针对此输出的正则表达式。如果没有匹配项,则执行`naop]np`命令。
使用`naop]np`功能时,你可以指定以下选项:`ksjan`、`cnkql`、`_dnkkp`、`_d`en`和/或`qi]og`,这些选项会影响`naop]np`命令启动的新进程的执行环境。
你还可以向进程发送信号,示例如下:
```plaintext
lnk_aooao6
dppl` oecj]h=dql
```
此信号在每次执行时都会发送给与正则表达式`dppl`匹配的任何进程,所以你可能不希望直接使用它。也可以指定与正则表达式匹配的进程数量的限制。例如,如果你想确保任何时候运行的`dppl`进程不超过十个,可以使用以下代码:
```plaintext
lnk_aooao6
dppl` ]_pekj=s]nj i]p_dao=8-
```
##### 1.3 shell命令部分(The shellcommands Section)
对于一些自定义和/或复杂的操作,你需要从`cfengine`执行一个或多个外部脚本。可以通过`odahh_kii]j`o`部分来实现,示例如下:
```plaintext
odahh_kii]j`o6
]hh66
+qon+^ej+n`]pa )o jpl- peiakqp=30
na`d]p*Dn,.[M-66
+qon+hk_]h+o^ej+hkc[l]_g]cao ^]_gcnkqj`=pnqa
```
- 在所有系统上,会执行`n`]pa`命令来同步系统时钟。如果该命令在30秒内未完成,`cfengine`会终止它。
- 在运行Red Hat Linux的系统上,凌晨2:00到2:15之间会运行一个脚本来记录当前安装的软件包。此命令会放在后台运行,`cfengine`不会等待它完成。
你可以指定以下选项来控制命令的执行环境:`ksjan`、`cnkql`、`_dnkkp`、`_d`en`和/或`qi]og`。
如果这些脚本想访问当前定义的类列表,可以查看`?B=HH?H=OOAO`环境变量。每个活动类将以冒号分隔列出。默认情况下,当`cfengine`进行预运行(指定`--dry-run`)时,脚本会被忽略。你可以通过指定`lnareas=pnqa`来覆盖此设置。但是,当类`klp[`nu[nqj`被定义时,脚本不应进行任何更改。
##### 1.4 使用cfrun
`_bnqj`命令允许你在网络上的任意数量的系统上执行`_b]cajp`。它需要当前目录中有一个名为`_bnqj*dkopo`的配置文件(或使用`-b`选项指定的文件)。`_bnqj*dkopo`文件可以像下面这样简单:
```plaintext
`ki]ej=iu`ki]ej*_ki
oanran*iu`ki]ej*_ki
_heajp-*iu`ki]ej*_ki
_heajp.*iu`ki]ej*_ki
```
除了域名设置,此文件只是每个主机(包括配置服务器)的列表。你还可以通过在文件顶部添加以下选项将输出记录到一系列文件中(而不是显示在屏幕上):
```plaintext
kqplqp`en=+pil+_bnqj[kqplqp
i]t_deh`=10
```
此代码告诉`_bnqj`最多派生十个进程,并将每个主机的输出放在指定目录中的单独文件中。通常,你可以不带参数运行`_bnqj`。如果你想指定参数,可以使用以下格式:
```plaintext
_bnqj ?BNQJ[KLPEKJO DKOPO -- ?B=CAJP[KLPEKJO -- ?H=OOAO
```
- `?BNQJ[KLPEKJO`实际上是可选的,可以包含`_bnqj`命令的任意数量的选项。
- 接下来,你可以指定一个可选的主机名列表。如果指定了一些主机名,只会联系这些主机;如果未指定主机名,将联系`_bnqj*dkopo`文件中的每个主机。
- 在第一个`--`之后,你必须放置要传递给每个远程系统上运行的`_b]cajp`命令的所有选项。
- 在第二个`--`之后是一个可选的类列表。如果指定了一些类,只有与其中一个类匹配的主机才会执行`_b]cajp`(尽管会联系每个主机,因为每个主机必须决定它是否与其中一个类匹配)。
#### 2. 展望Cfengine 3
Cfengine 3已经处于设计阶段多年。它是`cfengine`套件的完全重写,更重要的是,它涉及一种新的系统管理思维方式。
Cfengine 3围绕一个名为“Promise Theory”的概念构建。这个概念听起来可能难以理解,但实际上非常直观。使用Cfengine 3,你将描述系统的期望状态,而不是系统的更改。期望状态表示为一组承诺,用`cfengine`作者Mark Burgess的话说,这使我们能够关注好的方面而不是坏的方面。
Cfengine.org网站有对Cfengine 3的详细介绍,以及Cfengine 3当前开发快照的源代码:[https://www._bajceja.org/_bajceja3.html](https://www._bajceja.org/_bajceja3.html)。
建议你熟悉`cfengine`的下一个演进步骤,原因如下:
1. 熟悉新的概念和语法将使你在需要时更容易从版本2迁移到版本3。
2. 试验当前的功能集和实现允许你提出改进建议或修复漏洞。提出建议有助于从事Cfengine 3开发的人员,并“回馈”最初给我们带来`cfengine`的人。
#### 3. 新基础设施的引导过程
##### 3.1 新基础设施引导的背景和目标
假设有机会为一家名为“campin.net”的虚构初创公司安装和配置所有系统和应用程序。该公司是优质露营设备的供应商,项目目标是部署一个基于Web的应用程序,该应用程序通过NFS使用数据。Web服务器运行Linux,NFS服务器主机运行Solaris。项目的主要目标之一是快速部署和配置托管该网站的系统,并在需求出现后尽快部署应用程序和操作系统更新。通过自动化手段部署和管理系统可以实现这些目标。
在进行系统镜像或部署之前,你应该设置一个管理基础设施,因为你需要从一开始就准备好管理新主机。这里使用`cfengine`进行系统管理,所以在镜像过程完成后,每个主机上都需要配置并运行`cfengine`。
要配置一个功能齐全的`cfengine`基础设施,必须执行以下步骤:
1. 手动安装一个Linux系统作为中央`cfengine`主机。
2. 在中央`cfengine`主机上创建一个“主”目录结构。这个中央目录结构是`cfengine`配置文件以及UNIX/Linux配置文件和二进制文件的复制源。
3. 用`cfengine`配置文件填充目录结构。你将使用这些配置文件进行初始客户端配置,使客户端与中央`cfengine`主机上的配置文件保持同步,并启动`cfengine`守护进程。
4. 选择`cfengine`密钥分发的信任模型。这里使用的模型类似于SSH主机的密钥信任方式,即第一次看到主机的`cfengine`密钥时信任它们。在初始交换后,将使用该受信任的密钥(且仅使用该密钥)来验证该主机的身份。
##### 3.2 安装中央cfengine主机
决定使用虚拟化技术来搭建初始主系统,具体选择了VMware Server。这样做的好处是,一旦虚拟机系统正常工作,就可以将其部署到从运行Windows或Linux的笔记本电脑到专用VMware ESX平台的任何设备上。不过,由于许可证费用的原因,VMware可能不是企业级虚拟化的首选。
安装了一个32位的Debian GNU/Linux 4.0(“Etch”)系统作为VMware虚拟机。在“软件选择”屏幕上,选择了“标准系统”,未选择其他软件集合,以保持基础系统非常小。然后以`nkkp`用户身份手动安装了`_bajceja`包:
```plaintext
sudo apt-get install _
```
0
0
复制全文
相关推荐








