Follow Me Icons

 

Follow @KendrickColeman on TwitterConnect on LinkedInWatch My Videos on YouTubeFollow me on FacebookCheck Out My Projects on GitHubStay Up To Date with RSS

Search

BSA 728x90 Center Banner

From Zero to Cloud Foundry on vSphere: Part 1 - How to install MicroBOSH

It seems that the teams over at Cloud Foundry give us too much credit. I spent days trying to get Cloud Foundry up and running because of minor snags and glitches. In addition, the documentation to make this all work doesn't exist in a single place, it's all outdated, or isn't descriptive enough. Hopefully this spoon feeding series tutorial will help get you there.

 

This tutorial will go over the steps it takes to deploy Cloud Foundry on vSphere. Here are the proper steps:

Part 1 - How to install MicroBOSH
Part 2 - Deploy BOSH with MicroBOSH
Part 3 - Deploy Cloud Foundry with BOSH

 

Start off with a pristine Ubuntu image. I'm using 12.04.03. Install VMware Tools first, then lets get started adding packages.


 

1. Install these core packages. I added the mysql and postgresql development libraries to make sure headers work successfully on deployment.

sudo apt-get update
sudo apt-get -y install libsqlite3-dev genisoimage libxml2-dev libxslt-dev libpq-dev libmysqlclient15-dev git

 

2. Install RVM with the latest Ruby and Ruby 2.0.0-p481. We are going to use Ruby 2.0.0 because I read on another blog post about the deploy having issues with Ruby 2.1. I never tested it out for myself, so I'm doing this to be safe.

\curl -sSL https://get.rvm.io | bash -s stable --ruby
source /home/administrator/.rvm/scripts/rvm
rvm install 2.0.0
rvm use 2.0.0
rvm --default use 2.0.0

 

If you do ruby -v, you should see the following:

administrator@originalbosh:~$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]

 

3. Install the BOSH deployer Ruby gems

gem install bosh_cli
gem install bosh_cli_plugin_micro

 

4. Create 2 folders within the vSphere Web Client. Name them bosh_vms and bosh_templates. Move your Ubuntu image to the bosh_vms folder

 

5. For a production deployment, I would create a brand new set of datastores. Especially if you want to do persistent and non-persistent disks. Since this is a lab, I'm going to do it my way. Go to one of your datastores and create a new folder and call it bosh_disk_storage.

 

6. We have to create a resource pool. I named mine bosh. I couldn't figure out how to make this deployment work without a resource pool but it does successfully run with a resource pool mentioned. Documentation says to remove resource_pool and the : after the cluster in the micro_bosh.yml, but it didn't work for me.

 

7. We need a few different directories created for our folder structure. I found this to be easiest by creating a bosh folder at root and doing everything inside of there. Change out administrator:administrator with your ubuntu user

cd /
sudo mkdir bosh
sudo chmod 755 bosh
sudo chown administrator:administrator bosh cd bosh mkdir deployments mkdir releases mkdir stemcells

 

8. Create a new deployment. Go to the deployments directory and make a new folder called micro01. We also need to create a micro_bosh.yml file and paste the next step into it.

cd deployments
mkdir micro01
nano micro01/micro_bosh.yml

 

9. Now you should be sitting at an editor screen ready to copy and paste the pieces below (or download the yml below). The yml is very picky about indentation, so don't screw this up. A single space can break your deployment. If you want to use different datastore patterns, read here.

---
name: MicroBOSH01

network:
  ip: 192.168.50.166 #IP Address to assign to micro BOSH
  netmask: 255.255.255.0 #netmask
  gateway: 192.168.50.1 #gateway for microBOSH
  dns:
  # The micro-bosh VM has the following DNS entries in its /etc/resolv.com, allowing it to resolve, for example, IaaS FQDNs.
  - 192.168.50.5 #your internal DNS Server. add another line with a '-' for multiple entries
  cloud_properties:
    name: Servers #this is the PORTGROUP name on your vSwitch or VDS

resources: # this seems like good sizing for microbosh
   persistent_disk: 16384
   cloud_properties:
      ram: 8192
      disk: 16384
      cpu: 4
cloud:
  plugin: vsphere
  properties:
    agent:
      ntp:
        - 192.168.50.5 #NTP servers can be internal or external
        - 0.north-america.pool.ntp.org
    vcenters:
      - host: kcvcenter.kendrickcoleman.c0m #IP or FQDN of the vCenters you want microBOSH to know about
        user: kcoleman #username or do DOMAIN\username
        password: mypassword #your secret password
        datacenters:
          - name: LouisvilleLab #datacenter name
            vm_folder: bosh_vms #first folder we created
            template_folder: bosh_templates #second folder we created
            disk_path: bosh_disk_storage #the diskpath we created under the datastore
            datastore_pattern: DS411_NFS_1 #the datastore that holds the diskpath
            persistent_datastore_pattern: DS411_NFS_1 #choose a different datastore for persistant disks
            allow_mixed_datastores: true 
            clusters:
            - ShuttleXPC: #your cluster name
                resource_pool: bosh #the resource pool name

apply_spec:
  properties:
    vcenter:
      host: kcvcenter.kendrickcoleman.c0m #this is the vCenter where microBOSH will be deployed to
      user: kcoleman
      password: mypassword
      datacenters:
        - name: LouisvilleLab
          vm_folder: bosh_vms
          template_folder: bosh_templates
          disk_path: bosh_disk_storage
          datastore_pattern: DS411_NFS_1
          persistent_datastore_pattern: DS411_NFS_1
          allow_mixed_datastores: true
          clusters:
          - ShuttleXPC:
              resource_pool: bosh
    dns:
      # The BOSH powerDNS contacts the following DNS server for serving DNS entries from other domains.
      recursor: 192.168.50.5

logging:
  # If needed increase the default logging level to trace REST traffic with IaaS providers. Default is info
  level: debug
  # Default location is <deployment_dir>/bosh_micro_deploy.log
  # file :

 

10. Download some bosh stemcells. go to your stemcells directory and download some that say vSphere, we really only need 1 and I'll grab the ubuntu image. Note, your ubuntu image name and version may differ.

cd ..
cd stemcells
bosh public stemcells
bosh download public stemcell bosh-stemcell-2427-vsphere-esxi-ubuntu.tgz 

 

11. Go to the deployments directory and set the deployment.

cd ..
cd deployments
bosh micro deployment micro01

 

you should see a successful message such as

WARNING! Your target has been changed to `https://192.168.50.166:25555'!
Deployment set to '/bosh/deployments/micro01/micro_bosh.yml'

 

12. deploy our ubuntu stemcell

bosh micro deploy /bosh/stemcells/bosh-stemcell-2427-vsphere-esxi-ubuntu.tgz

 

13. type yes to continue and you should see the following output

administrator@originalbosh:/bosh/deployments$ bosh micro deploy /bosh/stemcells/bosh-stemcell-2427-vsphere-esxi-ubuntu.tgz 
Deploying new micro BOSH instance `micro01/micro_bosh.yml' to `https://192.168.50.166:25555' (type 'yes' to continue): yes

Verifying stemcell...
File exists and readable                                     OK
Verifying tarball...
Read tarball                                                 OK
Manifest exists                                              OK
Stemcell image file                                          OK
Stemcell properties                                          OK

Stemcell info
-------------
Name:    bosh-vsphere-esxi-ubuntu
Version: 2427

  Started deploy micro bosh
  Started deploy micro bosh > Unpacking stemcell. Done (00:00:03)
  Started deploy micro bosh > Uploading stemcellat depth 0 - 20: unable to get local issuer certificate at depth 0 - 20: unable to get local issuer certificate. Done (00:01:03)
  Started deploy micro bosh > Creating VM from sc-45d2f9bd-fc1e-4c5e-85e6-a33b7bbd56e3at depth 0 - 20: unable to get local issuer certificate at depth 0 - 20: unable to get local issuer certificateat depth 0 - 20: unable to get local issuer certificate. Done (00:01:08)
  Started deploy micro bosh > Waiting for the agent. Done (00:00:19)
  Started deploy micro bosh > Updating persistent disk
  Started deploy micro bosh > Create disk. Done (00:00:00)at depth 0 - 20: unable to get local issuer certificate at depth 0 - 20: unable to get local issuer certificate at depth 0 - 20: unable to get local issuer certificate

  Started deploy micro bosh > Mount disk. Done (00:00:09)
     Done deploy micro bosh > Updating persistent disk (00:00:15)
  Started deploy micro bosh > Stopping agent services. Done (00:00:01)
  Started deploy micro bosh > Applying micro BOSH specat depth 0 - 20: unable to get local issuer certificate. Done (00:00:16)
  Started deploy micro bosh > Starting agent services. Done (00:00:00)
  Started deploy micro bosh > Waiting for the director. Done (00:00:16)
     Done deploy micro bosh (00:03:22)
Deployed `micro01/micro_bosh.yml' to `https://192.168.50.166:25555', took 00:03:22 to complete at depth 0 - 20: unable to get local issuer certificate

 

14. Verify it. type bosh micro deployments and bosh micro status you should see a similar output

administrator@originalbosh:/bosh/deployments$ bosh micro deployments

+-------------+-----------------------------------------+-----------------------------------------+
| Name        | VM name                                 | Stemcell name                           |
+-------------+-----------------------------------------+-----------------------------------------+
| MicroBOSH01 | vm-4c12ab2e-1d73-4bc0-8903-354014b58fe1 | sc-45d2f9bd-fc1e-4c5e-85e6-a33b7bbd56e3 |
+-------------+-----------------------------------------+-----------------------------------------+

Deployments total: 1

 

administrator@originalbosh:/bosh/deployments$ bosh micro status
Stemcell CID   sc-45d2f9bd-fc1e-4c5e-85e6-a33b7bbd56e3
Stemcell name  bosh-stemcell-2427-vsphere-esxi-ubuntu
VM CID         vm-4c12ab2e-1d73-4bc0-8903-354014b58fe1
Disk CID       disk-60d57628-87f9-4eeb-8c82-2d9c41b3b617
Micro BOSH CID bm-c1b7927b-c59b-4434-ac99-dd0d17feb505
Deployment     /bosh/deployments/micro01/micro_bosh.yml
Target         https://192.168.50.166:25555

 

15. To login to the micro BOSH vm, type bosh target 192.168.50.166 and use admin/admin, but this isn't necessary. If you want to change the un/pw combo, with bosh create user <username>. This will over ride admin/admin.

 

Now it's set up and on to step 2!

 

Part 1 - How to install MicroBOSH
Part 2 - Deploy BOSH with MicroBOSH
Part 3 - Deploy Cloud Foundry with BOSH

Related Items