Chef 概述
Chef是由Opscode开发的开源技术。Opscode的联合创始人Adam Jacob被称为Chef的创始人。这项技术使用Ruby编码来开发基础构件,如配方和食谱。Chef用于基础设施自动化,并帮助减少基础设施管理的手动和重复任务。
Chef为不同的构建块定义了自己的约定,这些构建块用于管理和自动化基础设施。
为什么选择Chef
Chef是一种配置管理技术,用于自动化基础设施配置。它是基于Ruby DSL语言开发的。它用于简化配置和管理公司的服务器任务。它能够与任何云技术集成。
在DevOps中,我们使用Chef来在内部和云端部署和管理服务器和应用程序。
Chef的特点
以下是Chef的主要特点:
- Chef使用流行的Ruby语言创建特定领域语言。
-
Chef不针对节点的当前状态进行任何假设。它使用自己的机制来获取机器的当前状态。
-
Chef非常适合部署和管理云服务器、存储和软件。
Chef的优势
Chef提供以下优势:
- 降低入门门槛 - Chef使用本机Ruby语言进行配置,作为标准配置语言,任何具有一定开发经验的人都可以轻松上手。
-
与云端完美集成 - 使用knife工具,可以轻松集成任何云技术。它是一个希望将基础设施分散到多个云环境中的组织的最佳工具。
Chef的缺点
Chef的一些主要缺点包括:
- Chef的一个巨大缺点是如何控制食谱。它需要不断地维护,以防止正在工作的人弄乱其他人的食谱。
-
只有Chef solo可用。
-
当前情况下,它只适用于AWS云。
-
如果不熟悉Ruby,学习起来并不容易。
-
文档仍然不完善。
Chef的关键构建块
Recipe
它可以被定义为一组属性,用于管理基础设施。配方中的这些属性用于更改现有状态或设置特定基础设施节点。它们在Chef客户端运行期间被加载,并与节点(机器)的现有属性进行比较。然后,它达到该配方的节点资源中定义的状态。它是食谱的主要功能模块。
Cookbook
Cookbook是一系列的菜谱。它们是上传到Chef服务器的基本构建块。当运行Chef时,它会确保其中的菜谱以列表中所列的期望状态为基础构建所需的基础设施。
Resource
它是菜谱的基本组件,用于管理基础设施的不同状态。菜谱中可以有多个资源,可以帮助配置和管理基础设施。例如:
- package - 管理节点上的软件包
-
service - 管理节点上的服务
-
user - 管理节点上的用户
-
group - 管理组
-
template - 管理带有嵌入式Ruby模板的文件
-
cookbook_file - 将文件从菜谱的文件子目录传输到节点上的位置
-
file - 管理节点上文件的内容
-
directory - 管理节点上的目录
-
execute - 在节点上执行命令
-
cron - 编辑节点上现有的cron文件
属性
它们是基本设置。可以将其视为在食谱中使用的键值对。有多种不同类型的属性可以应用,对节点的最终设置具有不同的优先级。
文件
它是菜谱中的子目录,包含将放置在使用该菜谱的节点上的任何静态文件。然后,可以声明一个将文件从该目录移动到最终节点的资源。
模板
它们类似于文件,但是它们不是静态的。模板文件以.ebr扩展名结尾,表示它们包含嵌入的Ruby代码。主要用于将属性值替换到文件中,以创建将放置在节点上的最终文件版本。
Metadata.rb
用于管理有关包的元数据。包括包的名称和详细信息。还包括诸如依赖项信息之类的详细信息,告诉这个菜谱需要哪些菜谱来运行。这使得Chef服务器能够正确构建节点的运行列表,并确保正确传输所有的部件。
默认菜谱结构
C:\chef\cookbooks\nginx>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 的主要 特点为 如下−
SaltStack
SaltStack 用于基于数据驱动的配置。它是一种基于动态通信总线的基础设施管理新方法。用于数据驱动的编排、任意基础架构的远程执行和任何应用程序堆栈的配置管理。
Fabric
Fabric 是基于 Python 的编程语言,作为 Python 的 API 开发,需要在 Python 代码中导入,以配置和管理基础设施。