Intereting Posts

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

我是一名Web开发人员,但我也对一些pipe理任务感兴趣。 因此,从纯粹的行政到开放的新行动对我来说非常方便。

无论如何,我有一些问题要把几件事情关系到一起。 也许没有,所以我想请求帮助澄清。

基本上,我想要把四种types的软件(从我的理解)。 确切的产品并不重要,你可以把任何类似的软件作为替代:

  • Vagrant:从我的理解是自动创build和pipe理虚拟机:设置它们,启动和停止它们。 这可以使用本地VM或远程来完成,例如在云平台上。
  • Docker:基于几个Linux内核概念的“轻量级VM”,可以用来隔离运行进程,例如在共享的Web主机环境中。
  • 厨师:设置和configuration操作系统的工具,例如在虚拟机内部。
  • OpenStack:一种工具,允许您构build自己的私有云,因此可以与AWS等相媲美。

问题1:我的解释是正确的,还是我对这些消费中的一些(或全部)有错?

问题2:我怎么能混合所有这些工具? 这会有什么意义吗?

在我的想象中,从我的理解来看,你可以去

  • 使用OpenStack来构build自己的云,
  • 使用Vagrant来pipe理在云中运行的虚拟机,
  • 使用Chef来设置这些虚拟机
  • 最后使用Docker在虚拟机中运行进程。

它是否正确? 如果是这样,你能给我一个如何开始使用所有这些build议(这是相当多的同时,我不知道从哪里开始)?

    让我们使用他们各自的网页找出这些项目是什么。 不过,我会改变你列出的顺序:

    • 厨师 :厨师是一个将基础设施转化为代码的自动化平台。

      这是一个configurationpipe理软件 。 他们大多数使用相同的范例:它们允许你定义你想要的机器的状态 ,关于configuration文件,安装的软件,用户,组和其他许多资源types。 他们中的大多数还提供将更改推送到特定机器的function,通常称为编排 。

    • Vagrant :创build和configuration轻量级,可重复和可移植的开发环境。

      它提供了使用Oracle的VirtualBox或VMWare技术作为提供程序生成完全虚拟化机器的可重复方法。 Vagrant可以与configurationpipe理软件协调,以便在操作系统的安装程序完成时继续进行安装。 这被称为供应 。

    • Docker :一个开源项目,将任何应用程序作为轻量级容器进行打包,运输和运行

      这个软件的function与Vagrant的function有些重叠,它提供了定义操作系统安装的手段,但是用于这个目的的技术有很大的不同。 Docker使用的Linux容器本身不是虚拟机,而是孤立的进程在独立的文件系统中运行。 Docker也可以使用configurationpipe理系统来调配容器。

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

      虽然OpenStack确实可以部署在一台机器上 ,但这种部署纯粹是为了概念validation,由于资源的限制,可能不是非常实用。

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

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

    我试图将这些产品作为特定架构的组件展示。 从我的angular度来看,首先能够根据您所需要的环境(Chef,Puppet,Ansible,…)定义您的需求,然后能够以受控的方式部署它(Vagrant,Docker ,…),最后根据需要将其缩放到全局大小。

    您需要在项目的范围内定义多less所有这些function。

    另外请注意,我已经过度简化了所有的技术解释。 请使用参考链接获取详细信息。

    我觉得来自开发者的背景会使得成为一个“devops”更加棘手,你的问题已经差不多3年了,所以听到你是如何find这个旅程是很有意思的,我会从这个angular度给出一个答案。关于你上面提到的应用程序的系统pipe理员,希望能够说明一点,或者提供一个非技术的angular度来解释为什么一个人(pipe理员或开发人员)会开始考虑你所要求的,透视什么x,y,z之间的关系是这些工具的更大的总和他们的部分?

    我实际上认为系统pipe理员在这里占上风,在你的问题中你提到的大多数应用程序解决了pipe理问题,这样做提供了一个更抽象的数据中心环境,而这对于开发人员来说是更可编程的, devops的策略(阅读策略/团队,devops不是一个人)。 那么你提到的应用程序有什么关系? 这是如何为IT服务提供一个全面的方法?

    OpenStack:一种工具,允许您构build自己的私有云,因此可以与AWS等相媲美

    这就是这样,但它是做什么的? – 主要命名的操作系统是DOS–它通过抽象BIOS来操作你的磁盘,OpenStack操作你的数据中心和抽象你的基础设施(IaaS – 是数据中心操作系统的术语)。 现在你的数据中心有一个API,一个命令语法和一个GUI,OpenStack可以驱动pipe理程序,交换机,路由器,防火墙,存储区域networking,负载平衡器,docker主机等等。Openstack使用你的硬件制造商的插件或者特定的function可以单独作为软件定义的东西或networkingfunction虚拟化存在。 在OpenStack和所有其他云之上,可以通过读取在编排引擎上投入的脚本或基于规则(放大,缩小等)触发的脚本来编排自己的基础架构。 所以openstack是一个巨大的抽象层,例如我不在乎我有什么开关,给我一个这个命令的networking,或者build立一个复杂的负载平衡,HA,公开可用,自动扩展,域名注册,存储附加的东西 – 与我在互联网上find这个脚本。

    Docker:基于less数Linux内核概念的“轻量级虚拟机”,可用于独立运行进程,例如在共享的虚拟主机环境中。

    Docker是另一个抽象层,就像云是一个颠覆性的技术,它正在改变行业,因为它解决了软件依赖性,升级,数据隔离和纯粹的可移植性等许多操作“问题”。 Java开始stream行,因为它的源代码可移植性,开发人员不必考虑,运行的JVM意味着只要它支持Java,它们的代码就应该在咖啡机上运行。 Docker解决了类似的问题,运行我的应用程序,你需要一个docker主机, 而不是 ,你需要这个版本的Python,这个内核,这个Linux发行版等,应用程序仍然有这些依赖关系,但底层主机doesn'无所谓和pipe理员不关心你在一个孤立的容器(一点)做什么。 Docker正在改变开发和运营模式,处理整个操作系统,而且它的服务就像一个二进制文件。 我们可以从存储库中获取它们,对它们进行版本化,修改它们,使用参数运行它们。

    厨师:设置和configuration操作系统的工具,例如在虚拟机内部。

    是的,不像前两个那样具有破坏性,厨师,傀儡,ansible,salt,系统中心运营经理和这个空间中的大量其他应用程序为开发人员和pipe理员提供了部署,升级和其他操作的模型(config变化),似乎没有任何标准组织像云计算那样看待这些努力。 但是,我们并没有像基础设施那样处理一些明确的事情,所以学习这些东西会更加痛苦,而且不能从一个转移到另一个。

    Vagrant:从我的理解是自动创build和pipe理虚拟机:设置它们,启动和停止它们。 这可以使用本地VM或远程来完成,例如在云平台上。

    这是你提到的应用程序列表中奇怪的一个,Vagrant是一个开发者的工具和pipe理员的玩具,你可以快速站起来与stream浪者的开发环境,例如我想开发一个Android应用程序,stream浪汉,我想很快就会被Docker超越。

    你能给我一个如何开始使用所有这些build议(这是相当多的同时,我不知道从哪里开始)?

    这就是为什么我认为pipe理员占上风,我们不得不手动做大部分工作,并知道会出现什么问题,傀儡清单,云计算和docker编排会变得更容易,开发人员会发现自己采取了许多切线,所以我对任何潜在的开发者的build议首先是pipe理员。

    我刚刚完成了一个在Vagrant实例中使​​用Chef服务器的OpenStack部署项目: https : //github.com/bluechiptek/bluechipstack/blob/master/README.md

    这样做的主要问题是,每次要pipe理节点时,Vagrant实例都会获得相同的IP。 如果你做静态寻址,它运作良好。 通过VPN来做并不理想。