windows下用BOSH lite方式在单个VM中安装Cloud Foundry2.x

前言

Cloud Foundry组织的官方文档提供了一种方式,BOSH Lite,可以在单个VM上部署Cloud Foundry 2.x的环境。然而该文档高度浓缩,基本没有解释,而且文档是基于Linux宿主机来说明的。而我用的是windows环境,按照该文档操作折腾了无数遍,终于对这种方式有了较深的理解。记录和分享如下,给对CF有兴趣的朋友一些参考。

环境需求:内存8G以上;可连接internet。相信这个配置很多朋友可能实现了。

术语:
- virtualbox:虚拟化系统,支持win、linux、MacOS。
- vagrant:基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用Chef创建自动化虚拟环境。它用模板+配置来建立vbox虚机。
- bosh:大规模部署工具,分为server和client
- boshlite:一个设置好了的bosh server。在vagrant虚拟机里,
- warden:linux中的一种容器型虚机。本文中的方法用warden在同一个linux中隔离CF的各组件
- git:版本工具
- stemcell:嵌入了BOSH Agent的VM模板。BOSH Lite使用Warden CPI,所以需要Warden Stemcell。

Cloud Foundry组织的官方文档是用一台linux宿主机作为bosh client,在其上建立bosh server虚拟机,然后部署CF到这个bosh server虚机中。部署完后,boshlite(作为bosh server)是一个虚拟机,里面用warden方式建立了CF的各组件。

官方方式原理:
- 用vagrant创建一个virtualBox虚拟机,包含了bosh server
- 通过bosh client,连接bosh server,将CF代码等上传到bosh server虚拟机
- 通过这些代码和配置,在bosh server虚拟机中部署用warden隔离的CF组件

我平常的工作电脑是windows,本来想直接在windows下进行部署操作的,过程中得到以下结论:
- 用vagrant创建virtualbox的基础CF虚拟的步骤,经测试在windows下是没有问题的
- bosh client部署过程中有一些问题,到后面步骤执行不下去。主要是ruby脚本的执行问题(本来是按linux写的)
- 部署过程中有大量需要联机下载的步骤,由于网络问题,且很容易中断。这部分对理解CF的架构没什么大帮助,但花费了大量时间。

转换思路:
- 用windows下的vagrant创建bosh server的虚拟机,把bosh client也部署到这个虚机中,用这个bosh client再操作后续步骤
- 其它操作与官方文档相似
- 能离线安装的部分都预先下载下来,部署时可以加快速度

实验环境:windows7 64bit,8G以上内存
一定要64bit,32bit没测试,不知道。说是在windows里安装,其实只是用到windows下的virtualbox和vagrant。最终效果是在windows上有一个CF的虚拟机。VirtualBox支持win、linux、MacOS,所以以下大部分步骤在其它OS上应该也是可行的。

一、在windows指令下操作

- 安装virtualbox

Virtualbox [ https://www.virtualbox.org/wiki/Downloads]
安装好就行,不需要手工建虚机。这个就不说了,要了解的话网上有很多资料。

- install vagrant
Vagrant [ http://www.vagrantup.com/downloads.html]
图形化安装,也没什么好说的。

- 配置Vagrantfile,启动bosh lite (server)虚拟机
c:\> cd d:\
d:\> mkdir vagrant
d:\> cd vagrant

这个文件在boshlite的源码中,我已经把它拿出来了,并作了修改。在d:\vagrant下建立这个文件。

###
VM_MEMORY = ENV.fetch("VM_MEMORY", 4*1024).to_i
VM_CORES = ENV.fetch("VM_CORES", 4).to_i
BOX_VERSION = 217Vagrant.configure('2') do |config|config.vm.hostname='bosh-lite'config.vm.box = "boshlite-ubuntu1204-build#{BOX_VERSION}"config.vm.network :private_network, ip: '192.168.50.4'config.vm.provider :virtualbox do |v, override|#override.vm.box_url = "http://bosh-lite-build-artifacts.s3.amazonaws.com/bosh-lite/#{BOX_VERSION}/boshlite-virtualbox-ubuntu1204.box"override.vm.box_url = "file:///c:/temp/boshlite-virtualbox-ubuntu1204.box"v.customize ["modifyvm", :id, "--memory", VM_MEMORY]v.customize ["modifyvm", :id, "--cpus", VM_CORES]endend
###

其中vagrant的虚机模板最好预先下载(boshlite-virtualbox-ubuntu1204.box)。不下载的话,vagrant up时从互联网安装,特别慢。下载地址:http://bosh-lite-build-artifacts.s3.amazonaws.com/bosh-lite/#{BOX_VERSION}/boshlite-virtualbox-ubuntu1204.box
我用的是217版本,所以是http://bosh-lite-build-artifacts.s3.amazonaws.com/bosh-lite/217/boshlite-virtualbox-ubuntu1204.box。如果要用最新版本,从boshlite的源码文件中查看版本号。懒人可以到这里下载217版本。

以上的Vagrantfile文件中假设下载文件放在c:\temp\boshlite-virtualbox-ubuntu1204.box

d:\> vagrant up

最后有报错也无所谓,后面可以正常运行。

如果需要操作vagrant:
vagrant halt(停止虚拟机,注意要在Vagrantfile文件所有在目录下执行)
vagrant destroy(删除虚拟机,注意要在Vagrantfile文件所有在目录下执行。默认删除default,会有提示)
vagrant up(启动虚拟机)

- 添加路由,目的是从windows中访问CF组件时,通过这台bosh server作用路由(因为CF组件在这个bosh server中)。windows里执行下一句:
route add 10.244.0.0/19 192.168.50.4

二、在vagrant创建的linux中操作

这个boshlite的虚拟机中有很多package已经安装了,例如ruby、git,所以用它做bosh client可以减少很多步骤。

- ssh登录,127.0.0.1:2222(或192.168.50.4:22),用户名/口令为vagrant/vagrant。ssh工具就不说明了,自己去找SecureCRT或Putty。

- 改apt的source.list,改为国内源(改了之后会快很多)
修改源地址:
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ sudo vi /etc/apt/sources.list

:%s/us.arch/cn.arch/g
:wq

$ sudo apt-get update
大概有90个左右get任务。

- 安装bundler
$ sudo env PATH=$PATH gem install bundler

- 下载bosh-lite
$ cd
$ mkdir workspace
$ cd workspace

方式1:(速度还可以,推荐)

$ git clone https://github.com/cloudfoundry/bosh-lite

方式2:(用我下载的:到这里下载bosh-lite.tar)
$ tar xvf /vagrant/bosh-lite.tar

注意:linux里/vagrant目录实际就是windows下的d:\vagrant目录,这是vagrant在启动虚拟机时建立的一个共享。将需要用到的已下载文件放在d:\vagrant下,可以省去sftp到linux里的步骤和空间。以下凡是使用/vagrant/xxx的地方,都假设xxx已经放在了d:\vagrant目录下。另外必须用vagrant up启动,才有这个共享,在linux里reboot不行,需注意。

然后
$ cd bosh-lite
$ bundle
可能有一些warning,可忽略。根据网络情况,可能会花一些时间

重启一下虚机,bosh会放到路径中(在windows里用vagrant halt,然后再vagrant up)。原因是什么还未搞清楚,反正重启一下时间不长。

- 用bosh上传stemcell

$ bosh target 192.168.50.4
admin/admin

以下的latest-bosh-stemcell-warden.tgz文件我已下载, 到这里下载。(或可从http://bosh-jenkins-gems-warden.s3.amazonaws.com/stemcells/latest-bosh-stemcell-warden.tgz获得,新,但不保证可顺利使用)
$ bosh upload stemcell /vagrant/latest-bosh-stemcell-warden.tgz

- 安装spiff
$ sudo apt-get install golang

$ cd ~
$ export GOPATH=~/go
$ export PATH=$PATH:$GOPATH/bin

方式1:(比较慢)

$ go get github.com/vito/spiff

如果中间断了,再运行报错的话,rm -r ~/go/src,再运行

方式2:(文件我已下好:下载go.tar)

$ tar xvf /vagrant/go.tar

- 部署cloud foundry
$ cd ~
$ cd workspace

方式1:(很慢,可能会中断)
$ git clone https://github.com/cloudfoundry/cf-release
$ cd cf-release
$ ./update
$ git checkout v169
$ bosh create release releases/cf-169.yml  #有了cf-169.tgz,这句就不用了
$ bosh upload release releases/cf-169.tgz

方式2:(以下的文件我已做好:下载cf-release.tar,下载cf-169.tgz)
$ cd ~/workspace
$ tar xvf /vagrant/cf-release.tar
$ bosh upload release /vagrant/cf-169.tgz

然后
$ cd ~/workspace/bosh-lite
$ ./scripts/make_manifest_spiff

$ bosh deploy
部署花费比较长时间,如果虚机是在SSD硬盘上的,如果CPU比较强,速度会比较快。

-验证:
$ bosh vms
....
+------------------------------------+---------+---------------+--------------+
| Job/index                          | State   | Resource Pool | IPs          |
+------------------------------------+---------+---------------+--------------+
| api_z1/0                           | running | large_z1      | 10.244.0.138 |
| etcd_leader_z1/0             | running | medium_z1     | 10.244.0.38  |
| ha_proxy_z1/0                 | running | router_z1     | 10.244.0.34  |
| hm9000_z1/0                  | running | medium_z1     | 10.244.0.142 |
| loggregator_trafficcontroller_z1/0 | running | small_z1      | 10.244.0.10  |
| loggregator_z1/0                   | running | medium_z1     | 10.244.0.14  |
| login_z1/0                         | running | medium_z1     | 10.244.0.134 |
| nats_z1/0                          | running | medium_z1     | 10.244.0.6   |
| postgres_z1/0                      | running | medium_z1     | 10.244.0.30  |
| router_z1/0                        | running | router_z1     | 10.244.0.22  |
| runner_z1/0                        | running | runner_z1     | 10.244.0.26  |
| uaa_z1/0                           | running | medium_z1     | 10.244.0.130 |
+------------------------------------+---------+---------------+--------------+

如果显示以上内容,恭喜你,安装成功了!

如果有问题,可以先重启系统看看:
$ sudo reboot
VM重启后用bosh vms查看组件情况。各虚机启动可能比较慢,可以不断地用bosh vms查看状态。 如果出现http500错,输入以下指令:

sudo sv restart director

经过多次实验,如果顺利的话,2个小时可以完成一个单VM下的Cloud Foundry环境。有兴趣的话,可以把bosh server和CF分开,以及把CF的各组件分开,这样可以分布式部署,更好地理解Cloud Foundry部署过程。

转载于:https://my.oschina.net/u/1791917/blog/279807

windows下用BOSH lite方式在单个VM中安装Cloud Foundry2.x相关推荐

  1. Windows下通过 Uboot TFTP 方式下载和启动rt-smart 内核

    Windows下通过 Uboot TFTP 方式下载和启动rt-smart 内核 i.MX6ULL 系列处理器启动方式多样,启动时会首先执行芯片内部 Boot ROM 中的程序.Boot ROM 会根 ...

  2. windows下ffmpeg结合Nginx搭建RTMP,直播中的推流和拉流

    windows下ffmpeg结合Nginx搭建RTMP,直播中的推流和拉流 推流和拉流的概念 以及RTMP协议 在直播中,一般需要三个角色:主播,服务器,用户.主播通过推流将数据推到服务器上,而用户可 ...

  3. windows下用elasticdump导入json数据到Elasticsearch中

    一.前言 ES的备份,导入和导出相对而言比较麻烦.用logstash的话,经常会出现很多错误,而且不是很方便.用bulk也是一样的,对于咱们的json文件的结构,一些字段名都有要求,也不方便.后来和大 ...

  4. 【C 语言】Windows 下使用 gcc 编译器 ( 常用的编译器 | Qt 中的 gcc 编译器 | 独立安装 MinGW )

    文章目录 一.常用的编译器 二.使用 Qt 中的 gcc 编译器 三.独立安装 MinGW 一.常用的编译器 常用编译器 : MSVC GCC MinGW CLANG ; MSVC : 微软 Micr ...

  5. Windows 下正则表达式库 re2 在 C++ 和 Python 中的编译和使用

    相信平时在工作或学习中需要处理大量正则表达式的同志们对 google 大名鼎鼎的 re2 模块一定不陌生,但之前在网上进行搜索时,很多人说无法在 windows 系统使用该模块.本文简述了 windo ...

  6. Windows下Python3.6 64位+TensorFlow1.6.0的安装

    1.安装Python,设置环境变量 下载地址:https://www.python.org/downloads/windows/ 2.下载安装pip 下载地址:https://pypi.python. ...

  7. ubuntu 安装kali_如何在Linux,Windows,Kali,Ubuntu,Mint和示例中安装和使用exiftool

    ubuntu 安装kali exiftool is a platform independent command line and GUI application for reading, writi ...

  8. Windows下,使用dumpcpp 方式访问 COM 接口的方法

    本人在windows上进行开发,主要是使用 ATL 进行 COM开发,然后使用 MFC 作客户端调用COM接口.后来自己想写个辅助的开发工具,也想学习QT这个开发框架,所以就决定使用 QT 开发这个辅 ...

  9. Windows下动态内存分配方式http://whx.tzgt.gov.cn/newOperate/html/7/71/711/3938.html

    这里的"动态内存"包含以下两个方面的内容:   1.内存.这里的"内存"指的是进程的虚拟内存空间.在Win32环境下,每一个进程拥有独立的,大小为4G(0x00 ...

最新文章

  1. 精选一套火爆B站的硬核资源,请笑纳!
  2. Swift:print()vs println()vs NSLog()
  3. 在网站推广的道路中同样的起点,知乎豆瓣却走上了不相交的两条路
  4. 金融行业容器平台落地路径:敏捷响应业务更迭
  5. 基于SLIC分割的特征点检测
  6. Unity手游之路四3d旋转-四元数,欧拉角和变幻矩阵
  7. 【Steam】成就系统的制作及本地化
  8. socks5协议(rfc1928)
  9. matlab中单相整流器,应用Matlab仿真单相PWM整流器的一种简单方法
  10. 常犇_武汉大学管理学院2019年工商管理硕士(MBA)第三批复试通知
  11. 使用python进行收据搜集示例之feature_engineering_example
  12. 在线选毕业照片相册系统开发
  13. java扫雷布雷算法_扫雷的布雷算法
  14. 开课吧-智能物联网训练营Day2-QT布局和植物与僵尸类构造
  15. 测量CAD图纸中2点之间的距离,有哪几种好用方法?
  16. 管道(pipe)原理。
  17. 《逆袭必看》的人不懂的顶级学习方法“承重墙学习法”_java管理系统
  18. 对偶量子计算机,广义量子干涉原理及对偶量子计算机.pdf
  19. winhex脚本命令(中文版)
  20. 计算机与电视如何通过网络连接,微鲸电视如何连接网络 有线和无线WiFi两种方法图解-网络连接设置...

热门文章

  1. cocoscreator文字阴影
  2. smeal代餐和奶茶比起来怎么样?
  3. c++ string 回文串_C++刷题——2802: 判断字符串是否为回文
  4. 上决╇ф的精确打击问题
  5. 【数据结构与算法知识】—动态规划之01背包问题
  6. eBPF-2-实战之编程接口、bcc与bpftrace
  7. PDF转Word实用工具——ABBYY FineReader
  8. Android Oreo 可下载字体
  9. 《鸡毛飞上天》——写给你的观后感
  10. android8.0获取mac地址,NJS如何获取安卓手机MAC地址 安卓版本8.0以上