如何了解 VPS 上的 Chef 配置环境

介绍


配置管理工具为从集中管理服务器部署一致的、可预测的代码和配置提供了途径。 Chef是最流行的配置管理工具之一。

Chef 提供了一种快速部署整个环境的方法,而不是单个应用程序。在任何情况下,您可以安装软件,然后修改其配置文件, Chef 可以用来自动化这个过程。

在本指南中,我们将提供一个一般的概述,如何 Chef 组织其文件,以及它使用哪些工具和系统来实现其目标。

如果你想跟上,这里有一个教程 [如何在Ubuntu 14.04上安装 Chef 12(https://andsky.com/tech/tutorials/how-to-set-up-a-chef-12-configuration-management-system-on-ubuntu-14-04-servers)。

主管术语


重要的是要了解构成厨师的不同组成部分。

运营基础设施负责人

我们将首先讨论构成高层部署战略的不同模型。

Chef 系统是由每个机器或资源在部署过程中扮演的角色来定义的:

  • Chef Server:这是存储配置食谱、烹饪书和节点和工作站定义的中心位置。它是组织中的所有其他机器将用于部署配置的中央机器。
  • Chef Nodes: Chef 节点是由 Chef 配置的部署目标。每个节点代表一个单独的,包含的机器环境,可在物理硬件上或虚拟化。 这些操作系统环境每一个都包含一个 Chef 客户端应用程序,可以与 Chef Server 通信。

这些不同组件的配置允许您拥有多个工作站和节点. 节点可以配置,一旦它们在线并连接到服务器。

虽然上面的概述给出了这些单独实体的印象,但一个机器可以完成两个或所有这些角色. 有一个名为 chef-solo的项目,允许您放弃使用服务器并通过配置安装的计算机来操作。

服务器详情


服务器是所有其他厨师机器的中央控制点,无论是作为客户端还是管理员,它基本上是所有配置细节的大型存储库或数据库。

它处理从节点和工作站的连接和权限,并组织数据,以便客户端可以轻松拉动数据,服务器还可以包含 Web 界面来管理或配置一些细节。

节点细节


如上所述,节点可以是物理或虚拟机,其唯一的要求是它可以访问网络并与厨师服务器进行通信,运行厨师软件的用户还需要能够安装软件并进行系统更改。

每个节点使用一个名为chef-client的应用程序与中央服务器进行通信,该应用程序处理从服务器中提取数据并执行将节点带入最终状态所需的配置步骤。

Chef-client 使用一个名为 ohai的工具来获取有关节点的统计数据,这些数据用于设置某些配置细节,并填充文件中包含的变量。

工作站详情


工作站具有创建和修改可用的任何节点的配置细节所需的工具,并可以与厨师服务器进行通信以使这些信息可用。

一个重要的工具来管理厨师在一个工作站被称为 knife. Knife 作为一个网关,你可以配置任何东西,将被存储在服务器上. 它可以管理节点和配置,通常可以被用来访问服务器厨师特定的方式。

在工作站上创建和修改的配置和定义被转移到版本控制,然后被推到服务器上。

Chef Repo 文件结构


厨师在指定的目录结构内处理工作站的配置和依赖信息,重要的是要了解这一层次结构,以便有效地创建配方和推动更改。

正如我们上面提到的,服务器配置文件应该存储在版本控制中,被称为chef-repo

在这个目录中,我们可以找到一个看起来像这样的结构:

*证书/: 包含可以与客户端关联进行认证的SSL证书.

  • ** 切菲格诺** : 列出结构中不应当包含在推入服务器中的文件和目录。
  • config/:包含两个寄存器配置文件之一
  • rake.rb: 定义创建 SSL 证书的一些可变声明和一些一般选项。
  • 烹饪本/: 包含为您的组织配置基础设施的食谱。
  • data_bags/: : 包含用于配置的各种数据包。 数据包是受保护的子目录,包含敏感的配置细节. 它们仅可供那些具有匹配SSL证书并包含JSON格式化文件并带有配置细节的节点访问.
  • 环境/: 包含一个顶级位置,以包含环境部署的细节。 每一个与默认环境不同的环境都必须在此目录中定义 。
  • ** Rakefile **: 此文件定义了厨师可以在其配置中执行的任务.
  • ** roles/ **: 包含定义可指定给节点的角色的文件. (英语)

厨师库文件结构


在 chef-repo 的烹饪书目录中,子目录定义了应用程序的特定烹饪书目. 在每个单独的应用程序配置目录中,有一个结构,定义了该服务应该如何安装以及需要进行哪些更改以使其正常工作。

在应用程序中,您将找到文件和定义,定义如何安装和配置应用程序。

metadata.rbmetadata.json 文件包含有关服务的元数据信息.这包括烹饪书的名称和版本等基本信息,但也是依赖信息存储的地方。

属性目录包含属性定义,可用于覆盖或定义将该服务提供的节点的设置。

definitions目录包含声明资源的文件,这意味着您可以在一个标题下组合功能。

文件目录描述了厨师应该如何在部署此烹饪书的节点中分发文件。

recipes目录包含定义该服务应该如何配置的食谱。食谱通常是配置较大的系统的特定方面的小文件。如果使用烹饪书来安装和配置 Web 服务器,食谱可能会启用模块或设置健全的防火墙默认。

用于提供更复杂的配置管理,可提供包含嵌入式 Ruby 命令的整个配置文件,可在其他文件中定义打印的变量。

结论


虽然本指南可能不会帮助您开始编写自己的厨师配置,但它应该为您提供一个很好的概述,关于个别组件在复杂的部署环境中是什么。

下一頁中,我們將討論如何在Ubuntu 14.04伺服器上設定 Chef 12。

By Justin Ellingwood
Published At
Categories with 技术
comments powered by Disqus