使用Bosh在OpenStack上部署CloudFoundry碰到的问题

1、部署Micro Bosh碰到的问题 1.1、Micro Bosh虚拟机上执行micro bosh部署命令时出错:

bosh micro deploy /var/vcap/stemcells/micro-bosh-stemcell-openstack-kvm-0.8.1.tgz

报错信息:

Could not find Cloud Provider Plugin: openstack

这其实不是真正的报错信息,可以查看抛出该异常的代码文件查看,文件位置:/usr/local/rvm/gems/ruby-1.9.3-p374/gems/bosh_cpi-0.5.1/lib/cloud/provider.rb

将该代码块的异常处理去掉,改为如下,暴露出真正的异常:

module Bosh::Clouds
  class Provider

def self.create(plugin, options)
      require "cloud/#{plugin}"
      Bosh::Clouds.const_get(plugin.capitalize).new(options)
    end

end
end

异常信息:

Failed to load plugin
gems/bosh_deployer-1.4.1/lib/bosh/cli/commands/micro.rb: Unable to activate
fog-1.10.1, because net-scp-1.0.4 conflicts with net-scp (~> 1.1)

可以看出,这是由于gem包冲突造成的错误,查看gem包依赖,可以看出,Bosh的Gem包bosh_cli和bosh_deployer都对fog包和net-scp包有依赖,但是版本要求不一样,所以导致了该错误。

解决办法:

卸载掉bosh_cli、bosh_deployer、fog、net-scp的所有包,然后使用bundle方式进行安装

gem uninstall bosh_cli
gem uninstall bosh_deployer
gem uninstall fog
gem uninstall net-scp

在根目录下新建Gemfile文件,增加需要安装的Gems

source "https://RubyGems.org"
gem "bosh_cli"
gem "bosh_deployer"

保存后执行

#安装Gems
bundle install
#验证Bosh Micro
bundle exec bosh micro

问题解决,重新执行部署Micro Bosh的命令

经验总结:有的时候报错的真正原因会被源码封装,以至于从日志中得到的错误信息不准确,在Google中找不到任何解决办法,通过深入阅读并修改源码后,暴露出真正的异常原因,找到并解决问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/08f6edbdb24f0628539dadae1d2eefc5.html