Giter VIP home page Giter VIP logo

python-deployer's Introduction

Deployer

Build Status Build Status

Framework for remote execution on Posix systems.

Important key features are:

  • Powerful interactive command line with autocompletion;
  • Interactive and fast parallel execution;
  • Reusability of your code (through inheritance);
  • Normally using SSH for remote execution, but pluggable for other execution methods.

It's more powerful than Fabric, but different from Saltstack. It's not meant to replace anything, it's another tool for your toolbox.

Documentation and tutorial

Documentation on readthedocs:

Authors

  • Jonathan Slenders (VikingCo, Mobile Vikings)
  • Jan Fabry (VikingCo, Mobile Vikings)

History

During the summer of 2011, when I was unsatisfied with some of the capabilities of Fabric, I (Jonathan) started the development of a new, interactive deployment system from scratch. The first successful deployments (of a Django project) were done only a few months later, but since then, all the code has been refactored quite a few times.

python-deployer's People

Contributors

janfabry avatar jonathanslenders 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python-deployer's Issues

Filter by parent role mapping

Take this case:

class a(A):
    class Hosts:
        app = [host0, host1]
        lb = [host2, host3]

    @map_roles(host=('app', 'lb'))
    class git(Git):
         pass

Now I can do the following to git show the load balancers:

> a git :host2 show
> a git :host3 show

However, instead of doing this individually, I would like to use the already defined lb role mapping. Something like:

 > a %lb git show

So when resolving the hosts to pass to Git, we will filter out the hosts that are not part of the lb role of the parent service. The difference is that filtering by host isolation happens after you select the service, while filtering by host mapping happens before - I think that makes sense, as the mappings come from the parent service.

Fix @dont_isolate_yet

@donโ€™t_isolate_yet

It should only be applied to a method of a ParallelNode. The API should make sure that
the `self`` object looks like an unisolated node array.

Right now this is not the case when such a method is called from another method of the same node. (which is isolated) In this case, we should covert self to an array of just one Host, in order to be API compatible.

Remote file object should be a line iterator.

We should be able to do this:

with host.open('/file') as f:
   for line in f:
     ....

Right now, people have to do something like this:

with host.open('/file') as f:
   for line in f.read().splitlines():
     ....

Thread safety in HostContext.

When multiple threads act on the same host, (That is exceptional, it doesn't happen in our own deployment, but it can happen.), and threads change the context by executing a with cd-command, this context is changed in the other threads as well.

The solution is probably to clone the hosts contexts as soon as a new thread i created, or to make it immutable, and copy it around in the Env object.

Not compatible with python3

Would be nice either this library supported python3, or at least the docs+readme mentioned that.

$ python --version
Python 3.5.2

$ python
>>> from deployer.host import SSHHost
ImportError: No module named 'StringIO'

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.