Giter Club home page Giter Club logo

tsuru's Introduction

tsuru

Build Status Go Report Card

What is tsuru?

tsuru is an extensible and open source Platform as a Service (PaaS) that makes application deployments faster and easier. With tsuru, you don’t need to think about servers at all. As an application developer, you can:

  • Write apps in the programming language of your choice
  • Back apps with add-on resources such as SQL and NoSQL databases, including memcached, Redis, and many others
  • Manage apps using the tsuru command-line tool

Links:

Popular platforms supported:

Quick Start

Getting tsuru-client

Download the latest release for your platform at: https://github.com/tsuru/tsuru-client/releases/

Example for release 1.1.1 and OS X:

$ curl -sSL https://github.com/tsuru/tsuru-client/releases/download/1.1.1/tsuru-1.1.1-darwin_amd64.tar.gz | tar xz

Install Guides

Testing

If everything's gone well you have the tsuru running in a Kubernetes Cluster. Call app list to see tsuru working, this command needs to return one app called tsuru-dashboard.

$ tsuru app list

tsuru's People

Contributors

aitherios avatar andrestc avatar andrewsmedina avatar arthurcgc avatar bardusco avatar carlosroguerra avatar cezarsa avatar dcarley avatar dgryski avatar diego-araujo avatar dnsaoki2 avatar evandroflores avatar flavianmissi avatar fsouza avatar gauperes avatar gfleury avatar ggarnier avatar guestisp avatar guilhermebr avatar joaopaulovieira avatar lucaspwbx avatar marcelometal avatar morpheu avatar msabramo avatar nettoclaudio avatar pedrokiefer avatar raulgbrmf avatar tarsisazevedo avatar tcarreira avatar wpjunior avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tsuru's Issues

REST API

We need a rest api that responds to to cloudfoundry's api.

cmd: hide password

user create and login commands display the password in plain-text mode. We should hide this:

How is it today:

% glb user create [email protected] 123 

How it should be:

% glb user create [email protected]
Password: 
User created

The password should not appear, as in shell login.

cmd: add support to multiple targets

it should be possible to change the default target via the command line:

% glb target
tsuru.plataformas.glb.com
% glb target my.server.me
% glb target
my.server.me

The target can be stored in the $HOME/.tsuru_target file (as in CloudFoundry).

Should record unit informations

And every app/service should have an associated unit. Also, the collector should update the unit instead of the app/service itself.

cmd: env-set and env-get

Should have a command to export (write in /etc/profile) and retrieve environment variables in app/service's units.
Maybe a bulk export would also be good, something like pass a file to env-set.

if the target is down, cmd crashes

./main login [email protected]
Password: 

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x10 pc=0x1c676]

goroutine 1 [running]:
github.com/timeredbull/tsuru/cmd.(*Client).Do(0xf84008b388, 0xf84009b000, 0x0, 0x0, 0x0, ...)
    /Users/f/gocode/src/github.com/timeredbull/tsuru/cmd/client.go:28 +0xf2
github.com/timeredbull/tsuru/cmd.(*Login).Run(0xf84008b348, 0xf8400788c0, 0xf840071c90, 0xf84008b388, 0x0, ...)
    /var/folders/cb/8tl48y251cb56sfkfnj7gvmh0000gq/T/go-build687700959/github.com/timeredbull/tsuru/cmd/_obj/auth.cgo1.go:122 +0x2fd
github.com/timeredbull/tsuru/cmd.(*Manager).Run(0xf840078500, 0xf840077bf0, 0x100000001, 0xf84008b378)
    /Users/f/gocode/src/github.com/timeredbull/tsuru/cmd/cmd.go:46 +0x484
main.main()
    /Users/f/gocode/src/github.com/timeredbull/tsuru/cmd/main.go:22 +0x36c

goroutine 2 [syscall]:
created by runtime.main
    /Users/f/lib/go/src/pkg/runtime/proc.c:221

Here is the broken code: https://github.com/timeredbull/tsuru/blob/master/cmd/client.go#L27

In Go, a _ is a code smell :)

intermitent test

The tests in gitosis package are intermitent, because of the agent. The agent concurrently writes to gitosis.conf and commits and pushes to the repository, and there is a race.

Before any action, I prefer to enumerate the possible actions:

  • separate the agent in another package, that writes to another git repository
  • synchornize writes to the git repository
  • improve tests to not write in the git repository, running faster and avoiding races

I prefer the third option, but I'm not sure yet how to do this.

Deploy only reloads app

Tsuru be more flexible after deploying an app, sometimes the user only needs a reload, sometimes, he/she needs a restart.
We should provide a way to the user decide whether he/she wants a reload or a restart an app after deploying.

cmd: remove team

It should be possible remove a team via command line:

$ glb team remove teamname
Team "teamname" remove with success!

Should deal with euca2ools errors

Tsuru is always expecting a happy ending, but if something goes wrong, it simply ignores the error and returns success to the end user. We should fix this.

cmd: run

the user should be able to run a command locally in the app unit.

.tsuru_token

Theres a error when trying to create a user.

open ~/.tsuru_token: no such file or directory

Should not check this file at this moment.

cmd: remove user

It should be possible remove a user via command line:

$ glb user remove username
User "username" removed with success!

Makefile

Um Makefile/Rakefile para o projeto.

update all teams with new apps/keys

When a user is in two teams and he/she creates an app, tsuru should add a writable option in both teams, but it only created it to the last added team.
It also happens when adding a key.

cmd/tsuru: info

it should be possible see the information of an app. Like name, state, ip and teams.

cmd: bind service

It should be possible bind an app with a service via command line

cmd: when a subcommand does not exist, manager panics

% tsuru env something-that-does-not-exist
panic: interface conversion: *cmd.Env is not cmd.Command: missing method Run

goroutine 1 [running]:
github.com/timeredbull/tsuru/cmd.(*Manager).Run(0xf84009c640, 0xf840077020, 0x100000001, 0xf84008b008)
    /Users/f/gocode/src/github.com/timeredbull/tsuru/cmd/cmd.go:47 +0x43f
main.main()
    /Users/f/gocode/src/github.com/timeredbull/tsuru/cmd/main.go:23 +0x34d

goroutine 2 [syscall]:
created by runtime.main
    /Users/f/lib/go/src/pkg/runtime/proc.c:221

goroutine 3 [chan receive]:
github.com/timeredbull/tsuru/api/app.collectEnvVars()
    /Users/f/gocode/src/github.com/timeredbull/tsuru/api/app/env.go:120 +0x43
created by github.com/timeredbull/tsuru/api/app.init·1
    /Users/f/gocode/src/github.com/timeredbull/tsuru/api/app/env.go:42 +0x1f

goroutine 4 [chan receive]:
github.com/timeredbull/tsuru/api/app.runCommands()
    /Users/f/gocode/src/github.com/timeredbull/tsuru/api/app/env.go:47 +0x4c
created by github.com/timeredbull/tsuru/api/app.init·1
    /Users/f/gocode/src/github.com/timeredbull/tsuru/api/app/env.go:43 +0x2d

Collector doesn't update vm's state when vm is terminated

When we manually terminate an app's vm, its state is not updated by collector because when it runs juju status the vm is not in the retrieved list. Collector should be smart enough to see that, and mark the vm with a different state.

The state may be something like deleted or terminated.

Improve output of CloneRepositoryHandler

This handler only return success or the error's code, should return the git clone's output, this way the user can have a better understanding of what is really happening.

when deploying, Python warnings pollute the output

% git push [email protected]:xikin.git master
Initialized empty Git repository in /mnt/repositories/xikin.git/
Counting objects: 45, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (43/43), done.
Writing objects: 100% (45/45), 6.42 KiB, done.
Total 45 (delta 20), reused 0 (delta 0)
remote:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
remote:                                  Dload  Upload   Total   Spent    Left  Speed
remote: 103  1558    0  1558    0     0    277      0 --:--:--  0:00:05 --:--:--   433
remote: /usr/lib/python2.6/site-packages/juju/providers/ec2/files.py:8: DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sha
2012-06-27 11:24:24,524 WARNING ssl-hostname-verification is disabled for this environment
2012-06-27 11:24:24,524 WARNING EC2 API calls not using secure transport
2012-06-27 11:24:24,524 WARNING S3 API calls not using secure transport
2012-06-27 11:24:24,525 WARNING Ubuntu Cloud Image lookups encrypted but not authenticated
2012-06-27 11:24:24,526 INFO Connecting to environment...
2012-06-27 11:24:25,147 INFO Connected to environment.
2012-06-27 11:24:25,252 INFO Coremote:  Initialized empty Git repository in /home/application/current/.git/
To [email protected]:xikin.git
 * [new branch]      master -> master

Should be possible to run pre/pos deploy commands

The user should have a way to run commands right before restart runs on the app's unit, and right after it.
The app should have an app.conf file, with two sections:

pre-restart:
    scripts/submodules.sh
pos-restart
    scripts/dunno.py

These paths points to executable files, that should be versioned with the app (as the app.conf), and should be executed in the described moments.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.