depl Documentation Release 0.0.1 depl contributors



Similar documents
Dry Dock Documentation

Platform as a Service and Container Clouds

CI Pipeline with Docker

DevKey Documentation. Release 0.1. Colm O Connor

Creating an ESS instance on the Amazon Cloud

Cloud Security with Stackato

BusinessObjects Enterprise XI Release 2

Stackato PaaS Architecture: How it works and why.

Magento OpenERP Integration Documentation

Security IIS Service Lesson 6

1. Product Information

Installing Oracle 12c Enterprise on Windows 7 64-Bit

Online Backup Client User Manual Linux

Monitoring Oracle Enterprise Performance Management System Release Deployments from Oracle Enterprise Manager 12c

This presentation covers virtual application shared services supplied with IBM Workload Deployer version 3.1.

RecoveryVault Express Client User Manual

Requirements Collax Security Gateway Collax Business Server or Collax Platform Server including Collax SSL VPN module

AuShadha Documentation

Configuring IBM HTTP Server as a Reverse Proxy Server for SAS 9.3 Web Applications Deployed on IBM WebSphere Application Server

Configuration Manual

Online Backup Linux Client User Manual

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE

Online Backup Client User Manual

Working with Docker on Microsoft Azure

Secure Messaging Server Console... 2

Continuous Integration In challenging environments w/ Ansible. PyCon5 Italy, Cesare Placanica

WebLogic Server 6.1: How to configure SSL for PeopleSoft Application

AklaBox. The Ultimate Document Platform for your Cloud Infrastructure. Installation Guideline

Saruman Documentation

MassTransit 6.0 Enterprise Web Configuration for Macintosh OS 10.5 Server

What is WS_FTP Server Web Transfer Module?...1 System Requirements...2. What is WS_FTP Server Web Transfer Module?

IBM Cloud Manager with OpenStack

Ansible. Configuration management tool and ad hoc solution. Marcel Nijenhof

Online Backup Client User Manual

CPE111 COMPUTER EXPLORATION

Ad Hoc Transfer Plug-in for Outlook Installation Guide

Administrator Guide. v 11

Forward proxy server vs reverse proxy server

Protect your CollabNet TeamForge site

/ Preparing to Manage a VMware Environment Page 1

Using Vagrant for Magento development. Alexander

How To Install Storegrid Server On Linux On A Microsoft Ubuntu 7.5 (Amd64) Or Ubuntu (Amd86) (Amd77) (Orchestra) (For Ubuntu) (Permanent) (Powerpoint

CHAPTER 7 SSL CONFIGURATION AND TESTING

Trend Micro Worry- Free Business Security st time setup Tips & Tricks

Extending Remote Desktop for Large Installations. Distributed Package Installs

A central continuous integration platform

Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic

DevOoops Increase awareness around DevOps infra security. Gianluca

DevShop. Drupal Infrastructure in a Box. Jon Pugh CEO, Founder ThinkDrop Consulting Brooklyn NY

Deploying the BIG-IP System with Oracle E-Business Suite 11i

Git - Working with Remote Repositories

Git Fusion Guide August 2015 Update

Installation Procedure SSL Certificates in IIS 7

Getting Started Guide

Enterprise Content Management System Monitor. How to deploy the JMX monitor application in WebSphere ND clustered environments. Revision 1.

13.1 Backup virtual machines running on VMware ESXi / ESX Server

Rally Installation Guide

Jeff Schertz MVP, MCITP, MCTS, MCP, MCSE

Cloud Services. Introduction...2 Overview...2. Security considerations Installation...3 Server Configuration...4

DIY Device Cloud Documentation

FileMaker Server 14. FileMaker Server Help

D5.4.4 Integrated SemaGrow Stack API components

Defeating Firewalls : Sneaking Into Office Computers From Home

An Introduction to Using Python with Microsoft Azure

FTP, IIS, and Firewall Reference and Troubleshooting

OpenGeo Suite for Linux Release 3.0

SOA Software API Gateway Appliance 7.1.x Administration Guide

App Orchestration 2.5

10gAS SSL / Certificate Based Authentication Configuration

Jenkins, Bhyve, and Webdriver: Continuous Integration testing on FreeNAS. Craig Rodrigues

DEPLOYMENT GUIDE. Deploying F5 for High Availability and Scalability of Microsoft Dynamics 4.0

Deployment and Monitoring. Pascal Robert MacTI

Hudson configuration manual

INSTALLATION GUIDE El Jefe 2.1 Document version: June 2014

DEPLOYMENT OF I M INTOUCH (IIT) IN TYPICAL NETWORK ENVIRONMENTS. Single Computer running I m InTouch with a DSL or Cable Modem Internet Connection

Uptime Infrastructure Monitor. Installation Guide

Icinga and Puppet Dominik Schulz Head of Datacenter and Operations Magic Internet / MyVideo

Secure Transfers. Contents. SSL-Based Services: HTTPS and FTPS 2. Generating A Certificate 2. Creating A Self-Signed Certificate 3

Smartphone Pentest Framework v0.1. User Guide

Setting Up SSL on IIS6 for MEGA Advisor

Installation Guide ARGUS Symphony 1.6 and Business App Toolkit. 6/13/ ARGUS Software, Inc.

Getting Started with the CLI and APIs using Cisco Openstack Private Cloud

Contents Set up Cassandra Cluster using Datastax Community Edition on Amazon EC2 Installing OpsCenter on Amazon AMI References Contact

Security Workshop. Apache + SSL exercises in Ubuntu. 1 Install apache2 and enable SSL 2. 2 Generate a Local Certificate 2

Creating a DUO MFA Service in AWS

The Django web development framework for the Python-aware

NetIQ Access Manager 3.2 integration

Online Backup Client User Manual Mac OS

Online Backup Client User Manual Mac OS

Deploying EMC Documentum WDK Applications with IBM WebSEAL as a Reverse Proxy

vsphere Upgrade vsphere 6.0 EN

Skip the But it Works on My Machine Excuse with Vagrant

DEPLOYMENT GUIDE DEPLOYING F5 AUTOMATED NETWORK PROVISIONING FOR VMWARE INFRASTRUCTURE

CDH installation & Application Test Report

Creating a dynamic software deployment solution using free/libre software

Investment Management System. Connectivity Guide. IMS Connectivity Guide Page 1 of 11

MuL SDN Controller HOWTO for pre-packaged VM

Citrix XenServer Workload Balancing Quick Start. Published February Edition

Transcription:

depl Documentation Release 0.0.1 depl contributors December 19, 2013

Contents 1 Why depl and not ansible, puppet, chef, docker or vagrant? 3 2 Blog Posts talking about depl 5 3 Docs 7 3.1 Installation and Configuration...................................... 7 3.2 Usage................................................... 7 3.3 Web Frameworks............................................. 9 3.4 Services.................................................. 10 3.5 The Plugin API.............................................. 10 3.6 depl Development............................................ 11 4 Resources 13 i

ii

Release v0.0.1. (Installation) depl is a pre-alpha prototype. We want to start a discussion about how developers deploy. Please tell us why you think depl is not the right tool for you! Deploying stuff is hard, managing nginx and postgres painful. Why don t we solve that problem? Simple deployments should not involve tweaking configurations that you have never dealt with before. depl solves this. Let s deploy Django to a live server! Create a file called depl.yml: - django: settings: settings_prod ssl: key: /path/to/key certificate: /path/to/cert hosts: - myhost.com And run depl deploy in that same directory. After this two step process your website will be running on https://myhost.com and http://myhost.com. It only works on Ubuntu servers for now (maybe also Debian), but will work on other systems in the future as well. depl would connect to myhost.com by SSH, install all necessary software packages and initialize your project. In our Django example this would involve installing nginx, uwsgi, postgresql (if required by Django s settings.py). It would install all Python dependencies and run on your production settings. Currently this is also working for Meteor and WSGI (which includes flask). Contents 1

2 Contents

CHAPTER 1 Why depl and not ansible, puppet, chef, docker or vagrant? Have you ever tried those tools? ansible, puppet and chef are really complicated to understand. They are made for big deployments, for large scale operation engineers. You can read the blog posts below, they explain a bit more. Generally depl solves the use case for all small deployments on your own server, those tools do something different. Docker and Vagrant are completely different tools. They make controlling VMs easy. They do not install your software. However, depl could be used in combination with either of them. 3

4 Chapter 1. Why depl and not ansible, puppet, chef, docker or vagrant?

CHAPTER 2 Blog Posts talking about depl The current state of deploying Django applications! Platform as a Service: A Market Analysis! 5

6 Chapter 2. Blog Posts talking about depl

CHAPTER 3 Docs 3.1 Installation and Configuration 3.1.1 The preferred way On any system you can install depl directly from the Python package index using pip: sudo pip install depl If you want to install the current development version (master branch): sudo pip install -e git://github.com/davidhalter/depl.git#egg=depl 3.1.2 Manual installation from a downloaded package If you prefer not to use an automated package installer, you can download a current copy of depl and install it manually. To install it, navigate to the directory containing setup.py on your console and type: sudo python setup.py install 3.2 Usage 3.2.1 depl.yml files The most important thing in your depl application is that you create a depl.yml file that contains at least your deploy settings, e.g. deploying Django could look like - django: settings: settings.prod On the command line you can use depl deploy myserver.com to deploy your project. You can also add your myserver.com to your settings. There is extensive documentation for all supported Web Frameworks and Services. 7

3.2.2 Command Line Options Generally the command line interface looks like this: Usage: depl (deploy remove) [-c=<file>] [-p=<file>] [<host>...] depl run [-c=<file>] [-p=<file>] <command> [<host>...] depl -h --help Options: -c, --config=<file> -p, --pool=<name> Deploy configuration file [default: depl.yml] Define a pool that is going to be deployed. Only the deploy and run commands are working. The remove command is already reserverd. 3.2.3 Hosts / Pools While it s possible to easily define hosts (so you don t always have to use them while using depl deploy myhost.com): - redis hosts: - myhost.com: password: "the answer is 42" - host_with_key.com # it is always prefered to use keys. It s also possible to group hosts with pools: - postgresql - django: port: 8080 hosts: - databases.com password: "pg rocks" - i_dont_like_long_urls.myhost.webservers.com id: webservers pools: db: [postgresql] hosts: [databases.com] web: [django] hosts: [webservers] I m not sure if anybody is ever going to use that, though. 3.2.4 Extend other depl modules Just use the extends identifier: - redis extends: 8 Chapter 3. Docs

- foo.yml - bar.yml Files are automatically merged - it works like multiple inheritance. 3.2.5 Custom Scripts There s two ways of writing custom scripts within depl. The first one is sh, a simple shell script (which shell depends currently on fabric): - sh: echo "Hello World" The second one would be fab. Fab basically resembles the fab files of fabric. It s writing Python with an from fabric.api import * in front. This is also the way how depl scripts work internally: - fab: with warn_only(): sudo( echo "Hello World" ) 3.3 Web Frameworks Currently we support the following frameworks/languages: Django Meteor Python WSGI & Flask & others... Support for Rails, Java, Scala and whatever else is hopefully coming soon! We need experts, to tell us at least which tools we should use to deploy. So if you want to see your web framework, just join open an issue and start a discussion! 3.3.1 General Web Options & SSL All are web frameworks (at least until now) are using nginx as a reverse proxy. This makes it possible to use a multitude of ports and frameworks on the same server. There s a general set of web options, basically every web host has these options (read the grammar file!!!): - meteor: url: localhost port: 80 # 0 to disable path:. redirect: null # https to redirect to the https port ssl: port: 443 # to disable redirect: null # http to redirect to the http port certificate: null # a file path key: null # a file path 3.3. Web Frameworks 9

As you can see, there s a way to play with the ports and specify an url (to host multiple domains on the same server). There s also a way to specify an ssl key/certificate. By default if not specified, depl generates self-signed certificates for you (obviously only working with a warning in the browser). A typical django ssl configuration with ssh might look like this: - django: redirect: https ssl: certificate: ~/.private/ssl/cert.crt key: ~/.private/ssl/ssl.key Specifying the path allows a different source and project directory. 3.3.2 Django 3.3.3 Meteor 3.3.4 Python WSGI & Flask & others... 3.4 Services Currently we support the following services: PostgreSQL Redis MongoDB We need experts to increase our services and features. So please open an issue and start a discussion! 3.4.1 PostgreSQL 3.4.2 Redis 3.4.3 MongoDB 3.5 The Plugin API There s no plugin API yet. We re focusing our efforts on improving the core. The plugin api will look something like this: plugins: - depl_my_django: path: depl_plugins/my_django - depl_sinatra # just a plugin in python path - my_django - my_sinatra 10 Chapter 3. Docs

Obviously we would still need to define the exact way of how to write that plugin. But as you can see it s probably going to be pretty easy to write a plugin (just create a new python package). 3.6 depl Development Note: This documentation is for depl developers who want to improve depl itself, but have no idea how depl works. 3.6.1 Introduction depl is currently a very small program, so it should still be very easy to understand if you read the code. depl is built on fabric and there s no way to change things without knowing a little bit about fabric. If you happen to know fabric most depl code is really easy to understand. The only thing that really deserves to be mentioned is the internal configuration verifier. There s a grammar file called grammar.yml, that is being compared to your own project-based depl.yml file. This grammar file compares all the types and if raises an error if something is wrongly formatted. 3.6.2 Testing We heavily rely on pytest for testing. Testing depl correctly involves a lot of integration tests. Therefore I recommend you to use a virtual machine for testing. Alternatively you can just create a pull request, which travis automatically tests. depl will open a lot of ports and testing might even create security holes on your computer - so really - use a VM. You can run tests like this: sudo pip install tox sudo aptitude install libpq-dev python-dev tox The goal is to keep at least 90% testing coverage. 3.6.3 Contributing See CONTRIBUTING.md. 3.6. depl Development 11

12 Chapter 3. Docs

CHAPTER 4 Resources Source Code on Github Travis Testing Python Package Index Test Coverage 13