SlideShare a Scribd company logo
1 of 29
Cloud Foundry and OpenStack
Cloud Foundry, BOSH, and CPIs like OpenStack




Vadim Spivak
Cloud Foundry Engineering
@vadimspivak

       © 2012 VMware, Inc. All rights reserved
Agenda
    Background
    Concepts
    Contracts
    Control
    Consistency
    Components
    Cloud Provider Interface




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  2
Background
 Cloud Foundry
 BOSH
    • Release engineering
    • Lifecycle management
    • Single tool / Ease of use
    • Infrastructure portability




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  3
Concepts
    Source / Blobs
    Packages
    Jobs
    Releases
    Stemcells
    Deployments




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  4
Source / Blobs
    All deployed software
    git (submodules)
    bosh blobs
    bosh sync blobs


-rw-r--r-- 1 vspivak staff 29000 Apr 11 11:16 blob_index.yml

drwxr-xr-x 25 vspivak staff               850 Apr 16 13:07 blobs

drwxr-xr-x 3 vspivak staff                102 Apr 16 12:22 config

drwxr-xr-x 42 vspivak staff               1428 Apr 16 12:22 jobs

drwxr-xr-x 61 vspivak staff               2074 Apr 16 12:22 packages

drwxr-xr-x 61 vspivak staff               2074 Apr 11 11:16 releases

drwxr-xr-x 16 vspivak staff               544 Apr 16 13:40 src

                                                      CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                                5
Packages
    Source / blobs
    Dependencies
    Versioning
    Pre-packaging
    Packaging (compilation)




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  6
Sample Package (Redis)
release/packages/redis/spec                       release/packages/redis/packaging

 ---                                               set -e
 name: redis
 files:                                            tar zxf redis/redis-2.2.4.tar.gz
 - redis/redis-2.2.4.tar.gz
                                                   (
                                                       cd redis-2.2.4
                                                       make
                                                       make PREFIX=$BOSH_INSTALL_TARGET install
                                                   )




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                                                           7
Sample Package (Warden)
release/packages/warden/spec                               release/packages/warden/packaging

 ---                                                        set -o errexit
 name: warden
 dependencies:                                              cp -a * ${BOSH_INSTALL_TARGET}
 - ruby                                                     (
 files:                                                         set -o errexit
 - core/warden/**/*                                             cd ${BOSH_INSTALL_TARGET}/warden
 - core/common/bin/fetch_gems                                /var/vcap/packages/ruby/bin/bundle --local install --
                                                            deployment --without=development test


                                                                # Unzip base chroot from stemcell
release/packages/warden/pre_packaging
                                                                ...

 set -e
                                                            env SKIP_DEBOOTSTRAP=true SKIP_APT=true
 cd ${BUILD_DIR}
                                                            /var/vcap/packages/ruby/bin/bundle exec rake setup
 cp -a core/warden .
                                                            )

 ruby core/common/bin/fetch_gems /warden/Gemfile
 ./warden/Gemfile.lock ./warden/vendor/cache




                                                   CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                                                                              8
Jobs
   Packages
   Templates
   Versioned
   Supervision
   Monitoring
   Lifecycle hooks




                      CONFIDENTIAL

@cloudfoundry                        9
Sample Job (Redis)
release/jobs/vcap_redis/spec

 ---
 name: vcap_redis


 templates:
   vcap_redis_ctl: bin/vcap_redis_ctl
   vcap_redis.conf.erb: config/vcap_redis.conf


 packages:
   - common
   - redis




                                                 CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                         10
Sample Job (Redis)
release/jobs/vcap_redis/monit

 check process vcap_redis
   with pidfile /var/vcap/sys/run/vcap_redis/vcap_redis.pid
   start program "/var/vcap/jobs/vcap_redis/bin/vcap_redis_ctl start"
   stop program "/var/vcap/jobs/vcap_redis/bin/vcap_redis_ctl stop"
   group vcap




                                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                                  11
Sample Job (Redis)
release/jobs/vcap_redis/templates/vcap_redis_ctl

 #!/bin/bash


 RUN_DIR=/var/vcap/sys/run/vcap_redis
 ...
 case $1 in


   start)
       pid_guard $PIDFILE "VCAP Redis"


       mkdir -p $RUN_DIR
       mkdir -p $LOG_DIR
       echo $$ > $PIDFILE


       exec /var/vcap/packages/redis/bin/redis-server /var/vcap/jobs/vcap_redis/config/vcap_redis.conf
       ;;
   stop)
       kill_and_wait $PIDFILE
       ;;
   *)
       echo "Usage: vcap_redis_ctl {start|stop}”
       ;;
 esac


                                                                       CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                                                                  12
Releases
   Packages
   Jobs
   Versioned
   Self contained
   Incremental
   Published

  » bosh create release
  » bosh upload release
  » bosh delete release
  » bosh releases




                          CONFIDENTIAL

@cloudfoundry                            13
Stemcells
    VM template
    BOSH Agent
    Versioned
    VMBuilder
    IaaS Plugin

  » bosh upload stemcell
  » bosh delete stemcell
  » bosh stemcells




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  14
Deployments
    Release
    Networks
    Resource pools
    Compilation workers
    Jobs
    Update concurrency
    Properties
    Cloud properties




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  15
Sample Deployment
  ---
  name: wordpress


  release:
   name: sample
   version: 1


  compilation:
   workers: 4
   network: default
   cloud_properties:
        ram: 2048
        disk: 8096
        cpu: 2


  update:
   canaries: 1
   canary_watch_time: 60000
   update_watch_time: 30000
   max_in_flight: 4

                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  16
Sample Deployment
  networks:
   - name: default
     subnets:
     - reserved:
       - 192.0.2.2 - 192.0.2.10
       - 192.0.2.200 - 192.0.2.254
       static:
       - 192.0.2.11 - 192.0.2.100
       range: 192.0.2.0/24
       gateway: 192.0.2.1
       dns:
       - 192.0.2.245
       - 192.0.2.246
       cloud_properties:
         name: VLAN2220




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  17
Sample Deployment
  resource_pools:
   - name: infrastructure
     network: default
     size: 6
     stemcell:
       name: bosh-stemcell
       version: 0.4.6
     cloud_properties:
       cpu: 1
       disk: 8192
       ram: 4096




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  18
Sample Deployment
  jobs:
   - name: mysql
     template: mysql
     instances: 1
     resource_pool: infrastructure
     persistent_disk: 16384
     networks:
     - name: default
       static_ips:
       - 192.0.2.20


   - name: wordpress
     template: wordpress
     instances: 4
     resource_pool: infrastructure
     networks:
     - name: default
       static_ips:
       - 192.0.2.30 - 192.0.2.33



                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  19
Sample Deployment
  properties:
   wordpress:
     admin: foo@bar.com
     port: 8008
     servers:
       - 192.0.2.30
       - 192.0.2.31
       - 192.0.2.32
       - 192.0.2.33
     servername: wp.appcloud14.dev.mozycloud.com
     db:
       name: wp
       user: wordpress
       pass: w0rdpr3ss
     auth_key: random key
     secure_auth_key: random key
     logged_in_key: random key
     nonce_key: random key




                                                   CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                           20
Usage
  » bosh target http://mydirector:25555
  » bosh upload stemcell ~/stemcells/stemcell-0.5.5.tgz
  » cd sample_release
  » bosh create release
  » bosh upload release
  » bosh deployment ~/deployment/sample.yml
  » vim ~/deployment/sample.yml
  » bosh deploy




                                                 CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                         21
Contracts
 Jobs
 Releases
 Cloud Provider Interface




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  22
Control
 Repeatable deployments
 Predictable rollout




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  23
Consistency
 Dev / Staging / Production
 BOSH targets




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  24
Components
    Director / Workers
    Agent
    Monitor
    CLI
    NATS
    Redis
    Database
    Blobstore




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  25
BOSH: under the hood

                BOSH User
                                            “BOSH is deployed by BOSH”

   bosh cli                               director             healthmon
                                                                             cloudfoundry.com




               db                           redis                    nats




                                          workers              blobs
                                                                              active jobs


                                                                     agent
                                          IaaS CPI               stemcell         disk
                                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                                                         26
Cloud Provider Interface
Stemcell
create_stemcell(image, cloud_properties)
delete_stemcell(stemcell)

VM
create_vm(agent_id, stemcell, resource_pool, networks,
      disk_locality, env)
delete_vm(vm)
reboot_vm(vm)
configure_networks(vm, networks)

Disk
create_disk(size, vm_locality)
delete_disk(disk)
attach_disk(vm, disk)
detach_disk(vm, disk)
                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  27
Cloud Provider Interface
 Agent plugin
 Bootstrap
 BOSH Deployer




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                  28
Reference / Q&A
 Mailing lists
    • http://groups.google.com/a/cloudfoundry.org/group/bosh-users
    • http://groups.google.com/a/cloudfoundry.org/group/bosh-dev
 File a Bug
    • http://cloudfoundry.atlassian.net
 Browse, Fork, Contribute
    • https://github.com/cloudfoundry/bosh
    • gerrit-clone ssh://reviews.cloudfoundry.org:29418/bosh.git




                                          CONFIDENTIAL

© 2012 VMware, Inc. All rights reserved                              29

More Related Content

What's hot

Was liberty profile and docker
Was liberty profile and dockerWas liberty profile and docker
Was liberty profile and docker
sflynn073
 
Hitchhiker's Guide to Open Source Cloud Computing
Hitchhiker's Guide to Open Source Cloud ComputingHitchhiker's Guide to Open Source Cloud Computing
Hitchhiker's Guide to Open Source Cloud Computing
Mark Hinkle
 

What's hot (20)

WebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and DockerWebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and Docker
 
WebSphere and Docker
WebSphere and DockerWebSphere and Docker
WebSphere and Docker
 
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
Scalable, Available and Reliable Cloud Applications with PaaS and MicroservicesScalable, Available and Reliable Cloud Applications with PaaS and Microservices
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
 
IBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and DockerIBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and Docker
 
Was liberty profile and docker
Was liberty profile and dockerWas liberty profile and docker
Was liberty profile and docker
 
Cloud Foundry Bootcamp
Cloud Foundry BootcampCloud Foundry Bootcamp
Cloud Foundry Bootcamp
 
Cloud Foundry and OpenStack – Marriage Made in Heaven !
Cloud Foundry and OpenStack – Marriage Made in Heaven !Cloud Foundry and OpenStack – Marriage Made in Heaven !
Cloud Foundry and OpenStack – Marriage Made in Heaven !
 
As a Service: Cloud Foundry on OpenStack - Lessons Learnt
As a Service: Cloud Foundry on OpenStack - Lessons LearntAs a Service: Cloud Foundry on OpenStack - Lessons Learnt
As a Service: Cloud Foundry on OpenStack - Lessons Learnt
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)
 
[OpenStack Day in Korea] OpenStack Provisioning in 30 minutes
[OpenStack Day in Korea] OpenStack Provisioning in 30 minutes[OpenStack Day in Korea] OpenStack Provisioning in 30 minutes
[OpenStack Day in Korea] OpenStack Provisioning in 30 minutes
 
Build Your Own Open Source Cloud
Build Your Own Open Source CloudBuild Your Own Open Source Cloud
Build Your Own Open Source Cloud
 
The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)
 
Hitchhiker's Guide to Open Source Cloud Computing
Hitchhiker's Guide to Open Source Cloud ComputingHitchhiker's Guide to Open Source Cloud Computing
Hitchhiker's Guide to Open Source Cloud Computing
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2
 
AAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
AAI-1304 Technical Deep-Dive into IBM WebSphere LibertyAAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
AAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
 
Extending Build to the Client: A Maven User's Guide to Grunt.js
Extending Build to the Client: A Maven User's Guide to Grunt.jsExtending Build to the Client: A Maven User's Guide to Grunt.js
Extending Build to the Client: A Maven User's Guide to Grunt.js
 
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
 
Deploying Containers in Production and at Scale
Deploying Containers in Production and at ScaleDeploying Containers in Production and at Scale
Deploying Containers in Production and at Scale
 
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
 

Similar to Cloud Foundry and OpenStack

Similar to Cloud Foundry and OpenStack (20)

Building and Customizing CoreOS
Building and Customizing CoreOSBuilding and Customizing CoreOS
Building and Customizing CoreOS
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
 
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
 
Challenges of container configuration
Challenges of container configurationChallenges of container configuration
Challenges of container configuration
 
Custom Buildpacks and Data Services
Custom Buildpacks and Data ServicesCustom Buildpacks and Data Services
Custom Buildpacks and Data Services
 
Geode on Docker
Geode on DockerGeode on Docker
Geode on Docker
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best Practices
 
Deploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse FabricDeploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse Fabric
 
Big Data Step-by-Step: Infrastructure 1/3: Local VM
Big Data Step-by-Step: Infrastructure 1/3: Local VMBig Data Step-by-Step: Infrastructure 1/3: Local VM
Big Data Step-by-Step: Infrastructure 1/3: Local VM
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
 
VDCF Overview
VDCF OverviewVDCF Overview
VDCF Overview
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
 
Environment
EnvironmentEnvironment
Environment
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
 
VMware@Night Container and Virtualization
VMware@Night Container and VirtualizationVMware@Night Container and Virtualization
VMware@Night Container and Virtualization
 
VMware@Night: Container & Virtualisierung
VMware@Night: Container & VirtualisierungVMware@Night: Container & Virtualisierung
VMware@Night: Container & Virtualisierung
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
 
Docker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peek
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Cloud Foundry and OpenStack

  • 1. Cloud Foundry and OpenStack Cloud Foundry, BOSH, and CPIs like OpenStack Vadim Spivak Cloud Foundry Engineering @vadimspivak © 2012 VMware, Inc. All rights reserved
  • 2. Agenda  Background  Concepts  Contracts  Control  Consistency  Components  Cloud Provider Interface CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 2
  • 3. Background  Cloud Foundry  BOSH • Release engineering • Lifecycle management • Single tool / Ease of use • Infrastructure portability CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 3
  • 4. Concepts  Source / Blobs  Packages  Jobs  Releases  Stemcells  Deployments CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 4
  • 5. Source / Blobs  All deployed software  git (submodules)  bosh blobs  bosh sync blobs -rw-r--r-- 1 vspivak staff 29000 Apr 11 11:16 blob_index.yml drwxr-xr-x 25 vspivak staff 850 Apr 16 13:07 blobs drwxr-xr-x 3 vspivak staff 102 Apr 16 12:22 config drwxr-xr-x 42 vspivak staff 1428 Apr 16 12:22 jobs drwxr-xr-x 61 vspivak staff 2074 Apr 16 12:22 packages drwxr-xr-x 61 vspivak staff 2074 Apr 11 11:16 releases drwxr-xr-x 16 vspivak staff 544 Apr 16 13:40 src CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 5
  • 6. Packages  Source / blobs  Dependencies  Versioning  Pre-packaging  Packaging (compilation) CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 6
  • 7. Sample Package (Redis) release/packages/redis/spec release/packages/redis/packaging --- set -e name: redis files: tar zxf redis/redis-2.2.4.tar.gz - redis/redis-2.2.4.tar.gz ( cd redis-2.2.4 make make PREFIX=$BOSH_INSTALL_TARGET install ) CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 7
  • 8. Sample Package (Warden) release/packages/warden/spec release/packages/warden/packaging --- set -o errexit name: warden dependencies: cp -a * ${BOSH_INSTALL_TARGET} - ruby ( files: set -o errexit - core/warden/**/* cd ${BOSH_INSTALL_TARGET}/warden - core/common/bin/fetch_gems /var/vcap/packages/ruby/bin/bundle --local install -- deployment --without=development test # Unzip base chroot from stemcell release/packages/warden/pre_packaging ... set -e env SKIP_DEBOOTSTRAP=true SKIP_APT=true cd ${BUILD_DIR} /var/vcap/packages/ruby/bin/bundle exec rake setup cp -a core/warden . ) ruby core/common/bin/fetch_gems /warden/Gemfile ./warden/Gemfile.lock ./warden/vendor/cache CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 8
  • 9. Jobs  Packages  Templates  Versioned  Supervision  Monitoring  Lifecycle hooks CONFIDENTIAL @cloudfoundry 9
  • 10. Sample Job (Redis) release/jobs/vcap_redis/spec --- name: vcap_redis templates: vcap_redis_ctl: bin/vcap_redis_ctl vcap_redis.conf.erb: config/vcap_redis.conf packages: - common - redis CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 10
  • 11. Sample Job (Redis) release/jobs/vcap_redis/monit check process vcap_redis with pidfile /var/vcap/sys/run/vcap_redis/vcap_redis.pid start program "/var/vcap/jobs/vcap_redis/bin/vcap_redis_ctl start" stop program "/var/vcap/jobs/vcap_redis/bin/vcap_redis_ctl stop" group vcap CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 11
  • 12. Sample Job (Redis) release/jobs/vcap_redis/templates/vcap_redis_ctl #!/bin/bash RUN_DIR=/var/vcap/sys/run/vcap_redis ... case $1 in start) pid_guard $PIDFILE "VCAP Redis" mkdir -p $RUN_DIR mkdir -p $LOG_DIR echo $$ > $PIDFILE exec /var/vcap/packages/redis/bin/redis-server /var/vcap/jobs/vcap_redis/config/vcap_redis.conf ;; stop) kill_and_wait $PIDFILE ;; *) echo "Usage: vcap_redis_ctl {start|stop}” ;; esac CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 12
  • 13. Releases  Packages  Jobs  Versioned  Self contained  Incremental  Published » bosh create release » bosh upload release » bosh delete release » bosh releases CONFIDENTIAL @cloudfoundry 13
  • 14. Stemcells  VM template  BOSH Agent  Versioned  VMBuilder  IaaS Plugin » bosh upload stemcell » bosh delete stemcell » bosh stemcells CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 14
  • 15. Deployments  Release  Networks  Resource pools  Compilation workers  Jobs  Update concurrency  Properties  Cloud properties CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 15
  • 16. Sample Deployment --- name: wordpress release: name: sample version: 1 compilation: workers: 4 network: default cloud_properties: ram: 2048 disk: 8096 cpu: 2 update: canaries: 1 canary_watch_time: 60000 update_watch_time: 30000 max_in_flight: 4 CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 16
  • 17. Sample Deployment networks: - name: default subnets: - reserved: - 192.0.2.2 - 192.0.2.10 - 192.0.2.200 - 192.0.2.254 static: - 192.0.2.11 - 192.0.2.100 range: 192.0.2.0/24 gateway: 192.0.2.1 dns: - 192.0.2.245 - 192.0.2.246 cloud_properties: name: VLAN2220 CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 17
  • 18. Sample Deployment resource_pools: - name: infrastructure network: default size: 6 stemcell: name: bosh-stemcell version: 0.4.6 cloud_properties: cpu: 1 disk: 8192 ram: 4096 CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 18
  • 19. Sample Deployment jobs: - name: mysql template: mysql instances: 1 resource_pool: infrastructure persistent_disk: 16384 networks: - name: default static_ips: - 192.0.2.20 - name: wordpress template: wordpress instances: 4 resource_pool: infrastructure networks: - name: default static_ips: - 192.0.2.30 - 192.0.2.33 CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 19
  • 20. Sample Deployment properties: wordpress: admin: foo@bar.com port: 8008 servers: - 192.0.2.30 - 192.0.2.31 - 192.0.2.32 - 192.0.2.33 servername: wp.appcloud14.dev.mozycloud.com db: name: wp user: wordpress pass: w0rdpr3ss auth_key: random key secure_auth_key: random key logged_in_key: random key nonce_key: random key CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 20
  • 21. Usage » bosh target http://mydirector:25555 » bosh upload stemcell ~/stemcells/stemcell-0.5.5.tgz » cd sample_release » bosh create release » bosh upload release » bosh deployment ~/deployment/sample.yml » vim ~/deployment/sample.yml » bosh deploy CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 21
  • 22. Contracts  Jobs  Releases  Cloud Provider Interface CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 22
  • 23. Control  Repeatable deployments  Predictable rollout CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 23
  • 24. Consistency  Dev / Staging / Production  BOSH targets CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 24
  • 25. Components  Director / Workers  Agent  Monitor  CLI  NATS  Redis  Database  Blobstore CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 25
  • 26. BOSH: under the hood BOSH User “BOSH is deployed by BOSH” bosh cli director healthmon cloudfoundry.com db redis nats workers blobs active jobs agent IaaS CPI stemcell disk CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 26
  • 27. Cloud Provider Interface Stemcell create_stemcell(image, cloud_properties) delete_stemcell(stemcell) VM create_vm(agent_id, stemcell, resource_pool, networks, disk_locality, env) delete_vm(vm) reboot_vm(vm) configure_networks(vm, networks) Disk create_disk(size, vm_locality) delete_disk(disk) attach_disk(vm, disk) detach_disk(vm, disk) CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 27
  • 28. Cloud Provider Interface  Agent plugin  Bootstrap  BOSH Deployer CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 28
  • 29. Reference / Q&A  Mailing lists • http://groups.google.com/a/cloudfoundry.org/group/bosh-users • http://groups.google.com/a/cloudfoundry.org/group/bosh-dev  File a Bug • http://cloudfoundry.atlassian.net  Browse, Fork, Contribute • https://github.com/cloudfoundry/bosh • gerrit-clone ssh://reviews.cloudfoundry.org:29418/bosh.git CONFIDENTIAL © 2012 VMware, Inc. All rights reserved 29

Editor's Notes

  1. Concepts- src/blobs/packages/jobsContracts- cpi, job lifecycle, releasesControl:- repeatable deployments, controlled changeConsistency:- same release, multiple targets/environmentsCPI:Challenges:
  2. CF – Open PaaS, many frameworks, runtims