前言:
最近由于项目需要,建立了一个基于cloudfoundry的PaaS云,由于基于bosh安装的cloudfoundry官方代码中未提供对python的支持,所以就必须自己实现了,也就有了本文, 至于使用Django的用户,请参照添加python的方法添加Django.
1.在blobstore中添加python的安装包
这里,我选择了建立一个本地的simple_blobstore_proxy.
code: https://github.com/yudai/simple_blobstore_proxy
启动simple_blobstore_proxy:
bundle install bundle exec ./bin/simple_blobstore_server
向本地blobstore中添加python的安装包,执行以下脚本以完成添加
require 'base64' require 'httpclient' require 'multi_json' require "atmos" require "uri" file_path = '/Users/leon/cf-release/final_builds/packages/python/1/python/python-2.7.4.tgz' #修改成你的文件path SHARE_URL_EXP = '1893484800' @atmos_options = {:unsupported => true} @atmos_options[:uid] = 'bb6a0c89ef4048a8a0f814e25385d1c5/user1' @atmos_options[:url] = 'http://10.0.0.211:9999' @atmos_options[:secret] = 'secret' @endpoint = 'http://10.0.0.211:9999' @bucket = '' @client = HTTPClient.new @bucket = @options && @options[:bucket] || "resources" @headers = {} user = 'admin' password = 'admin' if user && password @headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{password}").strip end def url(id=nil) ["#{@endpoint}/#{@bucket}", id].compact.join("/") end def create_file(id, file) @client.post(url(id), {:content => file}, @headers).content end def encode_object_id(object_id) hash_string = "GET\n/rest/objects/#{object_id}\n#{@atmos_options[:uid]}\n#{SHARE_URL_EXP}" secret = Base64.decode64(@atmos_options[:secret]) sig = HMAC::SHA1.digest(secret, hash_string) signature = Base64.encode64(sig.to_s).chomp json = MultiJson.encode({:oid => object_id, :sig => signature}) URI::escape(Base64.encode64(json)) end file = File.open(file_path,'r:utf-8') oid = create_file(nil, file) puts oid puts Digest::SHA1.file(file_path).hexdigest puts file.size
2.修改本地cf的final.yml使用本地blobstore
--- final_name: appcloud min_cli_version: 1.0.3 blobstore: provider: simple options: endpoint: http://10.0.0.201:9999 #这里填写simple_blobstore_server的IP blobstore_options: deprecated
创建private.yml
--- blobstore: simple: user: admin password: admin
blob.yml中添加
python/python-2.7.4.tgz: object_id: f6ffff96-a78a-4bd2-b86d-45b7e28e73e0 sha: 2283858b832fc391b8e96bb600e0b39e52ae97bd size: 14489063
cloud_controller中添加python
cf-release/jobs/cloud_controller/templates/runtimes.yml
--- python27: description: Python 2.7.4 version: 2.7.4 executable: /var/vcap/packages/dea_python27/bin/python2.7 staging: /var/vcap/packages/ruby/bin/ruby stage version_output: 2.7.4 version_flag: "python -c 'import platform; print platform.python_version()' environment: PATH: /var/vcap/packages/ruby/bin:/var/vcap/packages/dea_python27/bin:/var/vcap/packages/imagemagick/bin:$PATH LD_LIBRARY_PATH: '/var/vcap/packages/mysqlclient/lib/mysql:/var/vcap/packages/sqlite/lib:/var/vcap/packages/libpq/lib:/var/vcap/packages/imagemagick/lib:$LD_LIBRARY_PATH' status: name: current series: python27 category: python
cf-release/jobs/cloud_controller/spec
- dea_python27
cf-release/jobs/dea/spec
- dea_python27
cf-release/packages中添加dea_python27目录
dea_python27目录中创建文件packaging , spec
packaging
# abort script on any command that exit with a non zero value set -e tar xzf python/python-2.7.4.tgz ( cd Python-2.7.4 ./configure --prefix=${BOSH_INSTALL_TARGET} make make install )
spec
--- name: dea_python27 dependencies: files: - python/python-2.7.4.tgz
修改src
cf-release/src/dea/config/dea.yml中添加
python27: executable: /var/vcap/packages/dea_python27/bin/python2.7#python version: 2.7.4 version_flag: python -c 'import platform; print platform.python_version()' environment:
4.创建修改后的release,上传,部署
bosh create release –force bosh upload release dev_releases/envcloud-131.1.yml bosh deployment new-cf.yml bosh deploy
相关推荐
使用BOSH进行Cloud Foundry的生产环境部署 使用BOSH进行Cloud Foundry的生产环境部署
由其定义可以看出,虽然BOSH的诞生出自cloudfoundry的部署难题,但BOSH能做的不只是部署cloudfoundry这一个产品。别的分布式系统只要提供给bosh一个release,BOSH一样可以做到系统的部署和生命周期的管理。所以,...
用BOSH自动部署大规模 云平台Cloud Foundry: Cloud Foundry云平台简介 Cloud Foundry架构 Cloud Foundry部署模型 BOSH工作原理 用BOSH自动化部署Cloud Foundry 用BOSH实现Cloud Foundry弹性 BOSH应用实例
详细介绍了Cloud Foundry的BOSH各个部分和功能。
CF Nise Installer 是基于 Nise BOSH 和 Vagrant 实现的 Cloud Foundry v2 的安装程序。 环境要求: Vagrant 1.4 or later Ruby 1.9.3-p484 8GB free HDD space 2GB free memory
该文档来自于Docker Meetup深圳站,华为蒙泽超带来了题为“使用CloudFoundry 的BOSH管理Docker的集群”的演讲。
cloud foundry 大规模部署(bosh)及平台运营完整中文手册
为fi内容安装cloudfoundry PaaS 2. 它使用新域和密码重新配置预安装的 Cloud Foundry 版本。 它嵌入了同样经过重新配置的 Web 管理控制台。用法FI-Content 上下文(使用预先打包的图像) 使用 fc2-paas-template ...
cf-on-docker 尝试在 Docker 上完全运行 Cloud Foundry(无 BOSH) 每个文件夹都包含每个 Cloud Foundry 组件的 Dockerfile,以及每个组件所需的任何配置文件。 Fig 最终会被用来定义每个容器之间的依赖关系。 这个...
Log Found for Cloud Foundry 关于 ... 或者(如果已经熟悉这些产品和概念)转到“部分,以了解Logsearch-for-cloudfoundry添加到Logsearch工具中的主要功能。 目录 Kibana保存的对象 可以将Kibana部署
Cloud Computing — Introduction to Cloud Foundry 分析了 router、controller、service、health manager、dae、messaging、bosh 等
Cloud Foundry v2 Jenkins 构建系统手册本说明书的目的是为 Cloud Foundry v2 和 BOSH 创建一个 Jenkins 构建和测试环境。 越来越多的人使用 BOSH 和 Cloud Foundry 进行黑客攻击,因此需要一个良好的环境来开发、...
BOSH文档:bosh.io/docs用于安装和使用指南docs /开发人员文档目录Slack:#bosh在https://slack.cloudfoundry.org邮件列表:cf-bosh,用于询问BOSH使用情况BOSH Cloud Foundry BOSH是一个用于发布工程,部署,生命...
基础概念和体系结构 :适用于Cloud Foundry开发人员和用户的cf CLI指南:针对开发人员将应用程序推送到Cloud Foundry的逐步说明和参考资料 :有关使用BOSH的操作员在AWS,vSphere,vCloud,OpenStack等上部署Cloud ...
Cloud Foundry CAPI Bosh版本 这是了Cloud Foundry的 。 CI : 组件 :Cloud Foundry的主要API。 :触发定期作业。 :为Cloud Controller执行后台作业。 :云控制器的可选独立blobstore。 :将Cloud ...
PULL REQUESTS WELCOME 这个简单的服务代理旨在演示如何创建一个服务代理来管理不受 BOSH 与 cloudfoundry 管理的服务。 ##配置这是一个应用程序,它遵循它的许多原则。 代理需要两个连接到您的 oracle 数据库。 ...
这是发布版本,用于与Cloud Foundry一起部署 。 是为,其背后的思想是使人们能够从Cloud Foundry环境中的所有应用程序实例中获取指标。 用户只需调用/v1/apps/[org_name]/[space_name]/[app_name]/metrics即可检索...
启动和运行Iron Foundry的主要步骤是: 安装和Cloud Foundry 在Dev机器上构建Iron Foundry版本在Windows Server 2012上安装Iron Foundry 配置BOSH以使用Iron Foundry 本自述文件的末尾还有一个疑难解答部分,以帮助...
# Cloudfoundry-gemfire 在使用此演示应用程序之前,假设您已: 创建了一个 CloudFoundry 环境。 例如,使用这个 使用 BOSH 部署 Gemfire 和 Gemfire Service Broker。 看到这个: : 运行示例应用程序假设创建了...
Cloud Foundry - 适用于 AWS 的 BOSH 部署存根生成器介绍此工具用于在您运行 bosh aws bootstrap micro 后生成 bosh 存根文件。 它自动生成初始存根。 对存根进行正确更改并生成安全密码很烦人。 这个 ruby 脚本...