Chef server API

Topics: Chef

Chef’s Server API can be called from Ruby with Chef::ServerAPI and a client key.

Ruby examples

require "chef/config"
require "chef/log"
require "chef/server_api"

chef_url = "https://1.2.3.4"
client_name = "foo"
client_key = "/home/user/foo.pem"

chef_api = Chef::ServerAPI.new(
    chef_url,
    {
        client_name: client_name,
        signing_key_filename: client_key
    }
)

puts chef_api.get("users/foo")
rest = Chef::ServerAPI.new(
    "https://chef.example.com/",
    {
        signing_key_filename: "/home/foo/.chef/foo.pem",
        client_name: "foo"
    }
)

cb = rest.get("/cookbooks")
versions = cb.transform_values { |d| d["versions"].first["version"] };

pp versions["freistilbox"]