Chef是一家自动化公司。自2008年成立以来,我们一直在将开发人员和系统管理员与我们的同名产品Chef Infra联系在一起。多年来,我们所说的自动化已经扩展了。今天,Chef为基础设施和应用程序提供了一个完整的自动化解决方案,可以将您从开发带到生产。这是完整的厨师解决方案。

Git地址: https://github.com/chef/chef-web-docs

Chef Infra

Chef Infra是一个强大的自动化平台,可以将基础设施转换为代码。无论您是在云环境、本地环境还是混合环境中进行操作,Chef Infra都会自动地在您的网络中配置、部署和管理基础设施,无论其大小如何。

该图显示了如何开发、测试和部署Chef Infra代码。

在将代码部署到其他环境之前,要在workstation上创建和测试代码。您的workstation 是您编写cookbook和管理基础设施的计算机。它通常是你每天使用的机器。它可以是您选择的任何操作系统,无论是Linux、macOS还是Windows。

您需要安装一个文本编辑器(随您喜欢)来编写代码,并使用ChefDK工具来测试您的代码。您将使用的主要测试工具有Cookstyle、ChefSpec、Chef InSpec和Test Kitchen。有了它们,您可以确保在将Chef代码部署到其他人使用的环境(如临时环境或生产环境)之前,它能够执行您希望执行的操作。

当您编写代码时,您使用资源来描述您的基础结构。资源对应于一些基础设施,如文件、模板或包。每个资源都声明系统的一部分应该处于什么状态,而不是如何到达那里。Chef会为您处理这些复杂的问题。Chef提供了许多可供您使用的资源。您还可以利用community cookbooks中提供的资源,或者编写自己的特定于基础设施的资源。

Chef recipe是对相关资源(如配置web服务器、数据库服务器或负载均衡器所需的一切)进行分组的文件。一本chef recipe为你的食谱提供了结构,总的来说,帮助你保持组织。

ChefDK包含用于与Chef交互的其他命令行工具。其中包括用于与Chef Infra服务器交互的knife,以及用于与本地Chef代码存储库交互的Chef (Chef -repo)。

上传代码到 Chef Infra Server

在本地workstation上完成了代码的开发和测试之后,就可以将其上传到Chef Infra服务器。Chef Infra服务器充当配置数据的中心。它存储recipe、应用于基础结构中的系统的策略和描述每个系统的元数据。knife命令可以让您从您的workstation与Chef Infra服务器通信。例如,您使用它来上传您的cookbook。

使用 Chef Infra Client 配置节点

Chef Infra的构造使得大部分计算工作都发生在节点上,而不是Chef Infra server上。节点表示服务器,通常是虚拟机、容器实例或物理服务器。基本上,它是由Chef管理的基础设施中的任何计算资源。所有节点都安装了Chef Infra client。

Chef Infra client定期与Chef Infra server联系,检索最新的cookbook。如果(且仅当)节点的当前状态不符合cookbook所描述的,则Chef Infra client将执行cookbook指令。这个迭代过程确保网络作为一个整体收敛到业务策略所设想的状态。

Chef Habitat

hef Habitat提供了一种部署应用程序的新方法,称为应用程序自动化。应用程序自动化意味着无论应用程序部署在何处,自动化都与应用程序打包在一起并随其一起传播。部署单元成为应用程序及其相关的自动化。运行时环境,无论是容器、裸金属还是PaaS,都不会以任何方式定义应用程序。

Chef Habitat由packaging format和supervisor组成。该格式定义了孤立的、不可变的和可审计的Chef Habitat packaging。Chef Habitat supervisor知道如何拿包并运行它们。它知道包的对等关系、升级策略和安全策略。要了解关于Chef Habitat的所有信息,请访问Chef Habitat网站https://www.habitat.sh。

Chef InSpec

Chef InSpec是一个开源的测试框架,它使用一种可由人类和机器阅读的语言来指定遵从性、安全性和策略需求。当遵从性以代码的形式表示时,您可以将其集成到部署管道中,并自动测试安全性策略的遵从性

Chef InSpec代码可以在多个平台上运行。您可以使用使用SSH或WinRM的远程命令,或者使用Docker API之类的外部机制,在本地执行相同的测试集。

使用Chef InSpec,您可以做的不仅仅是确保物理服务器符合要求。例如,您可以评估数据库中的数据,或者使用虚拟资源的API检查虚拟资源的配置。

为了了解Chef InSpec语言是如何工作的,这里有一些示例。此Chef InSpec规则确保不使用不安全的服务和协议(如telnet)。

describe package('telnetd') do
it { should_not be_installed }
end describe inetd_conf do
its("telnet") { should eq nil }
end

Chef Automate

Chef Automate 为工作流、节点可见性和遵从性提供了一整套企业功能。Chef Automate 集成了开源产品Chef Infra、Chef InSpec和Chef Habitat。Chef Automate 为整个平台提供了全面的24x7支持服务,包括开源组件。

Chef Automate 为您提供了一个完整的连续部署管道、遵从性和安全性的自动化测试,以及在您通过管道移动应用程序和基础设施时以及在生产环境中所发生的所有事情的可见性。

Workflow

Chef Automate 包括一个用于持续交付基础设施和应用程序的管道。这种全堆栈方法(基础设施更改与任何应用程序更改一起交付)允许高速安全部署。下面是Chef自动工作流程

Chef自动化管道具有自动化的质量检验关,可以将开发人员工作站的更改一直转移到生产环境。您的团队批准一个提议的变更,并且,在验收测试之后,发布相应的工件以交付到生产环境中。验收阶段之后,工件转移到联合、排练和交付阶段的管道。

联合阶段支持跨团队协作——它包含质量检验关,确保一个团队或组织所做的更改与其他团队并行所做的更改保持一致。

Chef Automate包括一个图形用户界面,向您展示整个过程。例如,您可以一眼看出哪些组织包括哪些项目。仪表板允许您跟踪每个更改,并在更改通过管道时查看其状态。

Nodes

Chef Automate为您提供了一个数据仓库,它接受来自Chef服务器、Chef Habitat和Chef automation工作流和遵从性的输入。它提供了操作和工作流事件的视图。可以通过UI和可定制的仪表板使用查询语言。

下面是Chef自动化仪表板的一个示例

Compliance

Chef Automate创建可自定义的报告,以识别遵从性问题、安全风险和过时的软件。您可以在Chef InSpec中编写自己的遵从性规则,也可以通过使用内置配置文件快速入门,内置配置文件是各种安全框架(如Internet security Center (CIS)基准测试)的预定义规则集,是Chef自动化的一部分。

High availability

Chef automation包括一个高可用性的Chef Infra服务器,该服务器具有容错能力、即时一致的搜索结果和关于基础设施的准确实时数据。Chef Automate还为Chef Infra服务器提供了一个图形化的管理控制台。

Chef 组件的更多相关文章

  1. omnibus-gitlab 架构学习

    omnibus-gitlab是gitlab 团队fork 自chef 的omnibus 项目,同时做了一些自定义的开发,omnibus-gitlab 简化了 gitlab 的部署以及维护,同时里边集成 ...

  2. 使用Chef管理windows集群

    但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...

  3. 使用Chef管理windows集群 | 运维自动化工具

    但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...

  4. Chef 自动化运维:Chef 的安装

    安装准备 准备三台服务器,分别用作 Chef Server.Chef DK.Chef Client 的安装使用. 在三台服务器中,添加以下 hosts: vim /etc/hosts 192.168. ...

  5. 使用 Chef 自动执行 Azure 虚拟机部署

    Chef 是一个强大的工具,用于提供自动化和所需的状态配置. 使用我们的最新 cloud-api 版本,Chef 提供了与 Azure 的无缝集成,使得你能够通过单个命令设置和部署配置状态. 在本文中 ...

  6. 在Linux上安装Chef工作站

    导读 Chef是一个IT基础设施自动化软件,它可以管理你组织中所有的服务器和网络设备.当我们想与Chef服务器.任何物理节点(服务器.网络设备等)的基础设施进行交互时,我们需要一个Chef工作站.本教 ...

  7. chef简介

    Chef 的简单介绍 Chef 主要分为三个部分 Chef Server.Workstation 以及 Chef Client.用户在 Workstation 上编写 Cookbook.然后,通过 k ...

  8. ExtJS 4.2 评分组件

    上一文章是扩展ExtJS自带的Date组件.在这里将创建一个评分组件. 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2上的一个RatingStar ...

  9. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

随机推荐

  1. Java中的责任链设计模式,太牛了!

    责任链设计模式的思想很简单,就是按照链的顺序执行一个个处理方法,链上的每一个任务都持有它后面那个任务的对象引用,以方便自己这段执行完成之后,调用其后面的处理逻辑. 下面是一个责任链设计模式的简单的实现 ...

  2. # codeblocks 使用技巧+伪单文件编译

    codeblocks 使用技巧+伪单文件编译 shift+F2打开和隐藏左侧工作空间 F2 打开和隐藏下面控制台 CTRL+Shift+c 注释,CTRL+Shift+x取消注释 view->p ...

  3. c++学习笔记之类模板

    C++ 除了支持函数模板,还支持类模板(Class Template).函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中.类模板的目的同样是将数据的 ...

  4. linux内核编程入门 hello world

    注意: Makefile 文件的命名注意M需要大写,否则会报错. 在Makefile文件中make命令前应为tab制表符. 下文转载至:https://blog.csdn.net/bingqing07 ...

  5. 怎样理解 Vue 项目的目录结构?

      Vue 项目的目录结构如下, 我们将会在后面逐个去了解它们的作用: 01. build - 存储项目构建相关的代码, 比如 webpack. 02. config - Vue 的配置目录,包括端口 ...

  6. spring-cloud 学习一 介绍

    微服务Microservice,跟之相对应的是将功能从开发到交付都打包成一个很大的服务单元,一般称之为Monolith,也称「巨石」架构.微服务实现和实施思路更强调功能单一,服务单元小型化和微型化,倡 ...

  7. 浅读vuex源码,了解vuex基本原理

    极简版vuex代码 class KVuex { constructor (options) { this.state = options.state this.mutations = options. ...

  8. ZROI Day1 比赛解题报告

    ZROI Day1 比赛解题报告 版权原因不提供题面相关信息 序 前天晚上搞得比较晚,然后早上做题很没状态,刚看到T1发现没什么思路就有点慌,赶紧看了看T2,T3, 发现T3暴力很好打,T2想了一想可 ...

  9. JavaSE基础知识之继承

    一.概述 继承描述的是事物之间的所属关系,这种关系是: is-a 的关系.例如,图中的兔子属于食草动物,食草动物又属于动物.继承可以使多种事物之间形成一种关系体系,让父类更通用,子类更具体. 1.1  ...

  10. CF516D Drazil and Morning Exercise

    cf luogu 首先每个点到最远点的距离可以预处理出来,这个距离显然是这个点到树直径两端点的最大值.把那个距离记为\(d_i\),然后从小到大枚举\(d_i\),并强制它为最大的\(d_i\),那么 ...