Chef 教程
Chef 是 Opscode 开发的一种配置管理技术,用于管理物理或虚拟机上的基础架构。它是一个使用 Ruby 开发的开源软件,有助于动态管理复杂的基础设施。本教程提供了对使用 Chef 管理基础设施的基础设施和基本概念的基本理解。
Chef 是由 Opscode 开发的开源技术。 Opscode 的联合创始人 Adam Jacob 被称为 Chef 的创始人。该技术使用 Ruby 编码来开发基本构建块,如Cookbook和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 独奏。
在目前的情况下,它只适合 AWS 云。
如果此人不熟悉 Ruby,则学习起来并不容易。
仍然缺乏文档。
Chef 的关键构建块
Recipe
它可以定义为用于管理基础设施的属性集合。配方中存在的这些属性用于更改现有状态或设置特定基础设施节点。它们在 Chef 客户端运行期间加载并与节点(机器)的现有属性进行比较。然后它进入在配方的节点资源中定义的状态。它是Cookbook的主要主力。
Cookbook
Cookbook是Cookbook的集合。它们是上传到 Chef 服务器的基本构建块。当 Chef 运行时,它会确保其中的配方使给定的基础设施达到配方中列出的所需状态。
Resource
它是用于管理具有不同类型状态的基础设施的配方的基本组件。一个配方中可以有多个资源,这将有助于配置和管理基础设施。例如-
package-管理节点上的包
service-管理节点上的服务
user-管理节点上的用户
group-管理群组
template-使用嵌入式 Ruby 模板管理文件
cookbook_file-将文件从说明书中的文件子目录传输到节点上的某个位置
file-管理节点上文件的内容
directory-管理节点上的目录
execute-在节点上执行命令
cron-编辑节点上现有的 cron 文件
Attribute
它们基本上是设置。它们可以被认为是人们想要在Cookbook中使用的任何东西的键值对。可以应用多种不同类型的属性,与节点在其下运行的最终设置相比具有不同的优先级。
File
它是说明书中的一个子目录,其中包含将放置在使用说明书的节点上的任何静态文件。然后可以将配方声明为将文件从该目录移动到最终节点的资源。
Templates
它们类似于文件,但它们不是静态的。模板文件以 .ebr 扩展名结尾,这意味着它们包含嵌入式 Ruby。它们主要用于将属性值替换到文件中,以创建将放置在节点上的最终文件版本。
Metadata.rb
用于管理包的元数据。这包括包的名称和详细信息等详细信息。它还包括诸如依赖信息之类的内容,这些信息告诉此说明书需要操作哪些说明书。这允许 Chef 服务器正确构建节点的运行列表,并确保正确传输所有部分。
默认Cookbook结构
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 的主要
特性如下-
简单易学
用 Python 编写
无代理
基于 YAML 的脚本
Ansible 星系
SaltStack
SaltStack 用于数据驱动的配置。它是一种建立在动态通信总线上的基础设施管理新方法。它用于数据驱动的编排、任何基础架构的远程执行以及任何应用堆栈的配置管理。
Fabric
Fabric 是一种基于 Python 的编程语言,它是作为 Python 的 API 开发的,需要在 Python 代码中导入以配置和管理基础设施。