大航海2 奥托攻略
不久前, Vagrant是尝试解决“在我的机器上工作的”时间记忆问题的主要工具。 开发人员可以创建可共享的Vagrant文件,以允许同事启动复制机以测试代码和典型现代项目的互连部分。 Vagrant远未消亡,但遭受了两个长期问题,包括创建的虚拟机的资源占用,主机与虚拟机之间共享文件的速度以及对虚拟机进行配置更改的速度。
随之而来的是Docker ,解决了其中的一些问题(并创建了其他问题),并带走了许多Vagrant的用户群。
从一开始,Vagrant和Docker都是开发人员工具,在这些环境中部署项目从来没有像应该的那么简单。 Docker为解决这个问题做了很多工作,但是Vagrant从来没有考虑到这一点, 而只是在最近才添加了此功能 。
Vagrant的创建者Hashicorp承认, Vagrant可能需要更换,并且正逐步鼓励用户切换到基于Vagrant的Otto 。 Otto非常注重基于微服务的基础架构,与Vagrant有以下差异:
- 应用程序级别。 Vagrant专注于在计算机级别设置配置,而Otto专注于应用程序级别。 这允许更为复杂的,相互关联的配置和依赖性。
- 部署。 尽管可以直接从Vagrant文件进行部署,但这从来都不是理想的任务。 使用Otto,可以直接进行生产部署。
配置
Otto可作为预配置的二进制文件使用 ,对于Mac用户,可使用带有Cask的Homebrew( brew cask install otto
)。 在此示例中,我将使用Rails应用程序,但是Otto还附带了对Java和Python的内置支持。
rails new ottotest
接下来,要使用Otto管理项目并将其源代码编译为新.otto
文件夹中包含的.otto
文件,请运行以下命令:
otto compile
Otto对该命令的默认设置做出了一些明智的决定,但是如果您想要更多控制,则可以在项目内部创建一个Appfile来覆盖这些设置。 指定应用程序名称和Ruby版本的简单示例是:
application {
name = "Otto Test"
type = "ruby"
}
customization {
ruby_version = "2.3"
}
与奥托一起发展
运行以下命令:
bash
otto dev
将创建适合您的应用程序需求的整个虚拟化开发环境。 它仍然使用Vagrant和Virtualbox,因此Otto更像是Vagrant的实用程序,而不是替代品。 首次运行此命令时,可能要花一些时间,因为Otto将创建用于开发此特定应用程序开发的VM,以及Otto使用的共享VM。
您现在可以使用:
otto dev ssh
要访问开发“机器”并发出您可能想要的任何命令,例如:
bundle && rackup --host 0.0.0.0
此时Otto应该已经为您提供了IP地址,但是如果需要提醒,可以使用以下命令:
otto dev address
添加基础架构
Otto具有添加您的部署基础架构的命令,但目前仅支持AWS。 那是有限的,但是很快还会有更多 。 如果您确实拥有和AWS账户,请运行:
otto infra
Otto将引导您完成设置过程,以连接您的应用程序和AWS账户。
构建和部署
下一步是构建准备部署的应用程序。 在此阶段确切发生的事情在某种程度上取决于您的应用程序。 它可能正在创建Docker映像,AMI(Amazon机器映像)或其他内容。 奥托(Otto)的基本原则之一是,您不必担心正在发生的事情,它会“正常工作”,但是我仍然对那些声称这样做的项目持健康的怀疑态度。
otto build
otto build
命令要求您的项目具有版本控制设置,但这在文档中没有明确说明。
您可以使用以下命令查看构建状态:
otto status
最后一步是运行:
otto deploy
此步骤通过获取build命令的结果,在基础结构上启动带有该服务器的服务器并为您提供访问应用程序的IP地址,来连接最后两个步骤。
这里还有更多的奥托“自动魔术师”在工作。 它将检测您的应用程序是否需要(或您定义了)多台服务器,然后设置负载均衡器以适当地处理流量。
下一步是什么?
Otto Hashicorp是否试图弥补Vagrant及其竞争对手的缺点? 在本文的简单演示中,Otto仍生成了超过3GB的虚拟机。 尽管其中一些已被其他应用程序使用,但与容器技术相比,这仍然是一个更大的占用空间。
奥托最大的希望就是“您所要做的就是运行命令x”,这是一个很大的希望。 但是我们都已经看到了可以实现这一目标的项目和产品,实际上,这种情况很少发生。
为了使Otto取得成功(并且更加灵活),Hashicorp需要增加对更多语言和基础架构提供商的支持。 他们还需要添加一些更详细的文档。 太多的章节掩盖了实际发生的事情,并且缺少了一些东西。 例如,我找不到任何有关如何停止和删除由Otto创建的VM的提及,而在VirtualBox中却没有这样做。
该项目尚处于初期阶段,但是如果您正在寻找一种新的开发解决方案来部署工作流并且Otto可以满足您的需求,那么请看一下。
翻译自: https://www.javacodegeeks.com/2016/06/otto-next-generation-vagrant.html
大航海2 奥托攻略