📜  Chef-概述

📅  最后修改于: 2020-11-04 04:44:50             🧑  作者: Mango


 

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语言进行配置,这是一种标准配置语言,具有一定开发经验的任何人都可以轻松地采用。
  • 与云的出色集成-使用刀具实用程序,可以轻松将其与任何云技术集成。对于希望在多云环境中分布其基础结构的组织而言,它是最佳工具。

Chef的缺点

Chef的一些主要缺点如下-

  • Chef的巨大缺点之一是控制食谱的方式。它需要不断的喂奶,这样工作的人才不会弄乱别人的食谱。
  • 仅Chef独奏可用。
  • 在当前情况下,它仅适用于AWS云。
  • 如果这个人不熟悉Ruby,这不是很容易学习。
  • 仍然缺少文档。

Chef的重要组成部分

食谱

可以将其定义为用于管理基础结构的属性的集合。配方中存在的这些属性用于更改现有状态或设置特定的基础结构节点。它们在Chef客户端运行期间加载,并与节点(计算机)的现有属性相对应。然后,它进入配方的节点资源中定义的状态。这是食谱的主要力量。

食谱

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

资源资源

它是用于管理具有各种状态的基础结构的配方的基本组成部分。配方中可以有多个资源,这将有助于配置和管理基础结构。例如-

  • -管理节点上的包
  • 服务-管理节点上的服务
  • 用户-管理节点上的用户
  • -管理组
  • template-使用嵌入式Ruby模板管理文件
  • cookbook_file-将文件从食谱的文件子目录传输到节点上的某个位置
  • 文件-管理节点上文件的内容
  • directory-管理节点上的目录
  • 执行-节点上执行的命令
  • cron-编辑节点上的现有cron文件

属性

它们基本上是设置。可以将它们视为要在食谱中使用的任何内容的键值对。可以应用几种不同类型的属性,这些优先级高于节点操作所依据的最终设置的优先级。

文件

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

范本

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

元数据

它用于管理有关程序包的元数据。这包括详细信息,例如包的名称和详细信息。它还包括诸如依赖项信息之类的信息,这些信息可以告诉您该食谱需要操作哪些食谱。这样,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都提供了一种标准的方式来交付和操作软件。它是用于Linux,Unix和Windows系统的自动化管理引擎,该引擎基于集中式规范执行管理任务。

Puppet的主要功能如下-

  • 以统一的配置实施新系统。
  • 更新系统以及升级安全性和软件包。
  • 合并新功能并添加灵巧功能。
  • 定制配置以确保数据源的可用性。
  • 优化可用资源并最小化成本。
  • 简化角色并使团队能够专注于核心和生产性问题。
  • 全面了解可用的基础架构。

Ansible

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

Ansible的主要功能如下-

  • 简单易学
  • 用Python编写
  • 无代理
  • 基于YAML的剧本
  • Ansible星系

盐堆

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

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