License The Little Cloud Foundry Book book is licensed under the Attribution-NonCommercial-ShareAlike 3.0 Unported license. You should not have paid for this book. Donations are totally fine, though :) You are basically free to copy, distribute, modify or display the book. However, you must attribute the book to Jonathan ``Duke'' Leto and Leto Labs LLC and not use it for commercial purposes. To be clear: if you want to read this book to make you better at doing your job, wonderful. If you would like to use the content of this book in your training program, etc., let's talk. Contact firstname.lastname@example.org You can see the full text of the license at: http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode About The Author Jonathan ``Duke'' Leto, Founder Leto Labs LLC Thanks, Y'all Many thanks to everybody that has contributed, but in particular
• Leslie Hawthorn • Troy Howard • Ingy döt Net
Latest Version The latest source of this book is available at: http://littlecf.github.com
Who Is This Book For?
This book is for three sets of people:
• Application developers wanting to run code on Cloud Foundry • Dev-Ops people who want to install, maintain and manage Cloud Foundry instances • Developers wanting to contribute, fix bugs and hack on Cloud Foundry itself
If you are an application developer, start from the beginning of this book. If you are a dev-ops person who is already familiar with running applications on CF, you can skip to the ``Installation'' chapter. Developers who are familiar with Cloud Foundry but want to know how to contribute can skip to ``Hacking on Cloud Foundry''.
Graecum est; non legitur -- ``It's Greek to me'' What is a Platform-As-A-Service (PaaS)? A PaaS is middleware between the low-level infrastructure (i.e. the actual CPUs, hard-drives, RAM, etc) and the high-level applications that run on top of the platform. The boundary between the platform and the application is clear, but the boundary between the infrastructure and the platform is still largely in flux. -------------------------Software-as-a-service -------------------------Platform-as-a-service -------------------------Infrastructure-as-a-service --------------------------While there are many different murky definitions of PaaS floating around the market currently, there are a few functions that are usually the task of PaaS: • Deploying new code to your application • Allocating application services + resources dynamically • Application health monitoring • Load balancing
What is Cloud Foundry?
The name ``Cloud Foundry'' can be used to refer to either the commercial VMware product at cloudfoundry.com or the Cloud Foundry Open Source Project. In this book, ``Cloud Foundry'' will always refer to the open source project, unless otherwise noted. Cloud Foundry consists of a large amount of Ruby code along with a small amount of C, and shell scripts that run on top of Ubuntu LTS. The C code (Warden) is used to manage Linux containers at the kernel level using a similar strategy as the Linux kernel user space program ``lxc''. CF also consists of many configuration files in YAML format. The vmc client is written in Ruby and speaks JSON to a Cloud Foundry-compatible HTTP endpoint. It is at this layer which many companies are competing for your business. Thankfully, almost all have free for non-commercial use, academic, non-profit and other free tiers, so you can ``test drive'' their flavor of the cloud before forking over your money. A common misconception is that VMWare Cloud Foundry needs to be run on VMware infrastructure. That is not the case. While VMware vCloud is supported, Amazon (and compatible APIs) are also supported out of the box. 4
Supported Languages Supported languages in mainline:
• Ruby (MRE 1.8.x, MRE 1.9.x, JRuby) • Python • PHP • NodeJS 0.4.x, 0.6.x • PHP 5.3, 5.4 (ActiveState, AppFog, paas.io) • Erlang • Java and JVM-based languages, such as Groovy