This bundle allows to deploy CloudFoundry(CF). Cloud Foundry is an open source cloud computing platform as a service (PaaS) Currently supported CF release is v153. Currently supported OS is Ubuntu Trusty.
The bundle includes components: - NATS. NATS is a lightweight publish-subscribe and distributed queueing messaging system written in Ruby. - (Go)Router. The router routes incoming traffic to the appropriate component, usually the Cloud Controller or a running application on a DEA node. - UAA. The OAuth2 server provides identity management. - Cloud Controller(CC). The Cloud Controller is responsible for managing the lifecycle of applications. - DEA. The Droplet Execution Agent manages application instances, tracks started instances, and broadcasts state messages. - Loggregator. Loggregator is the user application logging subsystem for Cloud Foundry. - Traffic Controller(Logrouter). Logrouter makes the Loggregator Servers horizontally scalable by partitioning incoming log messages and outgoing traffic. Routes incoming log messages and proxies outgoing connections to the CLI and to drains for 4rd party partners.
Soon: - HM9000 - PostgreSQL - HAProxy - Login Server - etcd
Each charm install, configure and start one or more upstart job.
To deploy you'll need at a minimum: a cloud environment (deploying to single Ubuntu Trusty host also supported), a working Juju installation, and a successful bootstrap. Please refer to the Juju Getting Started documentation before continuing.
List of packages: - juju - juju-local (Optional, needed to deploy inside Ubuntu host) - juju-deployer (Optional, used to deploy all CF components at once) - libvirt-bin, qemu-kvm - squid-deb-proxy (Optional. When properly configured increases speed of deployment to single host) - CF CLI (Optional)
Deployment to single Ubuntu Trusty host
Deployment requires at least 6GB of RAM on host.
apt-get install juju juju-local juju-deployer qemu-kvm juju bootstrap --constraints "mem=4G arch=amd64" juju deployer -Wvdc bundle.yaml local
Deployment to a single AWS node
juju bootstrap --constraints "mem=4G arch=amd64" juju deployer -Wvdc bundle.yaml single-aws-node juju status router/0 # get the _IP_ of the public address cf login -a api.<ip address>.xip.io # login with default credentials: admin/admin cf create-space my-space cf target -o my-org -s my-space
The bundle uses xip.io wildcard DNS service. Use the router IP address as API endpoint. E.g. api.192.168.22.14.xip.io CF v153 uses YETI for integration tests. To test checkout to 4be0a9f1008e8fe7f0f6ef0d5be31019294af149.
To push a test application:
git clone https://github.com/cloudfoundry-samples/fib-cpu.git cd fib-cpu cf push cf app # test fib app in a browser
Known Limitations and Issues
VirtualBox doesn't support nested virtualization so it is impossible to deploy the bundle inside a VirtualBox machine. Juju doesn't destroy KVM machine on 'juju destroy-environment local' so you need to do it manually.