Chef - 概述

Chef 是由 Opscode 开发的一项开源技术。Opscode 联合创始人 Adam Jacob 是 Chef 的创始人。该技术使用 Ruby 编码来开发Cookbook(食谱)和烹饪书等基本构建块。Chef 用于基础设施自动化,有助于减少基础设施管理的手动和重复性任务。

Chef 对不同的构建块有自己的约定,这些构建块是管理和自动化基础设施所必需的。

为什么选择 Chef?

Chef 是一种配置管理技术,用于自动化基础设施配置。它是基于 Ruby DSL 语言开发的。它用于简化配置和管理公司服务器的任务。它能够与任何云技术集成。

在 DevOps 中,我们使用 Chef 在内部和云端部署和管理服务器和应用程序。

Chef 的功能

以下是 Chef 最突出的功能 −

  • Chef 使用流行的 Ruby 语言创建领域特定语言。

  • Chef 不会对节点的当前状态做出假设。它使用其机制来获取机器的当前状态。

  • Chef 是部署和管理云服务器、存储和软件的理想选择。

Chef 的优势

Chef 提供以下优势 −

  • 进入门槛较低 −由于 Chef 使用原生 Ruby 语言进行配置,这是一种标准配置语言,任何有一定开发经验的人都可以轻松掌握它。

  • 与云的出色集成 − 使用 Knife 实用程序,它可以轻松与任何云技术集成。对于希望在多云环境中分发其基础设施的组织来说,它是最佳工具。

Chef 的缺点

Chef 的一些主要缺点如下 −

  • Chef 的一大缺点是控制Cookbook(食谱)的方式。它需要不断的呵护,这样工作人员就不会弄乱其他Cookbook(食谱)。

  • 只有 Chef solo 可用。

  • 在当前情况下,它只适合 AWS 云。

  • 如果不熟悉 Ruby,学习起来并不容易。

  • 文档仍然缺乏。

Chef 的关键构建块

Cookbook(食谱)

它可以定义为用于管理基础设施的属性集合。Cookbook(食谱)中存在的这些属性用于更改现有状态或设置特定的基础设施节点。它们在 Chef 客户端运行期间加载并与节点(机器)的现有属性进行比较。然后,它会进入Kitchen(配方)节点资源中定义的状态。它是Cookbook(食谱)的主要工作。

Cookbook(食谱)

Cookbook(食谱)是Cookbook(食谱)的集合。它们是上传到 Chef 服务器的基本构建块。当 Chef 运行时,它会确保其中的Cookbook(食谱)将给定的基础设施置于Kitchen(配方)中列出的所需状态。

资源

它是Kitchen(配方)的基本组件,用于管理具有不同状态的基础设施。一个Kitchen(配方)中可以有多个资源,这将有助于配置和管理基础设施。例如 −

  • package − 管理节点上的包

  • service − 管理节点上的服务

  • user − 管理节点上的用户

  • group − 管理组

  • template − 管理嵌入 Ruby 模板的文件

  • cookbook_file − 将文件从 cookbook 中的 files 子目录传输到节点上的某个位置

  • file − 管理节点上文件的内容

  • directory −管理节点上的目录

  • execute − 在节点上执行命令

  • cron − 编辑节点上现有的 cron 文件

属性

它们基本上是设置。它们可以被认为是任何想要在Cookbook(食谱)中使用的键值对。有几种不同类型的属性可以应用,与节点在其下运行的最终设置具有不同的优先级。

文件

它是Cookbook(食谱)中的一个子目录,其中包含将放置在使用Cookbook(食谱)的节点上的任何静态文件。然后可以将Kitchen(配方)声明为将文件从该目录移动到最终节点的资源。

模板

它们类似于文件,但不是静态的。模板文件以 .ebr 扩展名结尾,这意味着它们包含嵌入式 Ruby。它们主要用于将属性值替换到文件中以创建将放置在节点上的最终文件版本。

Metadata.rb

它用于管理有关包的元数据。这包括包的名称和详细信息。它还包括依赖关系信息等内容,这些信息告诉此Cookbook(食谱)需要操作哪些Cookbook(食谱)。这允许 Chef 服务器正确构建节点的运行列表并确保所有部分都正确传输。

默认Cookbook(食谱)结构

C:\chef\cookbooks
ginx>tree 
Folder PATH listing for volume Local Disk 
Volume serial number is BE8B-6427 
C: ├───attributes 
├───definitions 
├───files 
│   └───default 
├───libraries 
├───providers 
├───recipes 
├───resources 
└───templates 
    └───default 

Chef - 相关技术

以下是 Chef 相关技术的列表。

Puppet

无论软件在何处运行,Puppet 都提供了一种交付和操作软件的标准方式。它是 Linux、Unix 和 Windows 系统的自动化管理引擎,可根据集中规范执行管理任务。

Puppet 的主要功能如下 −

  • 使用统一配置实施新系统。
  • 更新系统并升级安全和软件包。
  • 整合新功能并添加灵巧功能。
  • 自定义配置以确保数据源的可用性。
  • 优化可用资源并最大限度地降低成本。
  • 简化角色并使团队能够专注于核心和生产性问题。
  • 鸟瞰可用的基础设施。

Ansible

Ansible 是一个非常简单的 IT 自动化平台,可让您的应用程序和系统更易于部署。避免编写脚本或自定义代码来部署和更新您的应用程序 — 使用接近纯英语的语言、使用 SSH 实现自动化,无需在远程系统上安装代理。

Ansible 的主要功能如下 −

  • 简单易学
  • 用 Python 编写
  • 无代理
  • 基于 YAML 的 Playbooks
  • Ansible galaxy

SaltStack

SaltStack 用于数据驱动配置。它是一种基于动态通信总线构建的新型基础设施管理方法。它用于数据驱动编排、任何基础设施的远程执行以及任何应用程序堆栈的配置管理。

Fabric

Fabric 是一种基于 Python 的编程语言,它是作为 Python 的 API 开发的,需要在 Python 代码中导入才能配置和管理基础设施。