您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

自动化配置管理工具-Chef

时间:2020-09-27 10:56:15  来源:  作者:
自动化配置管理工具-Chef

 

什么是Chef?

Chef是一个功能强大的自动化工具,可以部署,修复和更新以及管理服务器和应用程序到任何环境。通过此文详细了解到什么是Chef。

自动化配置管理工具-Chef

 

如今,在公司里,系统管理员或DevOps工程师需要花费更多时间来部署新服务和应用程序,安装和更新软件包以及准备好服务器进行部署。为了解决这个问题,引入了配置管理。通过使用Chef配置管理工具,实现自动化部署,修复和更新整个应用程序基础结构。

那么,Chef到底是什么?

Chef是一个配置管理工具,它通过编写代码而不是使用手动过程来管理基础结构,因此可以非常轻松地对其进行自动化,测试和部署。Chef具有客户端-服务端的体系结构,并且支持windows,Ubuntu,centos和Solaris等多个平台。它还可以与AWS,google Cloud Platform和Open Stack等云平台集成。在深入了解Chef之前,让我们了解一下配置管理。

配置管理

自动化配置管理工具-Chef

 

让我们举个例子,假设你是公司里的系统工程师,并且你希望一天之内在公司里的数百个系统上部署或更新软件或操作系统。可以手动完成此操作,但仍然会导致多个错误,某些软件可能会在更新时崩溃,我们将无法还原到以前的版本。为了解决这类问题,我们使用配置管理。

配置管理是跟踪所有与软件和硬件相关的信息,并且还通过其自动过程来修复,部署和更新整个应用程序。配置管理完成多个系统管理员和开发人员的工作,这些系统管理员和开发人员管理数百个服务器和应用程序。另外,用于配置管理的一些工具还包括Puppet,Ansible,CF Engine和SaltStack等,有兴趣的可以多了解一下。

为什么要Chef?

让我们以一个场景为例,假设你公司要搬迁,并且希望系统管理员在一夜之间在数百个系统上安装,更新和部署软件。当系统工程师手动执行此任务时,可能会导致人为错误,并且某些软件可能无法正常运行。在这个阶段,我们使用Chef,这是一个功能强大的自动化工具,可以将基础结构转换为代码。

自动化配置管理工具-Chef

 

即使我们在云端或混合平台上进行操作,Chef也会在整个网络中实现应用程序配置,部署和管理的自动化。我们可以使用Chef来加快应用程序的部署。Chef是加速软件交付的出色工具,软件开发的速度是指软件能够根据新的要求或条件进行更改的速度。

Chef的优势

加快软件交付速度,当基础架构自动化时,所有软件需求(例如测试,为软件部署创建新环境等)都将变得更快。

通过使基础架构自动化,它可以在错误和错误发生之前对其进行监视从而提高了服务的弹性,它也可以更快地从错误中恢复。

风险管理,Chef在部署的所有阶段都降低了风险并提高了合理性。它减少了开发和生产环境中的冲突。

使用Cloud, Chef可以轻松地适应云环境,并且Chef可以轻松地自动配置,安装和管理服务器和基础架构。

如上所述,Chef可以在不同平台上运行,管理数据中心和云环境,在Chef下,你可以管理所有云和内部平台(包括服务器)。

Chef 简化了IT运维和工作流程,提供了从构建到测试以及交付,监视和故障排除一直到持续部署的管道。

Chef长的特点

  • 只需几个员工,即可轻松管理数百台服务器。
  • 可以使用linux,Windows,FreeBSD和Windows等操作系统轻松地对其进行管理。
  • 它维护了整个基础架构的蓝图。
  • 它与所有主要的云服务提供商集成。
  • 集中管理(即单个Chef Server)可以用作部署策略的中心。

Chef的优点

  • 操作系统和中间件管理的最灵活的解决方案之一。
  • 专为程序员设计
  • Chef为Chef Server提供混合和SaaS解决方案
  • 顺序执行顺序
  • 非常稳定,可靠和成熟,尤其适用于公共和私有环境中的大型部署。

Chef的缺点

  • 需要陡峭的学习曲线
  • 初始设置很复杂。
  • 缺乏推动力,因此对变更不会立即响应。部署过程遵循指定的时间顺序。

 

Chef如何工作?

Chef基本上由三个组件组成,Chef Server,Workstations和Nodes。Chef Server是存储更改的所有操作的中心点。Workstations是创建或更改所有代码的地方。Nodes是由Chef管理的机器。

用户可以通过Chef Workstations与Chef Server进行交互。Knife和Chef命令行工具用于与Chef Server进行交互。Chef Nodes是由Chef管理的实体机或云主机,每个Node都由安装在其上的Chef-Client配置。Chef Server存储所有配置。它确保所有配置都正确的按预期工作。

自动化配置管理工具-Chef

 

Chef组件

Chef主要组件有Workstations,Cookbook,Nodes,Chef-Client和Chef-Server。让我们详细了解整个主要组成部分。

  • Chef Server

Chef Server包含所有配置数据,并存储描述Chef-Client中每个Nodes的Recipe,Cookbook和元数据。配置详细信息通过Chef-Client提供给Nodes。所做的任何更改都必须通过Chef Server进行部署。在推送更改之前,它通过使用授权密钥来验证Nodes和Workstations是否与服务器配对,然后允许Workstations和Nodes之间进行通信。

  • Workstations

Workstations用于与Chef-server进行交互,还用于与Chef-nodes进行交互。它还用于创建Cookbook。Workstations是所有交互发生的地方,在这里创建,测试和部署Cookbook,并在Workstations中测试代码。Workstations还用于根据开发和生产环境定义角色和环境。Workstations的某些组件是

开发套件,其中包含使用Chef所需的所有软件包

Chef命令行工具是创建,测试和部署Cookbook的地方,并通过此策略将其上载到Chef Server。

Knife用于与ChefNodes进行交互。

Test Kitchen用于验证Chef代码

Chef-Repo是一个通过Chef命令行工具在其中创建,测试和维护Cookbook的存储库。

  • Cookbook

 

自动化配置管理工具-Chef

 

Recipe是使用Ruby语言创建的。

Recipe是存储在Cookbook中的配置元素,并根据运行列表执行。

  • Nodes

Nodes由Chef管理,每个Nodes通过在其上安装Chef-Client进行配置。ChefNodes是一台机器,例如物理云,云主机等。

自动化配置管理工具-Chef

 

Chef-Client负责注册和认证Nodes,构建Nodes对象以及配置Nodes。Chef-Client在每个Nodes上本地运行以配置该Nodes。

自动化配置管理工具-Chef

 

Ohai用于在Chef-Client中运行Chef时确定的系统状态。它收集所有系统配置数据。

Chef在DevOps中的角色

Chef用于自动化和管理基础结构。可以使用各种Chef DevOps产品(例如Chef-server,Chef-client)来实现Chef IT自动化。Chef DevOps是用于加速应用程序交付和DevOps协作的工具。Chef通过将基础结构视为代码来帮助解决问题。在Chef Cookbook中描述了服务器设置,而不是手动更改任何内容。

自动化配置管理工具-Chef

 

Chef VS Ansible:Ansible 赢

Ansible是一种更简单的配置管理工作方法。它避免了其他开放源代码配置管理工具(如Chef)使用的master和minions方法。

Ansible使用无代理架构,而不是设置客户端服务器安装。这是Chef的另一种方法,Chef有一个Chef服务器和许多Chef-Client实例。

Ansible使用诸如OpenSSH之类的工具通过SSH网络管理远程连接。这样可以加快部署速度并降低配置文件的复杂性。

对于企业而言,Ansible Tower是一款高级产品,具有基于Web的API和图形库存管理工具。Ansible Tower添加了一个用户友好的中央仪表板,你可以在其中查看服务器的状态,管理访问控制并监视作业的运行。

除了较低的学习曲线外,Ansible还更靠近远程服务器上的裸机操作系统。与需要了解Ruby特定语言(DSL)的CHef不同,Ansible在命令行中使用你熟悉的命令运行,而且是用简单YAML格式编写Playbook。 这意味着你的命令更易于推理,并且性能也很快。

Ansible不需要安装客户端,从而消除了应用程序部署设置中的另一个性能损失。如果你的团队是DevOps工具的新手,那么Ansible可以涵盖大多数用例,而不会使团队陷入繁琐的业务流程之中。

Ansible还可以保护你的DevOps团队免于因配置管理而引起的配置问题。

Ansible允许你通过基于Ansible的Inventory更新策略运行Ansible Playbook来保持服务器状态的一致性。

在将来执行Playbook时,Ansible从“Gathering Facts”开始,以识别何时在Playbook的较早版本中执行了指定的更改。 这样可以确保,例如,如果已经添加了指定的OS用户,或者说,例如Github remote,在以后重新运行剧本时就不会再添加它。

仅当未达到你的Playbook中指定的所需状态时,才执行状态更改。

Ansible凭借其极简设计以及与纯SSH的紧密结合,如果你希望以最少的配置部署,编排和配置管理工作流,那么Ansible值得你拥有。

自动化配置管理工具-Chef

 

Chef VS Ansible:Chef 赢

尽管Ansible具有性能优势和较低的学习曲线,但在某些用例中,Chef不仅合理,而且更可取。

Chef的Ruby DSL非常适合与由使用Ruby进行大部分工作的DevOps工程师和软件开发人员组成的团队合作。

熟悉Ruby和其他命令性语言(例如Python,C ++和JAVA)的DevOps工程师非常适合使用Chef。

尽管Ansible和YAML很容易掌握,但声明式范例已从使用Ruby的日常命令式编码中逐步删除,Chef很好地复制了该范例。

由于Ansible是“ SHH”,Chef是“另一个Ruby DSL”,因此对于精通Ruby的人来说,它几乎没有进入壁垒。

Chef的另一个主要优势是灵活性。可为各种配置文件提供高级自定义功能的嵌入式Ruby(ERB)模板。

如果你是具有跨平台(例如阿里云、腾讯云、Amazon EC2、Google Cloud、Azure)的复杂云部署,并且具有服务器更新的定期计划,Chef是一个不错的选择。

结论

Ansible和Chef都是DevOps中功能强大的配置管理工具。如果你必须在它们之间进行选择,请首先仔细考虑自己的需求,然后将它们与每种解决方案所提供的内容进行权衡。



Tags:Chef   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
什么是Chef?Chef是一个功能强大的自动化工具,可以部署,修复和更新以及管理服务器和应用程序到任何环境。通过此文详细了解到什么是Chef。 如今,在公司里,系统管理员或DevOps工程...【详细内容】
2020-09-27  Tags: Chef  点击:(765)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条