Deis is a Django/Celery API server, Python CLI and set of Chef cookbooks that combine to provide a Heroku-inspired application platform for public and private clouds. Your PaaS. Your Rules.
What is Deis?
Deis is an open source PaaS that makes it easy to deploy and scale LXC containers and Chef nodes used to host applications, databases, middleware and other services. Deis leverages Chef, Docker and Heroku Buildpacks to provide a private PaaS that is lightweight and flexible.
Deis comes with out-of-the-box support for Ruby, Python, Node.js, Java, Clojure, Scala, Play, PHP, Perl, Dart and Go. However, Deis can deploy anything using Heroku Buildpacks, Docker images or Chef recipes. Deis is designed to work with any cloud provider, although only EC2 is currently supported.
Choose your hosting provider configuration. Define a formation with your own proxy and runtime layers. Retain full root access to every node. Manage your platform with a private Deis controller.
Scale nodes and containers with a single command. Node provisioning, container balancing and proxy reconfiguration are completely automated.
100% Open Source
Free, transparent and easily customized. Join the open-source PaaS and DevOps community by using Deis and complimentary projects like Docker, Chef and Heroku Buildpacks.
Before you get started, read about Deis core concepts so you can answer:
- What is a Formation and how does it relate to an application?
- What are Layers and Nodes, and how do they work with Chef?
- How does the Build, Release, Run process work?
- How do I connect a Formation to backing services?
Follow the steps below to install your own Deis platform on EC2. To complete the installation process, you will need Git, RubyGems, Pip, the Amazon EC2 API Tools, EC2 Credentials and a Chef Server with a working Knife client.
Please note: Deis is still under active development. It should not yet be used in production.
1. Clone the Deis Repository
$ git clone https://github.com/opdemand/deis.git $ cd deis
2. Configure the Chef Server
Deis requires a Chef Server. Sign up for a free Hosted Chef account if you don’t have one. You’ll also need a Ruby runtime with RubyGems in order to install the required Ruby dependencies.
$ bundle install # install ruby dependencies $ berks install # install cookbooks into your local berkshelf $ berks upload # upload cookbooks to the chef server
3. Provision a Deis Controller
deis-controller node exists on the Chef server, you must log in to the WebUI add deis-controller to the
admins group. This is required so the controller can delete the node and client records for any nodes bootstrapped during future
4. Install the Deis Client
$ sudo pip install deis $ deis register http://my-deis-controller.fqdn username: myuser password: email: firstname.lastname@example.org Registered myuser Logged in as myuser Found the following SSH public keys: 1) id_rsa.pub Which would you like to use with Deis? 1 Uploading /Users/myuser/.ssh/id_rsa.pub to Deis... done Found EC2 credentials: AKIAJTVXXXXXXXXXXXXX Import these credentials? (y/n) : y Uploading EC2 credentials... done
5. Create & Scale a Formation
Find an application you’d like to deploy, or clone an example app. Change into the application directory and use
deis create to initialize a new formation in a specific EC2 region. Use the
deis layers:scale command to provision nodes that will be dedicated to this formation.
$ cd <my-application-repo> $ deis create --flavor=ec2-us-west-2 Creating formation... done, created peachy-waxworks Git remote deis added Creating runtime layer... done Creating proxy layer... done Use deis layers:scale proxy=1 runtime=1 to scale a basic formation $ deis layers:scale proxy=1 runtime=1 Scaling layers... but first, coffee! ...done in 232s Use `git push deis master` to deploy to your formation
6. Deploy your Application
git push deis master to deploy your application. Deis will automatically deploy Docker containers and configure Nginx proxies to route requests to your application. To learn more, use
deis help or browse the documentation.
$ git push deis master Counting objects: 146, done. Delta compression using up to 8 threads. Compressing objects: 100% (122/122), done. Writing objects: 100% (146/146), 21.54 KiB, done. Total 146 (delta 84), reused 47 (delta 22) Node.js app detected -----> Resolving engine versions Using Node.js version: 0.10.15 Using npm version: 1.2.30 ... -----> Building runtime environment -----> Discovering process types Procfile declares types -> web -----> Compiled slug size: 4.7 MB Launching... done, v2 -----> peachy-waxworks deployed to Deis http://ec2-54-214-143-104.us-west-2.compute.amazonaws.com ... $ curl -s http://ec2-54-214-143-104.us-west-2.compute.amazonaws.com Powered by Deis!
Deis rests on the shoulders of leading open source technologies:
License and Authors
- Author:: Gabriel Monroy email@example.com
- Author:: Matt Boersma firstname.lastname@example.org
- Author:: Ben Grunfeld email@example.com
Copyright 2013, OpDemand LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.