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

Gol*_*den 57 chef lxc openstack vagrant docker

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

无论如何,我有一些问题要将一些事情放入关系中。也许没有,所以我想寻求帮助澄清。

基本上,我想关联的是四种类型的软件(根据我的理解)。确切的产品并不重要,您可以放置​​任何类似的软件作为替代:

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

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

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

在我的想象和我的理解中,你可以去

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

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

daw*_*wud 56

Let's use their respective web pages to find out what are all these projects about. I'll change the order in which you listed, though:

  • Chef: Chef is an automation platform that transforms infrastructure into code.

    This is a configuration management software. Most of them use the same paradigm: they allow you to define the state you want a machine to be, with regards to configuration files, software installed, users, groups and many other resource types. Most of them also provide functionality to push changes onto specific machines, a process usually called orchestration.

  • Vagrant: Create and configure lightweight, reproducible, and portable development environments.

    It provides a reproducible way to generate fully virtualized machines using either Oracle's VirtualBox or VMWare technology as providers. Vagrant can coordinate with a configuration management software to continue the process of installation where the operating system's installer finishes. This is known as provisioning.

  • Docker: An open source project to pack, ship and run any application as a lightweight container

    The functionality of this software somewhat overlaps with that of Vagrant, in which it provides the means to define operating systems installations, but greatly differs in the technology used for this purpose. Docker uses Linux containers, which are not virtual machines per se, but isolated processes running in isolated filesystems. Docker can also use a configuration management system to provision the containers.

  • OpenStack: Open source software for building private and public clouds.

    While it is true that OpenStack can be deployed on a single machine, such deployment is purely for proof-of-concept, probably not very functional due to resource constraints.

    The primary target for OpenStack installations are bare metal multi-node environments, where the different components can be used in dedicated hardware to achieve better results.

    A key functionality of OpenStack is its support for many virtualization technologies, from fully virtualized (VirtualBox, VMWare), to paravirtualized (KVM/Qemu) and also containers (LXC) and even User Mode Linux (UML).

I've tried to present these products as components of an specific architecture. From my point of view, it makes sense to first be able to define your needs with regards to the environment you need (Chef, Puppet, Ansible, ...), then be able to deploy it in a controlled fashion (Vagrant, Docker, ...) and finally scale it to global size if needs be.

您需要多少这些功能应该在您的项目范围内定义。

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