为什么Docker、Vagrant、Ansible 这样的工具会如此受欢迎?

本文讲的是为什么Docker、Vagrant、Ansible 这样的工具会如此受欢迎,【编者的话】本文就目前应用系统包含越来越多的组件,复杂性越来越高,运维越来越难,以“会话”的角度来解释了Docker、Vagrant和Ansible这类工具流行的原因。诚然,现在的系统已经不再是单一平台就能解决;多平台,多组件已经是常态,Docker、Vagrant和Ansible这类工具的出现,让我们部署、管理以及维护系统变得更加轻松。

应用栈的复杂性一直都在增长,其复杂性也越来越高。虽说应用栈一直都很复杂,但是从来没有像现在这样:这么多的服务,这么多的工具,这么多高性能计算机可用,这么多的新技术需要尝试,并且人们更迫切需要用更新、更酷、更简洁的方法来处理问题。就好比有很多玩具可以玩,而且玩具的数量还在不断增加,以至于玩具盒都装不下它们了。

如果你不熟悉stackshare.io,那就去看一看。那里有很棒的资源,你可以从这个网站看到很多公司是怎么用应用栈开发他们应用的。它们不仅实用,还相当有意思。

花几分钟看看那里的一些技术栈,你就会发现一些已经组装好的技术栈实在是太吸引人了。这些是我特别喜欢的典范:(深呼吸)EC2 S3 Qubole MongoDB Memecached Redis Django Hadoop nginx Cassandra MySQL Google Analytics SendGrid Route53 Testdroid Varnish Zookeeper。

那里面有web服务器,web应用服务器,缓存代理服务器,挖掘服务,小部分Services-as-aservice,还有六种不同特色、功能的“数据库”(里面既有开源的也有付费的服务,当然,未来需要付费的将会越来越少)

在以前,如果你在白板上写我们需要六种数据库!!!这是不可想象的,但是为了满足商业需求,基础设备迅猛发展,需要六种数据库这种状况也已经出现。一个开发人员认定了一个新工具是最好的,那么无论对错,这个工具会以它的方式进入了产品;那一刻,这个酷炫的新工具也就成了一个过时的应用,并且直到你重构产品前你不得不一直用(哈!)或者你离开去干别的,让下一个可怜的倒霉蛋来接着用。

怎么应对呢?

那么开发人员怎么可能处理这种错综复杂的情况呢?超出大家的预料,事实证明这种状况是可以处理的。

机智的下一代在线商业平台,基于位置识别,集赌博、约会以及信息共享于一体,他需要大量不同的服务以及组件。但是罗马不是一天建成的,再宏大的计划在起初都是很简单的,任何一个可缩放、混合的解决方案的单个组件都是起始于某处几行简单的代码。对于大部分项目组来说,某处指的是几个不起眼的开发人员的笔记本电脑和把他们结合在一起的git代码库。

我们谈论云革命,但是基本不再谈论个人电脑革命。结合虚拟化、容器化技术,当今开发人员的电脑完全能配置一个完整、复杂的多系统的环境。多“机器”现在只能是一种表面上的说法,因为这多个、单个“机器”很可能就普通地实例化在一个个人电脑上。

总结:目前安装在单个个人电脑上的复杂的、多系统应用栈的开发环境现在已经很可靠、可复制,而且部分环境或者整个环境的改变很容易在整个项目组里共享,因此每个人都可以快速重新构建相同的环境。例如,使用由Vagrant生成、Ansible编排的多个虚机,ceph-ansible可以部署、测试安装到个人电脑的多节点Ceph集群,一切都只需要一个命令:vagrant up。目前Ceph的开发人员正在使用这个工具。

这种复杂的多节点部署已经变得极为平常,这意味着当前各个机器之间的关系模型已经和管理单个机器上运行的东西一样重要了。

Docker和Vagrant之所以成功,是因为他们采用两种简单方式来表达:“这机器上有这些内容,这是启动的方法”。Ansible之所以成功,是因为他是一种简单的表达方式,“这是这些机器怎么交互,这是启动他们的方法”。综合在一起,他们可以让开发人员用一种方法来定义环境并且可以轻易的重建、部署复杂的多系统环境。

DevOps经常被谈及,它的核心思想就是会话。这可能是对的,但是当所有人都说同一种语言时这个会话就是最成功的。Vagrant,Docker和Ansible已经看到了他们的成功,因为他们让大家说同一种模型、部署的“语言”。

这篇由Greg Dekoenigsberg创作的文章来自于Easy DevOps 栏目。快来分享您的事例、建议,以此来使DevOps变得更加实用——写上经历里的工具、过程、文化,成功以及光彩或者不光彩的失败,通过osdc-admin@redhat.com发送给我们把。

原文链接:Why tools like Docker, Vagrant, and Ansible are hotter than ever (翻译:李敏 校对:魏小红)

原文发布时间为:2015-05-28

本文作者:Lemine 

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:为什么Docker、Vagrant、Ansible 这样的工具会如此受欢迎?

时间: 2024-09-29 00:13:54

为什么Docker、Vagrant、Ansible 这样的工具会如此受欢迎?的相关文章

使用Jenkins、Docker和Ansible进行持续集成和交付

本文讲的是使用Jenkins.Docker和Ansible进行持续集成和交付,[编者的话]本文介绍了使用Docker.Jenkins等技术实现应用开发,测试到部署的自动化.它是一种探索.重点在于流程中的代码检测.测试.部署.部署后要做的事情没有涉及.会在后面文章中介绍. 本文试图为您介绍一个设置持续集成.交付.部署工作流的可行方式.我会使用Jenkins.Docker.Ansible和Vagrant来设置(配置)两个服务器.一个作为Jenkins的服务器,另一个用来模拟生产环境.前者用来检查代码

Oracle 和 Docker 合作,数据库、工具可在 Docker 部署

近日,Oracle 和 Docker 宣布合作.目前 Oracle 的数据库.中间件和开发工具已均可在 Docker Store 市场上找到. 开发者现在可以通过 Docker Certification Program 使用这些工具,将 Docker Enterprise Edition 作为其容器平台,快速构建云原生应用.Certification Program 是一个框架,允许合作伙伴将其技术整合和认证到 Docker EE 平台. 这种新的合作模式允许开发者在 Docker 中提取 O

开始LXC,DOCKER,VAGRANT,COREOS之旅

很有兴趣哟. 有人说会重构互联基质,可能言重. 但,无疑在未来几年内,DOCKER和COREOS这样的更新布置模式会流行.

ansible运维工具用lookup_plugins插件如何实现playbook扩展

前沿:         ansible的那几个插件都不错,现在咱们聊聊lookup plugins这个插件. Lookup_plugins主要是用来实现扩展playbook里面各种的字符串和变量的扩展.对于我个人来说,用途不是太大,但是看了下官方提供的lookup_plugins的扩展列表,还是有些想法的. 一开始使用lookup的时,遇到了一个问题,{{ lookup }}里面的数据没有处理,怎么也找不到解决的方法,最后问题在于ubuntu下的版本问题.貌似那个版本对lookup组建支持不好.

ansible运维工具filter_plugins插件如何实现jinja2自定义filter过滤器

前言:    filter_plugins是什么? 这个单词拆解下,filter !  熟悉jinja2模板的人,到知道他是过滤器,可以在模板中以管道的方式用pyhton的代码处理字符串. ansible模板调用的是jinja2,这个大家都知道 . 这个filter_plugins插件代码,就是为了更好的处理jinja2模板中的字符串和逻辑判断的. 先前,我和沈灿讨论一个模板的问题,实在蛋疼的要命,总是达不到我们要的数据,当时是做一个数据的统计和rabbitmq的配置,有些地方用jinja2模板

Docker 集群工具比对:Kubernetes vs Docker Swarm

从目前来看,Kubernetes 和 Docker Swarm 是2个最常用来在集群环境中创建容器的工具.这两个工具都是被创建来管理容器集群的,而且他们都把集群中的所有服务器当成一个统一的设备来使用.但是,它们在实现方法上有巨大的不同. Kubernetes Kubernetes 是基于 google 自身多年使用 linux 容器的经验创建出来的,所以可以说它是 Google自身多年操作经验的一个复制,只是 google 把这些操作经验应用到了 Docker 上. 使用Kubernetes 来

如何使用vagrant和docker在OSX下管理创建虚拟环境简明教程

 Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境.docker 是一个开源的应用容器引擎,开发者可以打包他们的应用到一个可移植的容器中,然后发布到 Linux 上,也可以实现虚拟化.     虚拟化: 其实就是因为云计算的催生的技术,目的是让运行在上面的应用程序觉得自己独占所有的资源.说白了就是资源管理/隔离和namspace的隔离. Hypervisor: 这是虚拟化的一种,也就是操作系统上面在运行一个或者多个操作系统,这个底层的操作系统系统就是hypervisor.它来

使用 Ansible 高效交付 Docker 容器

使用 playbook.插件和 Docker 模块设置和扩展 Ansible 环境 Docker 和它的容器工作流可封装.共享和部署您的应用程序环境.Ansible 是一个与 Docker 高度兼容的自动化工具,它使用一个强大的接口来管理远程服务器上的容器.在本文中,我将探索为何和如何使用 Ansible 的可扩展设计来将 Docker 和 Ansible 的最佳功能合并在一起. Docker 之所以如此流行,是因为它创造了一种采用方便的命令行接口 (CLI) 和 HTTP API 工具来封装.

如何使用Ansible来交付Vagrant实例

Ansible 是一款系统管理员进行自动化运维的强大工具.Ansible 让配置.交付.管理各种容器.软件部署变得非常简单.基于轻量级模块的架构非常适合系统管理,一个优点就是如果某个节点没有被 Ansible 管理的话,它的资源就不会被使用. 这篇文章介绍用 Ansible 来配置 Vagrant 实例,它是一个配置好的基础虚拟机映像,包含了开发环境中需要用到的工具.你可以用它来部署开发环境,然后和其他成员协同工作.用 Ansible,你可以用你的开发包自动化交付 Vagrant 实例. 我们用