summaryrefslogtreecommitdiff
path: root/README.rdoc
blob: 1c00dcb445c5cff7dc0ad0b817bd0ce35c16dfcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
== Chef Zero

= DESCRIPTION:

chef-zero is a simple, easy-install, in-memory Chef server that can be useful
for Chef client testing and chef-solo-like tasks that require a full Chef
server.  It IS intended to be simple, Chef 11 compliant, easy to run and fast
to start. It is NOT intended to be secure, scalable, performant or persistent.
It does NO input validation, authentication or authorization (it will not
throw a 400, 401 or 403).  It does not save data, and will start up empty each
time you start it.

= INSTALLATION:

This server can be installed as a Ruby Gem.

    gem install chef-zero

You can also copy the source repository and install it using +rake install+.

= TEST SERVER USAGE:

One of chef-zero's primary uses is as a small test server for people writing and
testing clients.  To bring it up, simply do:

    require 'chef_zero/server'
    server = ChefZero::Server.new(:port => 8889)
    server.start

To bring it up in the background, do:

    thread = Thread.new { server.start }

To kill the background server, do:

    thread.stop

= COMMAND LINE USAGE:

To simply run the server, you can just type +chef-zero+ after installing and you
will have a fully functional (empty) Chef Server running.

To try it out, go into the +chef-zero/playground+ directory and run knife.  It
will behave the same as a normal Chef server, and all normal knife commands will
work (show, list, delete, from file, upload, download, diff ...).  For example,
with +knife-essentials+ (or Chef 11) you can upload everything in the repo:

    chef-zero/playground> knife upload .
    Created remote/cookbooks/blah
    Created remote/cookbooks/blork
    Created remote/data_bags/foo/
    Created remote/data_bags/foo/bar.json
    Created remote/data_bags/foo/baz.json
    Created remote/data_bags/foo/blarghle.json
    Created remote/data_bags/foom/
    Created remote/data_bags/foom/x.json
    Created remote/data_bags/widdle/
    Created remote/data_bags/widdle/blank.json
    Created remote/data_bags/widdle/wow.json
    Created remote/environments/desert.json
    Created remote/environments/rainforest.json
    Created remote/environments/semi_arid_plains.json

    chef-zero/playground> knife environment list
    _default
    desert
    rainforest
    semi_arid_plains

To use it in your own repository, create a +knife.rb+ like so:

    chef_server_url "http://127.0.0.1:8889"
    node_name "stickywicket"
    client_key "path_to_any_pem_file.pem"

And use knife like you normally would.

Since Chef Zero does no authentication, any .pem file will do.  The client just
needs something to sign requests with (which will be ignored on the server).