Vagrant,Docker,Chef和OpenStack(或类似产品)之间的关系?


56

我是一名Web开发人员,但我对一些管理任务也很感兴趣。因此,从纯管理到开发人员的新转变对我来说很方便。

无论如何,我有一些问题需要解决。也许没有,所以我想寻求帮助以进行澄清。

基本上,我想介绍的是四种类型的软件(据我了解)。确切的产品无关紧要,您可以放置​​任何类似的软件作为替代:

  • 流浪汉:据我了解,是要自动创建和管理VM:设置,启动和停止它们。可以使用本地VM或远程(例如在云平台上)完成此操作。
  • Docker:基于一些Linux内核概念的“轻量级VM”,可用于独立运行进程,例如在共享Web托管环境中。
  • Chef:一种用于设置和配置操作系统(例如在VM内部)的工具。
  • OpenStack:一种工具,可让您构建自己的私有云,因此可与AWS之类的东西相媲美。

问题1:我的解释正确吗,还是我对其中某些(或全部)消费有误?

问题2:如何混合所有这些工具?那有意义吗?

根据我的想象和理解,您可以

  • 使用OpenStack构建自己的云,
  • 使用Vagrant来管理在云中运行的VM,
  • 使用Chef设置这些VM
  • 最后使用Docker在VM内部运行进程。

这个对吗?如果是这样,您能给我建议如何开始使用所有这些功能吗(同时很多,而且我还不知道从哪里开始)?


1
没有足够的技能来完全回答这个问题,但是您对Vagrant和Chef的评估似乎是正确的。在我的开发箱中,我使用Vagrant启动虚拟机,然后使用Chef对其进行调配,效果非常好。
GSP

Answers:


54

让我们使用它们各自的网页来查找所有这些项目的内容。不过,我将更改您列出的顺序:

  • Chef:Chef是将基础架构转换为代码的自动化平台。

    这是一个配置管理软件。它们中的大多数使用相同的范例:它们允许您定义计算机的状态,包括配置文件,安装的软件,用户,组和许多其他资源类型。它们中的大多数还提供了将更改推送到特定计算机上的功能,该过程通常称为编排

  • 游民:创建和配置轻量级,可复制和可移植的开发环境。

    它提供了一种可重现的方式,可以使用Oracle的VirtualBox或VMWare技术作为提供程序来生成完全虚拟化的计算机。Vagrant可以与配置管理软件协调,以在操作系统的安装程序完成后继续安装过程。这称为供应

  • Docker:一个开源项目,以轻量级容器包装,运送和运行任何应用程序

    该软件的功能与Vagrant的功能有所重叠,后者提供了定义操作系统安装的方法,但在此目的所使用的技术上却有很大差异。Docker使用Linux容器,它们本身不是虚拟机,而是在隔离的文件系统中运行的隔离进程。Docker还可以使用配置管理系统来配置容器。

  • OpenStack:用于构建私有和公共云的开源软件。

    尽管确实可以将 OpenStack 部署在单台计算机上,但这种部署纯粹是出于概念验证的目的,由于资源限制,可能无法很好地发挥作用。

    OpenStack安装的主要目标是裸机多节点环境,可以在专用硬件中使用不同的组件来获得更好的结果。

    OpenStack的一项关键功能是它对许多虚拟化技术的支持,从完全虚拟化(VirtualBox,VMWare)到半虚拟化(KVM / Qemu)以及容器(LXC)甚至用户模式Linux(UML)

我试图将这些产品作为特定体系结构的组件来展示。从我的角度来看,首先能够根据需要的环境(Chef,Puppet,Ansible等)定义需求,然后以受控方式(Vagrant,Docker)进行部署是有意义的。 ,...),最后根据需要将其缩放到全局大小。

您需要在功能范围内定义多少功能。

还要注意,我几乎简化了所有技术说明。请使用引用的链接获取详细信息。


厨师木偶同一个工具?我的意思是它们等效吗?如果要在Windows 10主机上运行此程序,您将使用哪些工具?
ReynierPM

Puppet是与Chef类似的工具。不确定在Windows上是否更好
。。– Adeerlike

3

我认为来自开发人员的背景实际上会使成为“开发人员”变得更加棘手,您的问题已经存在了将近3年了,因此,很高兴听到您如何找到自己的旅程,我将从以下角度给出答案:有关您上面提到的应用程序的系统管理员,希望它能阐明一些观点,或者给出非技术性的观点,从而可以解释为什么某个人(管理员或开发人员)将开始完全考虑您的要求,例如从devops透视图x,y,z之间的关系是什么,这些工具是否大于它们各个部分的总和?

我实际上认为sys管理员在这里占了上风,您在问题中提到的大多数应用程序都可以解决admin的“问题”,从而提供了一个更抽象的数据中心环境,这反过来对于开发人员和新的“ devops的策略(阅读策略/团队,devops不是一个人)。那么与您提到的应用有什么关系?如何为IT服务提供整体方法?

OpenStack:一种工具,可让您构建自己的私有云,因此可与AWS之类的东西相提并论

就是这样,但是它做什么呢?-最恰当地命名为DOS的操作系统-它通过抽象化BIOS操作磁盘,OpenStack操作数据中心并抽象化基础架构(IaaS-是数据中心操作系统的行话)。现在,您的数据中心具有API,命令语法和GUI,OpenStack可以驱动系统管理程序,交换机,路由器,防火墙,存储区域网络,负载平衡器,泊坞窗主机等。Openstack使用您的硬件制造商的“插件” 特定功能可以只存在于软件中,因为软件定义了某些东西或网络功能虚拟化。在此OpenStack以及所有其他云之上,可以通过读取您在业务流程引擎中抛出的脚本或根据规则(按比例放大,按比例缩小等)触发的脚本来协调其自身的基础架构。因此,openstack是一个巨大的抽象层,例如,我不在乎我拥有什么交换机,可以使用命令为我提供一个网络,或者为我构建一个复杂的负载平衡,HA,可公开使用,自动扩展,域名注册,存储附加的东西 - 使用这个脚本我在互联网上找到了。

Docker:基于一些Linux内核概念的“轻量级VM”,可用于独立运行进程,例如在共享Web托管环境中。

Docker是另一层抽象,就像云是一种破坏性技术一样,它正在改变整个行业,因为它解决了许多运营“问题”,例如软件依赖项,升级,数据隔离和纯粹的可移植性。Java之所以变得流行是因为开发人员不必考虑它的源代码可移植性,运行JVM意味着只要支持Java,他们的代码就应该在咖啡机上运行。Docker解决了类似的问题,要运行我的应用,您需要一个Docker主机,而不是,则需要此版本的python,此内核,此linux发行版等,应用程序当然仍然具有这些依赖关系,但是底层主机不在乎,管理员也不在乎您在隔离的容器中做什么(一点)。Docker正在改变开发和运营模式,将整个操作系统及其服务视为二进制文件。我们可以从存储库中获取它们,对其进行版本控制,对其进行修改,使用参数对其进行运行等。

Chef:一种用于设置和配置操作系统(例如在VM内部)的工具。

是的,Chef,puppet,ansible,salt,系统中心运营经理以及该领域中大量其他应用程序没有前两个版本那样具有破坏性,这为开发人员和管理员提供了一种对部署,升级和其他操作(配置变更),似乎没有任何标准机构可以像云技术那样努力。但是我们没有像基础架构这样确定的东西来处理,因此,学习这些知识会更加痛苦,而且彼此之间的转移并不多。

流浪汉:据我了解,是要自动创建和管理VM:设置,启动和停止它们。可以使用本地VM或远程(例如在云平台上)完成此操作。

这是您提到的应用程序列表中的一个奇怪的部分,Vagrant是开发人员的工具,也是管理员的玩具,您可以通过vagrant快速站起来一个开发环境,例如,我想开发一个Android应用程序,从中获取IDE流浪汉,我认为它将很快被Docker取代。

您能为我提供如何开始使用所有这些的建议吗(同时很多,而且我不知道从哪里开始)?

这就是为什么我认为管理员占上风,我们必须手动完成大部分工作,然后知道会出什么问题,木偶清单,云计算和docker编排将对我们来说变得更容易,开发人员会发现自己需要很多切线,所以我对任何潜在开发者的建议是首先成为管理员。



0

最后,我仅使用了Vagrant和Docker的组合。

我使用vagrant来配置机器(还有其他云提供商,但是我使用的是内置的VirtualBox。因为我使用的是这种方法,所以外部网络和存储几乎是手动的,但是如果使用类似vagrant-aws的插件,则可以告诉AWS为您提供必要的零件。

我使用的配置脚本指向一个安全的位置,该位置包含用于签署CSR和docker swarm join令牌的CA证书和密钥。另外,我安装了docker-engine并将其配置为加入集群(如果没有则初始化)。

解决之后,我只需在docker stack deploy本地计算机或构建框中执行一个操作,即可将堆栈与所需的一切一起部署。

在我来说,我只是下降厨师赞成只是使用简单安装后的脚本,做的yum还是apt-get作为我的供应脚本。

我还使用vagrant-triggers插件在销毁之前添加了其他脚本(在我的情况下,请离开群)。

使用Vagrant进行集中管理的好处是,您可以在其他系统或单台计算机上复制环境以进行开发,而只需添加或更改该provider部分即可。请注意,我还没有在单台计算机上设置OpenStack来管理VirtualBox的经历。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.