Chef 组件
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 组件的更多相关文章
- omnibus-gitlab 架构学习
omnibus-gitlab是gitlab 团队fork 自chef 的omnibus 项目,同时做了一些自定义的开发,omnibus-gitlab 简化了 gitlab 的部署以及维护,同时里边集成 ...
- 使用Chef管理windows集群
但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...
- 使用Chef管理windows集群 | 运维自动化工具
但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...
- Chef 自动化运维:Chef 的安装
安装准备 准备三台服务器,分别用作 Chef Server.Chef DK.Chef Client 的安装使用. 在三台服务器中,添加以下 hosts: vim /etc/hosts 192.168. ...
- 使用 Chef 自动执行 Azure 虚拟机部署
Chef 是一个强大的工具,用于提供自动化和所需的状态配置. 使用我们的最新 cloud-api 版本,Chef 提供了与 Azure 的无缝集成,使得你能够通过单个命令设置和部署配置状态. 在本文中 ...
- 在Linux上安装Chef工作站
导读 Chef是一个IT基础设施自动化软件,它可以管理你组织中所有的服务器和网络设备.当我们想与Chef服务器.任何物理节点(服务器.网络设备等)的基础设施进行交互时,我们需要一个Chef工作站.本教 ...
- chef简介
Chef 的简单介绍 Chef 主要分为三个部分 Chef Server.Workstation 以及 Chef Client.用户在 Workstation 上编写 Cookbook.然后,通过 k ...
- ExtJS 4.2 评分组件
上一文章是扩展ExtJS自带的Date组件.在这里将创建一个评分组件. 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2上的一个RatingStar ...
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
随机推荐
- 谈谈Java中的集合list、set、map之间的区别
参考文献:https://www.cnblogs.com/IvesHe/p/6108933.html 我这里只总结其区别,具体的说明,请查看参考文献,讲的很详细. A.list接口,实现子类有:arr ...
- POJ - 3687 Labeling Balls (拓扑)
(点击此处查看原题) 题意 此处有n盏灯,编号为1~n,每盏灯的亮度都是唯一的,且在1~n范围之间,现已知m对灯之间的关系:a b ,说明灯a的亮度比灯b小,求出每盏灯的亮度,要求字典序最小(编号小的 ...
- Codeforces 1237C2. Balanced Removals (Harder)
传送门 先来考虑一下二维时的情况,那么对于 $x$ 相同的点,我们按 $y$ 排序,然后相邻的一对对消除 最后 $x$ 坐标相同的点最多剩下一个,那么此时所有点的 $x$ 坐标都不一样 再按 $x$ ...
- Lua 打印 table (支持双向引用的table)
网上搜了一下,挺多打印table的方案,基本思路都是一层一层递归遍历table.(我就是参考这种思路做的^_^) 但大部分都不支持双向引用的打印.我所指的双向引用,就是a引用b, b又直接或间接引用a ...
- singleWsdl和wsdl区别,Axis2和CXF对比
WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互. 其实WebSer ...
- .Net面试题二
谈谈创建线程的方式 1.列举.Net页面之间传值的方式 2..Net中aspx页面从客户端浏览器开始请求到服务器返回响应所经历的过程 CLR主要运行过程 ASP.NET运行管道所有事件 3.如何理解委 ...
- 进阶Java编程(5)基础类库
Java基础类库 1,StringBuffer类 String类是在所有项目开发之中一定会使用到的一个功能类,并且这个类拥有如下的特点: ①每一个字符串的常量都属于一个String类的匿名对象,并且不 ...
- 父窗体的委托,子窗体注册,this.Owner是关键
//声明委托 public delegate void RefreshParentHandler<T>(T obj); //父窗体的委托 public RefreshParentHandl ...
- R语言学习笔记:读取前n行数据
常规读取 一般我们读取文件时都会读取全部的文件然后再进行操作,因为R是基于内存进行计算的. data <- read.table("C:\\Users\\Hider\\Desktop\ ...
- <(* ̄▽ ̄*)/低碳生活管理系统
首次在博客园发布文章,都是个人理解,有很多不足,多多包涵. 下面是对做过的作业低碳生活管理系统的剖析: 一:(建类) 二:(在Program[或自己命名的类]里调用SQL命名空间) 三:(Main方法 ...