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


前两天使用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就丢失了,之后就会出现上面的问题,感觉这是个坑,希望对想我一样的新人有用吧。

3 个评论

没错,我有时候也会遇到。 还有种可能性会遇到这个问题的原因就是:vbox的版本和vagrant不符合。
在 StackOverflow 看到过类似的问题:http://stackoverflow.com/questions/24867490/coreos-authentication-failure-on-vagrant-up
根据这个思路,也许下面的命令也会有帮助:
$ ssh-add $(pwd)/.vagrant/machines/core-01/virtualbox/private_key
$ vagrant ssh core-01 -- -A
执行第一个命令前检查一下 ${SSH_AUTH_SOCK} 环境变量是否已经存在,如果没有,还需要先执行 eval `ssh-agent -s`
我也遇到过,在BIOS 中设置支持虚拟化就可以了

要回复文章请先登录注册