厨师 - 概述


Chef是Opscode开发的一项开源技术。Opscode 联合创始人 Adam Jacob 被称为 Chef 创始人。该技术使用 Ruby 编码来开发基本构建块,例如食谱和食谱。Chef 用于基础设施自动化,有助于减少基础设施管理的手动和重复任务。

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

为什么是厨师?

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

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

厨师的特点

以下是 Chef 最突出的特点 -

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

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

  • Chef 非常适合部署和管理云服务器、存储和软件。

厨师的优势

Chef 具有以下优势 -

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

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

厨师的缺点

Chef 的一些主要缺点如下 -

  • Chef 的巨大缺点之一是食谱的控制方式。它需要不断的照顾,这样工作的人就不会弄乱其他人的食谱。

  • 仅提供厨师独奏。

  • 从目前的情况来看,它只适合AWS云。

  • 如果一个人不熟悉Ruby,那么学习起来并不容易。

  • 仍然缺乏文档。

Chef 的关键构建模块

食谱

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

食谱

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

资源

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

  • package - 管理节点上的包

  • service - 管理节点上的服务

  • user - 管理节点上的用户

  • - 管理组

  • template - 使用嵌入式 Ruby 模板管理文件

  • Cookbook_file - 将文件从说明书中的文件子目录传输到节点上的某个位置

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

  • 目录- 管理节点上的目录

  • 执行- 在节点上执行命令

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

属性

它们基本上是设置。它们可以被认为是菜谱中想要使用的任何内容的键值对。可以应用多种不同类型的属性,其优先级高于节点操作的最终设置。

文件

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

模板

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

元数据.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 相关技术的列表。

木偶

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

Puppet 的主要特点如下:

  • 实施具有统一配置的新系统。
  • 更新系统并升级安全和软件包。
  • 融入新功能并添加灵巧的功能。
  • 自定义配置以确保数据源的可用性。
  • 优化可用资源并最小化成本。
  • 简化角色,使团队能够专注于核心和富有成效的问题。
  • 鸟瞰可用的基础设施。

安西布尔

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

Ansible 的主要特点如下:

  • 简单易学
  • 用Python编写
  • 无代理
  • 基于 YAML 的 Playbook
  • 安塞布尔星系

盐栈

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

织物

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