How do I customize setup of servers or projects?

Kraftwerk allows you to overwrite most setup script templates. Define `templates` file path in ~/.kraftwerk.yaml. Any action that uses templates will look in that folder for a template first. Your own template directory must follow the same structure as kraftwerk's own.

Does kraftwerk tie in SQL and NoSQL storages?

Any persistent storage on the server manifests in kraftwerk as a service. This concept is borrowed from Silver Lining although I have bolder plans for service capabilities. Kraftwerk currently supports PostgreSQL and a generic file storage/upload zone. All you need to do is specify the name of the service under "services" in kraftwerk.yaml, skim over the `env` command output to see what environment variables your project has picked up. Then run `kraftwerk deploy`. Currently the "files" and "postgres" services are supported.

What other services are planned?

Redis and RabbitMQ. As soon as I figure out how to backup and restore per project.

Does kraftwerk support Django?

Kraftwerk loves Django but also any other framework with a WSGI runner.

What cloud providers are supported?

EC2 and Linode libcloud drivers have been tested and reported to work. I am fairly confident Rackspace would work with very little work. Please report your findings.

Is kraftewerk better suited for one thing or the other?

Yes. Kraftwerk is great for managing many small sites with simple requirements. It's an organizational tool as much as it is a timesaver. If you have few and complex sites I suspect you will want to get your hands dirty with server setup and tweaking. Kraftwerk may still be a good place to start.

What about backups and data transfer?

See dump and sync-services in commands section.

I have special setup needs. How can I customize the setup script?

Add templates: ~/mytemplates to your kraftwerk config file. Add a scripts/pre_node_setup.sh or scripts/post_node_setup.sh file with shell commands. You may also overwrite the whole scripts/node_setup.sh script. You can also keep multiple template folders for different server recipes and use these the a `--templates` hook.

How is kraftwerk different from Silver Lining?

Basically I liked Silver Lining so much I made my own. The server stack is different (no Apache, no varnish, just NGINX and gunicorn). There is no library requirement on the servers (no kraftwerk support library). I also needed something that worked with EC2 - (my pull request with Silver Lining EC2 support didn't seem to go anywhere). I'm using argparse and yaml instead of optparse and ini files. Kraftwerk is Python WSGI only.

The whole push model idea is completely ripped from Silver Lining. As is the services idea which is a great design.

Kraftwerk puts more emphasis on load and dump functionality of services. In my mind the "sync-services" is kraftwerk's money shot.

How is kraftwerk different from Puppet?

Kraftwerk is hackable. It's just a bunch of shell scripts, always run from the users computer against root SSH access. Puppet uses a special port and a client/master protocal for communication. Kraftwerk has no such client requirements. Puppet has its own language to define servers, whereas kraftwerk just uses script templates and cascading template loaders to select the correct template. Puppet uses it's own system of certificates and authority but kraftwerk uses SSH keys and agents. Puppet is a general purpose server setup tool but kraftwerk is for Python web apps only.