当前位置: 首页 > 工具软件 > Expect-Lite > 使用案例 >

使用bosh-lite在ubuntu环境下,在vagrant上搭建cloud foundry

顾穆冉
2023-12-01
最近一直在忙搭建cloud foundry的事情,之前也是尝试在vagrant上搭建,不过那个版本最近的更新也是一年前的了,导致遇到了很多坑,以至于到后来终于填不上了,然后又恰巧电脑的系统崩溃,就干脆决定从一个干干净净的ubuntu系统重新搭建cloud foundry。

在开始搭建之前呢,我们要先明确一下这几个概念的意思。ubuntu是什么,是操作系统,这个大家都知道。bosh-lite,是搭建工具,是bosh的简化版,我们用bosh-lite这个搭建工具来搭建cloud foundry。cloud foundry是什么,就是我们要搭建的那个平台,在这个上面,可以跑我们的程序。那么vagrant呢,这个是一个用来构建虚拟机的东西。总的来说呢,就是我们用vagrant构建了很多虚拟机,这些虚拟机上面跑的就是cloud foundry的各个组件,而我们是怎么把这些组件搭建到这么多虚拟机中呢,就是用bosh-lite这个搭建工具。那么cloud foundry的各个组件哪里来的呢,这就是我们在搭建过程中,上传的cf-xxx.yml或者cf-xxx.tgz,其中的xxx就是版本号,我们就是从这里面提取出来的cloud foundry的各个组件。那么我们用vagrant构建出来的虚拟机跑的什么系统呢,这个是stemcell,是我们在搭建过程中上传的另一个东西,下面有具体介绍。

OK,废话说完了,我们开始搭建。

1:前面提到了,系统崩溃了,大家一定要注意,安装的系统的版本。我安装的是ubuntu12.04 64位系统,桌面版的,估计server版会更好,但是我对命令行的操作不是很熟练,所以选择了desktop版本的,大家可以自由选择,推荐desktop。这个系统版本也是安装文档上明确规定的系统版本,不要试图尝试别的系统,因为会出现各种无厘头的问题,对于我们这些小菜鸟而言,这是致命的。当然,大神可以考虑,但是大神也不太可能看我这篇文章。嘻嘻。。

2:安装ruby。

我这里安装的是ruby 1.9.3 p547. 不要尝试使用sudo apt-get install ruby这种方式安装ruby。因为我在系统崩溃前也尝试过,曾经出现过因为ruby版本的问题导致的错误,我们这里就直接选择安装文档推荐的ruby版本,防止以后出现问题。安装好之后,输入ruby -v看看,是不是ruby 1.9.3 p547.如果不是的话,重新检查安装的过程。不要试图跳过问题,一定要解决问题再一步一步往下走,跳过问题是不可能成果的。不要存在侥幸心理。

3:安装bosh-cli

sudo gem install bosh-cli
在执行这个命令的过程中,我遇到了问题,有错误提示。由于当时没有截图,我这里也没有图片可以展示,但是我当时简单地记录了一下遇到的问题。大概是出现了这样的问题。
:ERROR: Loading command: install(Load Error)
cann't load such file(zlib)
ERROR: while executing gem (Name ERROR)
uninitialized constant Gem: Commands: InstallCommand
还有一个是libyaml-dev的依赖没有装好,我们这里通过阅读他的错误提示就可以看到,明显是ruby没有装好,都是一些依赖没有装好,我们这里把那些依赖都装上。

首先是libyaml-dev依赖的问题,这个好解决,直接输入sudo apt-get install libyaml-dev   就可以了。

接下来是zliblg-dev的问题,这个比较麻烦,需要多一些操作。

sudo apt-get install zliblg-dev
然后在我们安装的ruby的安装路径下面(也就是在第2步的时候下载的ruby文件的路径),找到ext文件夹下的zlib文件夹,用终端cd到这个目录。这个大家应该会吧。执行

ruby ./extconf.rb
make
sudo make install
如果这些都没有问题了,接着重新执行

sudo gem install bosh-cli
还是那句话,不要尝试跳过问题,解决问题再接着往下走。

在执行了一小会,跳过了那个问题,我以为已经成功安装了bosh-cli的时候,发现,又遇到了问题,是在安装openssl的时候遇到了问题。不要慌,这个也很简单,还是依赖的问题。我们这里安装一下libssl-dev就可以了。

sudo apt-get install libel-dev
同样地在ruby路径下
cd /ext/openssl
ruby extconf.rb
make
sudo make install
这样大概执行20分钟左右,就会提示成功了。我们就可以继续下一步了。

4:安装vagrant

桌面版的ubuntu就是好,直接从浏览器上找vagrant的官网,下载安装就可以了,和windows下没有任何区别,简单。

5:安装virtual box

vagrant是从virtual box启动的,我们还需要安装virtual box。这个和vagrant 一样,直接从图形界面下载安装就行。

6:在工作目录下建立文件夹workspace文件夹。之后的bosh-lite安装的时候应该会自动更新bosh-lite所在的路径,但是说实话,我不想尝试,因为每次安装都要好久,之前花费了我大量的时间,我不想再多花时间了,所以,干脆按照作者的路径来了(我之前看了一眼后面需要的路径,感觉是要这么干)。不知道~是在哪里?简单,输入

cd ~
pwd
就知道自己的~路径在哪里了,在这个路径下建立workspace文件夹,作为我们的工作路径。

7:下载bosh-lite

https://github.com/cloudfoundry/bosh-lite,这个应该很熟悉,就是官方的安装文档,project。我们把这个repository下载下来,在命令行里git clone,或者下载压缩包再解压,都可以。把解压的东西移到~/workspace目录下,重命名为bosh-lite。

8:启动vagrant

cd ~/workspace/bosh-lite
vagrant up
这两个命令,一个是转移到这个目录下,一个是启动vagrant。启动大概要花费4个小时,不同的网络可能有误差。如果出现问题了,先vagrant destroy,然后重新启动。我一次就成功了,很幸运。

9:set target 并且使用admin登陆

export no_proxy=192.168.50.4,xip.io
bosh target 192.168.50.4 lite
bosh login
Your username: admin
Enter password: admin
这里就是首先把target设为bosh lite director,然后用admin用户登陆。不懂得可以看官网介绍。

10:增加路由

bin/add-route
这一句的意思应该是在路由表中增加路由选项,帮助每次网络重启的时候都可用,我的理解是帮助我们访问搭建的cloud foundry。

11:下载spiff

https://github.com/cloudfoundry-incubator/spiff/releases这个网页里的spiff就是我们需要下载的spiff,这里由于网络问题,很难下载,导致我尝试了很多次才成功,我还以为我做错了呢。大家下载spiff_linux_amd64.zip这个东西,这里面就是一个spiff,可以直接用的,不用编译之类的,可能比较难下载,大家先尝试一下吧,如果下不下来的话,我下次共享一下。下载下来之后,别忘了设置环境变量。最好不要用export PATH= ..这样的方式,因为这种方式只能在同一个终端里面使用,如果关闭这个终端,就不可以了。所以建议大家修改~路径下的.bashrc文件。怎么修改,大家百度一下ubuntu修改环境变量,肯定有详细的解释。

12:clone cf-release

cd ~/workspace
git clone https://github.com/cloudfoundry/cf-release
这个 也不用解释了,大家都知道什么意思,就是把cf-release下载到workspace路径下。

13:部署cloud foundry

经过这么久的准备,终于开始部署了。官网上有个一键部署,一条命令就可以部署的,反正我是没有成功,大家可以尝试一下。我在采用那个一键部署的时候,遇到了这么几个问题,首先是出现了

not in gzip format
没有截图,大家凑活着看,我在google上查了好久,很多种说法,有的人说,是ruby版本的问题,有什么bug,我换了一个ruby版本,不可以。然后别的方式也尝试了,都不行,后来发现好像是bosh-stemcell有问题,再后来解决了这个问题,又出现了新的问题。用一键布置的时候,太慢,我算了一下,按照那个进度,要48个小时以上,因为他要从网上下东西然后再上传,很慢很慢,我就放弃了。采用手动部署。

首先是上传stemcell。

wget http://bosh-jenkins-artifacts.s3.amazonaws.com/bosh-stemcell/warden/latest-bosh-stemcell-warden.tgz
bosh upload stemcell latest-bosh-stemcell-warden.tgz
哈哈,看到这两行命令,我就笑了,不能再上当了,不知道你们要下载到什么时候。我用浏览器下载,然后上传,我觉得这样速度会更快一点,事实证明我是对的。我用浏览器打开网页 http://bosh-jenkins-artifacts.s3.amazonaws.com/bosh-stemcell/warden/latest-bosh-stemcell-warden.tgz 直接下载,等下好了,我把这个文件拷贝到某个bosh-lite目录下,再用第二个命令上传,我真是太聪明了。下载有点慢,上传不用一分钟就搞定了。如果大家不好下载,我下次和spiff一起共享一下。

其次是上传cf-release。有了stemcell的经验,我学聪明了,我直接下了一个cf-180版本的cf,我想直接上传,哈哈,老天不助我,不行。我到现在都不知道什么原因,他会报这样一个错误。

release is not valid
please fix and try again
有人说是内存不够,缓存没清除之类的,我对vagrant不熟,搞不了,本来想学习一下vagrant的,但是不知道为什么,我突然想如果不从本地传,就像官网上写的,从网上下载再上传呢,虽然慢,但是可以尝试一下。我尝试了一下,用官网的那个代码,上传一个yml文件,让他自己下载上传。里面的<version>是版本号,推荐大家用最新的。大家打开~/workspace/cf-release/releases,里面数字最大的那个yml文件的数字,就是最新的。

cd ~/workspace/cf-release
bosh upload release releases/cf-<version>.yml
失败了,没关系,肯定是网络超时,重新再次执行后面那条指令。来回来回执行了好多遍,耐心都没有了,才下载了三分之一左右,太折磨人了。这个时候,我的幸运神出现了。偶然认识的一个叫做Chance的人,教给我用shell脚本来执行。怎么做的,大家可以参考我的另一个文章,http://blog.csdn.net/u014333158/article/details/40349377,很简单的几个指令,就可以了。然后我执行了那个脚本文件,就去睡觉了,等我醒来的时候,发现已经好了,据估计,下载了大概10个小时。。这是玩命啊,如果我自己手动失败了重来,估计都疯掉了。

接着执行指令

cd ~/workspace/bosh-lite
./bin/make_manifest_spiff
我在执行过程中遇到了

Incorrect YAML structure in 'cf-manifest.yml'
expect Hash at root
最后的解决的办法是我重新下载了一下spiff,重新设置了路径,原因好像是我的spiff是从mac下下载的,然后它自动解压了还是怎么回事,导致文件出现了问题,我直接在ubuntu上下载的,就没有了问题。还有一种可能就是我这个终端没有更新一些环境变量,关闭这个终端,重新打开一个就好了。

接着是开始部署:

bosh deployment manifests/cf-manifest.yml
bosh deploy
我在部署过程中遇到了

can't find template ‘doppler’
这个问题,后来这个问题也解决了,不过是迂回地解决的。貌似是由于bosh-lite和cf-release版本不符合,我之前上传的release版本是180,不是最新的,然后后来上传的190.yml就没有问题了。就是指的上面在bosh upload release releases/cf-<version>.yml这里的版本号,大家尽量用最新的。我用的是190版本没问题,如果最新的不管用,大家可以尝试一下190.

最后,终于布置好了。至于官网下面的那个cf-acceptance-test,我是没有跑过,不是没有尝试,是出现了问题,我没有解决。那个例子很大,估计测试的比较全面,我单独跑了几个java的例子和node.js的例子,都是可以的,就没有尝试那个大的测试例子。

谢谢大家。








 类似资料: