Giter VIP home page Giter VIP logo

yaybu's Introduction

Yaybu

image

image

image

Yaybu is a push based configuration management tool written in Python with the goal of helping you tame your servers. You describe your infrastructure in a simple and flexible YAML-like language and Yaybu works out what needs to happen to deploy your updates.

All the documentation is available on http://docs.yaybu.com.

Yaybu is very new software, please subscribe to the yaybu-dev mailing list and let us know if you are using it, we'd love to hear from you. You can find the mailing list at http://lists.yaybu.com.

You can also find us in #yaybu on irc.oftc.net.

yaybu's People

Contributors

alex2 avatar bassdread avatar gwildar avatar jc2k avatar mitchellrj avatar offmessage avatar requires avatar tomwardill avatar winjer avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

yaybu's Issues

Checking available disk space before performing operations

Operations such as checkouts or backups may require significant disk space and running out of disk space during operation would be problematic.

We need to be able to check available disk space somehow before executing certain operations.

expansion only mode

A switch to yaybu to take the configuration file as input and to spit out, in yaml, the entire expanded configuration.

This is a useful pre-execution check, and a nice way of testing macro expansion during recipe authoring.

Missing file output

Files and users and groups sometimes seem to do stuff but do not produce output.

how can we avoid calling dpkg-reconfigure every time?

Every run of a command like this, will do this:

/-------------------------- Execute[reconfigure-exim] --------------------------
| /usr/sbin/dpkg-reconfigure -f noninteractive exim4-config

How do we not do that every time?

Logging HTTP Resource on yaybu local

A special resource /log to which POSTs can be sent as:

/log/FACILITY/SEVERITY

The body of the POST should be formatted as UTF-8 encoded text, and the Content-Type: header should be of type text/plain; charset=UTF-8

Refactor File argument to return a stream not a path

In yaybu.core.argument.File this should represent a stream and not a string, to provide complete flexibility in file handling.

Particularly so we can return a random valid file.

This is made more challenging because the file needs access to the run context. Globals may not work because they limit testability.

Finish User provider

  • Implement group and groups properties on User object
  • Add a remove provider (don't remove home dir)

write a test for encrypted files

This needs to add some stuff to the test environment when it's run:

  • a passwordless gpg key
  • a running gpg-agent that has had this key added to it
  • a file encrypted with the specified key

Yaybu remote

Invoked like this:

yaybu

So two args = remote, one arg = local

Will refuse to invoke when run as root with only one argument.

The user will need to be able to invoke yaybu-remote using sudo. The invocation on the remote side will need to use a trampoline like:

yaybu-remote --trampoline

This inspects the environment and take ssh agent details to pass as parameters:

sudo yaybu-remote --ssh-auth-sock /tmp/foo/bar

The process then has root privileges and a secure channel to the local process.

Approval feature

A switch to yaybu which requests approval before running each command, allowing the user to step through application and verify correctness at each step.

RESTful on the wire protocol

We need to support the following methods:

GET
POST

For a url of the format python://foo.bar/baz we will request:

GET /baz

The server will respond with 200, 404 or 401 or other codes as appropriate. The response headers will be exactly as for HTTP.

POST similarly will work exactly as per HTTP spec.

Write a User Resource & Provider

Must have the following resource attributes:
name - username
fullname
uid
gid
groups - list of string group names
homedir. Default is /home/$name.
password - in an hashed form
type: 'user' or 'system'. '-r' option on useradd. Warning if wrong type?. Default is user.

The following policies can be applied:
apply
lock
unlock
delete

(Check existing code and sync up on the name of the create and delete policies... apply vs create vs managed, delete vs missing vs none etc)

Write a Group Resource & Provider

Must have:

name
gid

Must have a create and delete policy. See existing code for how to name the policies. I.e. create vs apply vis managed.

Write a Special Provider

There is a special resource, but no provider for it. Create one. It's just a call to mknod...

Add Human or Prompt resource

This resource type is for scenarios where yaybu is used like a system level Buildout. There maybe actions where we still need administrators to perform manual steps. The Prompt resource and provider simply halt execution of yaybu until admin hits the continue button (enter :P)

Add a yaybu configuration stanza

The yaybu top level configuration directive should gain config sections, for example:
yaybu:
standard-binaries:
ln: /bin/ln
rm: /bin/rm
userspace: bsd

Events should persist

If transient condition interrupts a build, any pending events shouldn't be forgotten.

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.