Vagrant

Vagrant

在Kubernetes中用Helm安装Prometheus为什么PVC一直pending?

回复

online 发起了问题 • 1 人关注 • 0 个回复 • 6547 次浏览 • 2017-11-13 11:05 • 来自相关话题

CoreOS折腾笔记(一)集群部署

kevinlee 发表了文章 • 0 个评论 • 3229 次浏览 • 2016-06-01 21:14 • 来自相关话题

最近在技改完成之后打算进行大量的微服务化改造,而方便进行微服务化的步骤之一,就是将现有的系统移植进入Docker环境之中。在标准容器系统的选择上,我把目光放在了CoreOS上。实际上,我在CoreOS版本还是2开头的时候就有简单研究过,但是当时主要作为研究Do ...查看全部
最近在技改完成之后打算进行大量的微服务化改造,而方便进行微服务化的步骤之一,就是将现有的系统移植进入Docker环境之中。在标准容器系统的选择上,我把目光放在了CoreOS上。实际上,我在CoreOS版本还是2开头的时候就有简单研究过,但是当时主要作为研究Docker的途径,现在则是作为集群化部署的基准系统。从本文开始的一系列折腾则是我在研究CoreOS集群化使用的一些纪录,而本文就是介绍一个本地实现容器化机群的步骤。

安装Vagrant

略,因为太简单了。另外还需要VirtualBox,不要忘记装。

配置CoreOS-vagrant

执行以下命令:

git clone https://github.com/coreos/coreos-vagrant.git
cd coreos-vagrant


下载CoreOS的vagrant配置。值得在进入正式配置之前一提的是,CoreOS本身是没有默认密码或者安装密码机制的,也就是说,现有的所有认证登录需要通过SSH进行。如果是通过vagrant安装,会自动生成登录需要的SSH密钥,这个是需要额外注意的内容。

首先,将仓库中提供的两个模版配置文件复制成正式,接下来需要修改对应的文件:

cp config.rb.sample config.rb
cp user-data.sample user-data


首先修改config.rb文件。这里重点是两个参数,一个是启动的实例数量,另外一个是升级的版本,我修改成了

$num_instances=4
$update_channel='stable'


启动4个实例,升级选择的版本则是月度升级版。另外一个user-data暂时不作修改。

接下来执行:

vagrant up


在一堆输出之后,生成的4个实例就已经在运行了。也可以通过命令vagrant status查看运行状态。

➜ coreos-vagrant git:(master) vagrant status
Current machine states:

core-01 running (virtualbox)
core-02 running (virtualbox)
core-03 running (virtualbox)
core-04 running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.


接下来需要把SSH密钥添加到SSH可以识别的路径中,当然,也可以使用ssh -i每次指定key。

➜ coreos-vagrant git:(master) ssh-add ~/.vagrant.d/insecure_private_key
Identity added: /Users/user/.vagrant.d/insecure_private_key (/Users/user/.vagrant.d/insecure_private_key)
➜ coreos-vagrant git:(master) vagrant ssh core-01 -- -A
CoreOS stable (1010.5.0)
core@core-01 ~ $


这里的-- -A前两的个横杆表示ssh参数的起始。之后的-A是标准的SSH命令参数,表示将主机的SSH秘钥传递到虚拟机里面,这样做是为了之后的涉及SSH操作更加方便,否则会在某些命令时报错。

进入CoreOS之后,就可以查看现在集群中的机器,可以通过如下命令:

core@core-01 ~ $ fleetctl list-machines
MACHINE IP METADATA
6e1b9fae... 172.17.8.104 -
91060182... 172.17.8.103 -
af1494a6... 172.17.8.102 -
c99fef8a... 172.17.8.101 -


查看设备是否正常加入。当然,也可以很方便的登录其它系统:

core@core-01 ~ $ fleetctl ssh -machine af1494a6
The authenticity of host '172.17.8.102' can't be established.
ECDSA key fingerprint is 24:34:be:4e:b7:43:be:94:34:33:b2:81:e0:0c:08:9d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.8.102' (ECDSA) to the list of known hosts.
CoreOS stable (1010.5.0)
core@core-02 ~ $ exit
logout


这样我们的第一步,使用CoreOS部署本地集群就已经实现了。

最后,如果需要关闭这些CoreOS实例,可以通过vagrant halt停止所有,下次可以通过vagrant up就可以重新启动了。

# 关于作者

作者李俱顺(kevin at yeeuu dot com),杭州云柚科技有限公司联合创始人、架构师。关注IoT、云计算和安全相关方向。

kubernetes进行kubectl version出现localhost:8080 connection refused的问题

Ichuncun 回复了问题 • 6 人关注 • 5 个回复 • 25550 次浏览 • 2015-10-23 11:09 • 来自相关话题

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

Lemine 发表了文章 • 0 个评论 • 4876 次浏览 • 2015-05-28 20:58 • 来自相关话题

【编者的话】本文就目前应用系统包含越来越多的组件,复杂性越来越高,运维越来越难,以“会话”的角度来解释了Docker、Vagrant和Ansible这类工具流行的原因。诚然,现在的系统已经不再是单一平台就能解决;多平台,多组件已经是常态,Docker、Vagr ...查看全部
【编者的话】本文就目前应用系统包含越来越多的组件,复杂性越来越高,运维越来越难,以“会话”的角度来解释了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 (翻译:李敏 校对:魏小红)

关于Vagrant搭建的CoreOS集群碰到的小问题

secretomb 发表了文章 • 3 个评论 • 9012 次浏览 • 2015-04-25 22:24 • 来自相关话题

前两天使用Vagrant搭建了一个简单的CoreOS集群,虚拟机使用的事Virtualbox。在Git下载了一份现成的配置文件安装的,具体过程就略过了,装好之后一切正常,可顺利进入CoreOS系统。但之前有过一次系统异常关机,当时并未通过“vagrant ha ...查看全部
前两天使用Vagrant搭建了一个简单的CoreOS集群,虚拟机使用的事Virtualbox。在Git下载了一份现成的配置文件安装的,具体过程就略过了,装好之后一切正常,可顺利进入CoreOS系统。但之前有过一次系统异常关机,当时并未通过“vagrant halt”命令关闭虚拟机,结果后来时再次启动CoreOS集群时(vagrant up),就出现错误了,具体错误如下:

devops@devops-server:~/workspace/coreos-vagrant$ vagrant up
Bringing machine 'core-01' up with 'virtualbox' provider...
==> core-01: Importing base box 'coreos-alpha'...
==> core-01: Matching MAC address for NAT networking...
==> core-01: Setting the name of the VM: coreos-vagrant_core-01_1405929178704_22375
==> core-01: Clearing any previously set network interfaces...
==> core-01: Preparing network interfaces based on configuration...
core-01: Adapter 1: nat
core-01: Adapter 2: hostonly
==> core-01: Forwarding ports...
core-01: 22 => 2222 (adapter 1)
==> core-01: Running 'pre-boot' VM customizations...
==> core-01: Booting VM...
==> core-01: Waiting for machine to boot. This may take a few minutes...
core-01: SSH address: 127.0.0.1:2222
core-01: SSH username: vagrant
core-01: SSH auth method: private key
core-01: Warning: Connection timeout. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...

借助度娘、Stack Overflow最终找到解决办法,很简单,删除虚拟机的私有密钥即可,命令如下:

rm .vagrant/machines/core-01/virtualbox/private_key

具体原因是Vagrant会在共享密钥时进行替换,但有时会替换失败,这时key就丢失了,之后就会出现上面的问题,感觉这是个坑,希望对想我一样的新人有用吧。

【理解Docker】Docker与Vagrant的简单区别

田浩浩 发表了文章 • 0 个评论 • 21268 次浏览 • 2015-03-25 10:42 • 来自相关话题

【编者的话】本文翻译自Quora上的一个问题:Docker和Vagrant的区别,以及我们何时使用他们。 Vagrant和Docker是两只不同的野兽。 Docker是一个由shell层和management ...查看全部
【编者的话】本文翻译自Quora上的一个问题:Docker和Vagrant的区别,以及我们何时使用他们。

VagrantDocker是两只不同的野兽。

Docker是一个由shell层和management层两部分组成的,用来构建并运行基于lxc的虚拟Linux容器。

Docker的伟大在于;它是轻量级的(因为它依赖于共享内核的Linux容器),[以及与它的分布无关]。虽然所有实例之间的内核共享(但与主机以及互相之间都是隔离的),不同实例的用户空间可以基于不同的Linux发行版本。

Vagrant则是一个奇妙的工具,它使用puppet和/或chef管理,用来自动调配多个虚拟机,并且每个都有他们自己的配置。对于它的虚拟化来说,它可以使用不同的供应商。原来默认的提供商是VirtualBox,但它现在支持更多了,包括VMware fusion,甚至amazon-ec2。

有趣的是,Vagrant现在也具有一个Docker提供商,因此您可以用vagrant来管理Docker的构建和部署。

Docker,并不限制它的灵活性 - “一切都是镜像”,你可以创建变体镜像和全栈镜像,其中每一个添加功能到前一个。管理这些会成为一个挑战。

Vagrant也有类似的挑战,因为虚拟机可能会过时,有时虚拟机可能很难找到以及更新。有一些工具比如packer和以前的veewee可以用来帮助你构建所谓的'基础'虚拟机。

我相信这些工具可以很好地在一起工作,我觉得这样的组合会在你计划的筹码中或者在你要做整个部件更换测试中,甚至是基础操作系统中大放异彩。

假设你有一个基于Centos的应用程序,并且你要切换到Ubuntu或是其他方式。假设你想完全地升级你的操作系统。

我总是说在开发测试与分级中,对于当前生产环境(包括配置)以及在任何潜在的替代生产环境中你必须要测试你的产品。您是否正在计划一个安全更新?你想更新或是切换到Java吗?

这是Vagrant和Docker出彩的地方。我希望Docker帮助您加快对多个操作环境的测试。

Docker是否一个部署应用程序到生产生产环境中的有用工具呢?这是它常见的使用情况 - 那么它可能是。然而,配置文件的本质变化,尤其是那些必须通过网络进行协调的地方,可以更好地用一个知道在网络中的其他组件的工具。

原文链接:What is the difference between Docker and Vagrant? When should you use each one? (翻译:田浩浩)

关于Vagrant搭建的CoreOS集群碰到的小问题

secretomb 发表了文章 • 3 个评论 • 9012 次浏览 • 2015-04-25 22:24 • 来自相关话题

前两天使用Vagrant搭建了一个简单的CoreOS集群,虚拟机使用的事Virtualbox。在Git下载了一份现成的配置文件安装的,具体过程就略过了,装好之后一切正常,可顺利进入CoreOS系统。但之前有过一次系统异常关机,当时并未通过“vagrant ha ...查看全部
前两天使用Vagrant搭建了一个简单的CoreOS集群,虚拟机使用的事Virtualbox。在Git下载了一份现成的配置文件安装的,具体过程就略过了,装好之后一切正常,可顺利进入CoreOS系统。但之前有过一次系统异常关机,当时并未通过“vagrant halt”命令关闭虚拟机,结果后来时再次启动CoreOS集群时(vagrant up),就出现错误了,具体错误如下:

devops@devops-server:~/workspace/coreos-vagrant$ vagrant up
Bringing machine 'core-01' up with 'virtualbox' provider...
==> core-01: Importing base box 'coreos-alpha'...
==> core-01: Matching MAC address for NAT networking...
==> core-01: Setting the name of the VM: coreos-vagrant_core-01_1405929178704_22375
==> core-01: Clearing any previously set network interfaces...
==> core-01: Preparing network interfaces based on configuration...
core-01: Adapter 1: nat
core-01: Adapter 2: hostonly
==> core-01: Forwarding ports...
core-01: 22 => 2222 (adapter 1)
==> core-01: Running 'pre-boot' VM customizations...
==> core-01: Booting VM...
==> core-01: Waiting for machine to boot. This may take a few minutes...
core-01: SSH address: 127.0.0.1:2222
core-01: SSH username: vagrant
core-01: SSH auth method: private key
core-01: Warning: Connection timeout. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...

借助度娘、Stack Overflow最终找到解决办法,很简单,删除虚拟机的私有密钥即可,命令如下:

rm .vagrant/machines/core-01/virtualbox/private_key

具体原因是Vagrant会在共享密钥时进行替换,但有时会替换失败,这时key就丢失了,之后就会出现上面的问题,感觉这是个坑,希望对想我一样的新人有用吧。

在Kubernetes中用Helm安装Prometheus为什么PVC一直pending?

回复

online 发起了问题 • 1 人关注 • 0 个回复 • 6547 次浏览 • 2017-11-13 11:05 • 来自相关话题

kubernetes进行kubectl version出现localhost:8080 connection refused的问题

回复

Ichuncun 回复了问题 • 6 人关注 • 5 个回复 • 25550 次浏览 • 2015-10-23 11:09 • 来自相关话题

CoreOS折腾笔记(一)集群部署

kevinlee 发表了文章 • 0 个评论 • 3229 次浏览 • 2016-06-01 21:14 • 来自相关话题

最近在技改完成之后打算进行大量的微服务化改造,而方便进行微服务化的步骤之一,就是将现有的系统移植进入Docker环境之中。在标准容器系统的选择上,我把目光放在了CoreOS上。实际上,我在CoreOS版本还是2开头的时候就有简单研究过,但是当时主要作为研究Do ...查看全部
最近在技改完成之后打算进行大量的微服务化改造,而方便进行微服务化的步骤之一,就是将现有的系统移植进入Docker环境之中。在标准容器系统的选择上,我把目光放在了CoreOS上。实际上,我在CoreOS版本还是2开头的时候就有简单研究过,但是当时主要作为研究Docker的途径,现在则是作为集群化部署的基准系统。从本文开始的一系列折腾则是我在研究CoreOS集群化使用的一些纪录,而本文就是介绍一个本地实现容器化机群的步骤。

安装Vagrant

略,因为太简单了。另外还需要VirtualBox,不要忘记装。

配置CoreOS-vagrant

执行以下命令:

git clone https://github.com/coreos/coreos-vagrant.git
cd coreos-vagrant


下载CoreOS的vagrant配置。值得在进入正式配置之前一提的是,CoreOS本身是没有默认密码或者安装密码机制的,也就是说,现有的所有认证登录需要通过SSH进行。如果是通过vagrant安装,会自动生成登录需要的SSH密钥,这个是需要额外注意的内容。

首先,将仓库中提供的两个模版配置文件复制成正式,接下来需要修改对应的文件:

cp config.rb.sample config.rb
cp user-data.sample user-data


首先修改config.rb文件。这里重点是两个参数,一个是启动的实例数量,另外一个是升级的版本,我修改成了

$num_instances=4
$update_channel='stable'


启动4个实例,升级选择的版本则是月度升级版。另外一个user-data暂时不作修改。

接下来执行:

vagrant up


在一堆输出之后,生成的4个实例就已经在运行了。也可以通过命令vagrant status查看运行状态。

➜ coreos-vagrant git:(master) vagrant status
Current machine states:

core-01 running (virtualbox)
core-02 running (virtualbox)
core-03 running (virtualbox)
core-04 running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.


接下来需要把SSH密钥添加到SSH可以识别的路径中,当然,也可以使用ssh -i每次指定key。

➜ coreos-vagrant git:(master) ssh-add ~/.vagrant.d/insecure_private_key
Identity added: /Users/user/.vagrant.d/insecure_private_key (/Users/user/.vagrant.d/insecure_private_key)
➜ coreos-vagrant git:(master) vagrant ssh core-01 -- -A
CoreOS stable (1010.5.0)
core@core-01 ~ $


这里的-- -A前两的个横杆表示ssh参数的起始。之后的-A是标准的SSH命令参数,表示将主机的SSH秘钥传递到虚拟机里面,这样做是为了之后的涉及SSH操作更加方便,否则会在某些命令时报错。

进入CoreOS之后,就可以查看现在集群中的机器,可以通过如下命令:

core@core-01 ~ $ fleetctl list-machines
MACHINE IP METADATA
6e1b9fae... 172.17.8.104 -
91060182... 172.17.8.103 -
af1494a6... 172.17.8.102 -
c99fef8a... 172.17.8.101 -


查看设备是否正常加入。当然,也可以很方便的登录其它系统:

core@core-01 ~ $ fleetctl ssh -machine af1494a6
The authenticity of host '172.17.8.102' can't be established.
ECDSA key fingerprint is 24:34:be:4e:b7:43:be:94:34:33:b2:81:e0:0c:08:9d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.8.102' (ECDSA) to the list of known hosts.
CoreOS stable (1010.5.0)
core@core-02 ~ $ exit
logout


这样我们的第一步,使用CoreOS部署本地集群就已经实现了。

最后,如果需要关闭这些CoreOS实例,可以通过vagrant halt停止所有,下次可以通过vagrant up就可以重新启动了。

# 关于作者

作者李俱顺(kevin at yeeuu dot com),杭州云柚科技有限公司联合创始人、架构师。关注IoT、云计算和安全相关方向。

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

Lemine 发表了文章 • 0 个评论 • 4876 次浏览 • 2015-05-28 20:58 • 来自相关话题

【编者的话】本文就目前应用系统包含越来越多的组件,复杂性越来越高,运维越来越难,以“会话”的角度来解释了Docker、Vagrant和Ansible这类工具流行的原因。诚然,现在的系统已经不再是单一平台就能解决;多平台,多组件已经是常态,Docker、Vagr ...查看全部
【编者的话】本文就目前应用系统包含越来越多的组件,复杂性越来越高,运维越来越难,以“会话”的角度来解释了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 (翻译:李敏 校对:魏小红)

关于Vagrant搭建的CoreOS集群碰到的小问题

secretomb 发表了文章 • 3 个评论 • 9012 次浏览 • 2015-04-25 22:24 • 来自相关话题

前两天使用Vagrant搭建了一个简单的CoreOS集群,虚拟机使用的事Virtualbox。在Git下载了一份现成的配置文件安装的,具体过程就略过了,装好之后一切正常,可顺利进入CoreOS系统。但之前有过一次系统异常关机,当时并未通过“vagrant ha ...查看全部
前两天使用Vagrant搭建了一个简单的CoreOS集群,虚拟机使用的事Virtualbox。在Git下载了一份现成的配置文件安装的,具体过程就略过了,装好之后一切正常,可顺利进入CoreOS系统。但之前有过一次系统异常关机,当时并未通过“vagrant halt”命令关闭虚拟机,结果后来时再次启动CoreOS集群时(vagrant up),就出现错误了,具体错误如下:

devops@devops-server:~/workspace/coreos-vagrant$ vagrant up
Bringing machine 'core-01' up with 'virtualbox' provider...
==> core-01: Importing base box 'coreos-alpha'...
==> core-01: Matching MAC address for NAT networking...
==> core-01: Setting the name of the VM: coreos-vagrant_core-01_1405929178704_22375
==> core-01: Clearing any previously set network interfaces...
==> core-01: Preparing network interfaces based on configuration...
core-01: Adapter 1: nat
core-01: Adapter 2: hostonly
==> core-01: Forwarding ports...
core-01: 22 => 2222 (adapter 1)
==> core-01: Running 'pre-boot' VM customizations...
==> core-01: Booting VM...
==> core-01: Waiting for machine to boot. This may take a few minutes...
core-01: SSH address: 127.0.0.1:2222
core-01: SSH username: vagrant
core-01: SSH auth method: private key
core-01: Warning: Connection timeout. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...
core-01: Warning: Authentication failure. Retrying...

借助度娘、Stack Overflow最终找到解决办法,很简单,删除虚拟机的私有密钥即可,命令如下:

rm .vagrant/machines/core-01/virtualbox/private_key

具体原因是Vagrant会在共享密钥时进行替换,但有时会替换失败,这时key就丢失了,之后就会出现上面的问题,感觉这是个坑,希望对想我一样的新人有用吧。

【理解Docker】Docker与Vagrant的简单区别

田浩浩 发表了文章 • 0 个评论 • 21268 次浏览 • 2015-03-25 10:42 • 来自相关话题

【编者的话】本文翻译自Quora上的一个问题:Docker和Vagrant的区别,以及我们何时使用他们。 Vagrant和Docker是两只不同的野兽。 Docker是一个由shell层和management ...查看全部
【编者的话】本文翻译自Quora上的一个问题:Docker和Vagrant的区别,以及我们何时使用他们。

VagrantDocker是两只不同的野兽。

Docker是一个由shell层和management层两部分组成的,用来构建并运行基于lxc的虚拟Linux容器。

Docker的伟大在于;它是轻量级的(因为它依赖于共享内核的Linux容器),[以及与它的分布无关]。虽然所有实例之间的内核共享(但与主机以及互相之间都是隔离的),不同实例的用户空间可以基于不同的Linux发行版本。

Vagrant则是一个奇妙的工具,它使用puppet和/或chef管理,用来自动调配多个虚拟机,并且每个都有他们自己的配置。对于它的虚拟化来说,它可以使用不同的供应商。原来默认的提供商是VirtualBox,但它现在支持更多了,包括VMware fusion,甚至amazon-ec2。

有趣的是,Vagrant现在也具有一个Docker提供商,因此您可以用vagrant来管理Docker的构建和部署。

Docker,并不限制它的灵活性 - “一切都是镜像”,你可以创建变体镜像和全栈镜像,其中每一个添加功能到前一个。管理这些会成为一个挑战。

Vagrant也有类似的挑战,因为虚拟机可能会过时,有时虚拟机可能很难找到以及更新。有一些工具比如packer和以前的veewee可以用来帮助你构建所谓的'基础'虚拟机。

我相信这些工具可以很好地在一起工作,我觉得这样的组合会在你计划的筹码中或者在你要做整个部件更换测试中,甚至是基础操作系统中大放异彩。

假设你有一个基于Centos的应用程序,并且你要切换到Ubuntu或是其他方式。假设你想完全地升级你的操作系统。

我总是说在开发测试与分级中,对于当前生产环境(包括配置)以及在任何潜在的替代生产环境中你必须要测试你的产品。您是否正在计划一个安全更新?你想更新或是切换到Java吗?

这是Vagrant和Docker出彩的地方。我希望Docker帮助您加快对多个操作环境的测试。

Docker是否一个部署应用程序到生产生产环境中的有用工具呢?这是它常见的使用情况 - 那么它可能是。然而,配置文件的本质变化,尤其是那些必须通过网络进行协调的地方,可以更好地用一个知道在网络中的其他组件的工具。

原文链接:What is the difference between Docker and Vagrant? When should you use each one? (翻译:田浩浩)
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。