Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Tree: 95ddea50f4
Fetching contributors…

Cannot retrieve contributors at this time

49 lines (49 sloc) 12.928 kB
"name": "chef-server",
"description": "Installs and configures Chef Server",
"long_description": "IMPORTANT CHANGES\n=================\n\nPlease note the following important changes to the Chef cookbook(s) that coincide with the 0.10 release of Chef.\n\nCookbook Renaming\n-----------------\n\nThe cookbook formerly known as 'chef' has been split into two cookbooks:\n\n* chef-client\n* chef-server\n\nSo users have a clearer distinction about where to find recipes for managing Chef itself. The `chef` cookbook will still be available for backwards compatibility reasons.\n\nAttributes\n----------\n\nThe attributes are namespaced between using `chef_client` and `chef_server`. Several attributes have been renamed completely. See the attributes section below.\n\nPaths\n-----\n\nPath default values are selected by Platform according to the various distributions \"best practice\" preference. For example, major Linux distributions use the Filesystem Hierarchy Standard, which the attributes attempt to mimic. See the various platform specific path attributes in the attributes section.\n\nInit Style\n----------\n\nThe default init style is chosen based on the platform. See the usage section on choosing an init style below.\n\nRecipes\n-------\n\nThe recipes in the chef cookbook that are now in chef-server:\n\n chef::bootstrap_server -> chef-server::rubygems-install\n chef::server -> chef-server::default\n chef::server_proxy -> chef-server::apache-proxy\n\nSee the recipes section below.\n\nDESCRIPTION\n===========\n\nThis cookbook is used to configure a system to be a Chef Server. It has a few recipes, please read the recipes section below for information on what each one is used for.\n\nREQUIREMENTS\n============\n\nChef 0.10.0 or later is required. For earlier versions of Chef, see the `chef` cookbook, version 0.99.0.\n\nPlatform\n--------\n\nThe Chef Server will work on a variety of platforms, however a Ubuntu or Debian is recommended when performing a RubyGems installation. Other platforms may work but are not as well tested.\n\nThe `chef-server::default` recipe will work on any platform running the Chef Server, as it only compacts the CouchDB / views.\n\nCookbooks\n---------\n\nThe chef-server cookbook requires the following cookbooks from Opscode. Some are required for various init style options (bluepill, runit, daemontools):\n\n* apt\n* apache2\n* runit\n* couchdb\n* chef-client\n* chef-server\n* openssl\n* gecode\n* java\n* xml\n* zlib\n* erlang\n* bluepill\n* daemontools\n* ucspi-tcp\n* build-essential\n\nATTRIBUTES\n==========\n\nThe attributes used by this cookbook are under the `chef_server` namespace.\n\nWhen using the rubygems-install recipe, set the desired attributes using a JSON file. See __RUBYGEMS_INSTALLATION__ for more information.\n\nPlatform Specific Attributes\n----------------------------\n\nThe following attributes are chosen based on the platform and set accordingly. See the attributes/default.rb for default values by platform. The following platforms are supported:\n\n* arch\n* debian\n* ubuntu\n* redhat\n* centos\n* fedora\n* openbsd\n* freebsd\n* mac\\_os\\_x\n\n### init\\_style\n\nThis attribute is used by the `chef-server::rubygems-install` recipe. This specifies the type of init system used on the Chef Server. The attributes file will choose an init style based on the platform, but this can be overriden by specifying an alternate value.\n\nAutomatically determined values:\n\n* arch - ArchLinux, and uses the appropriate rc.d and conf.d scripts out of the `chef` gem.\n* init - Debian, Ubuntu, Red Hat, CentOS and Fedora. Uses the appropriate /etc/default, /etc/sysconfig and /etc/init.d files out of the `chef` gem.\n* bsd - OpenBSD, FreeBSD and Mac OS X, does not actually set up any system startup daemon, but provides a log message for the administrator of further hints.\n\nThe following alternate init styles are available as well.\n\n* runit - sets up the daemons and logging in /etc/sv/SERVICE with Opscode's `runit` cookbook.\n* daemontools - sets up the daemons and logging in /etc/sv/SERVICE with Opscode's `daemontools` cookbook.\n* bluepill - sets up the daemons in /etc/bluepill/SERVICE with Opscode's `bluepill` cookbook.\n\nThis cookbook does not yet support Upstart for Ubuntu/Debian, but that is planned for a future release, and will be specified via this attribute.\n\n### path\n\nUsed for the `chef` user's home directory.\n\n### run\\_path\n\nLocation for PID files on systems using init scripts.\n\nIf `init_style` is `init`, this is used, and should match what the init script itself uses for the PID files.\n\n### cache\\_path\n\nLocation where the client will cache cookbooks and other data. Corresponds to `Chef::Config[:file_cache_path]` configuration value.\n\n### backup\\_path\n\nLocation where backups of files replaced by Chef (template, `cookbook_file`, etc), corresponds to the `Chef::Config[:file_backup_path]` location.\n\nNon-platform Specific Attributes\n--------------------------------\n\n### umask\n\nSets the umask for files created by the server process via `Chef::Config[:umask]` in `/etc/chef/server.rb`\n\n### url\n\nFull URI for the Chef Server. Used by `Chef::Config[:chef_server_url]` configuration setting. Default is http://localhost:4000. If running chef-solr on a separate machine, configure it to the appropriate network accessible URL (e.g.,\n\n### log\\_dir\n\nLocation where logs should be stored when initializing services via init scripts. Not used if init style is runit, daemontools or bluepill.\n\n### api\\_port\n\nPort for the Server API service to listen on. Default `4000`.\n\n### webui\\_port\n\nPort for the Server WebUI service to listen on. Default `4040`.\n\n### webui\\_enabled\n\nAs of version 0.8.x+, the WebUI part of the Chef Server is optional, and disabled by default. To enable it, set this to true.\n\n### solr\\_heap\\_size\n\nSets the amount of memory for the SOLR heap, default 256M.\n\n### validation\\_client\\_name\n\nSet the name of the special client used to validate new clients. Default `chef-validator`.\n\n### expander\\_nodes\n\nNumber of nodes to start up for the chef-expander (replacement for chef-solr-indexer in 0.10). Default is 1.\n\nServer Proxy Attributes\n-----------------------\n\nThe following attributes are used by the `apache-proxy.rb` recipe, and are stored in the `apache-proxy.rb` attributes file. They are under the `node['chef_server']` attribute space.\n\ndoc\\_root\n---------\n\nDocumentRoot for the WebUI. Also gets set in the vhost for the API, but it is not used since the vhost merely proxies to the server on port 4000.\n\nssl\\_req\n--------\n\nThis attribute can be used to set up a self-signed SSL certificate automatically using OpenSSL. Fields:\n\n* C: country (two letter code)\n* ST: state/province\n* L: locality or city\n* O: organization\n* OU: organizational unit\n* CN: canonical name, usually the fully qualified domain name of the server (FQDN)\n* emailAddress: contact email address\n\nThis attribute should be a single string, fields separated by /.\n\ncss\\_expire\\_hours\n------------------\n\nSets expiration time for CSS in the WebUI.\n\njs\\_expire\\_hours\n-----------------\n\nSets expiration time for JavaScript in the WebUI.\n\nRECIPES AND USAGE\n=================\n\nThis section describes the recipes in the cookbook and how to use them in your environment. This is focused on the Chef Server itself. To set up a Chef Server that will also be a Chef Client to itself, see the `chef-client` cookbook.\n\ndefault\n-------\n\nSince the Chef Server itself typically runs the CouchDB service for the data store, the recipe will do a compaction on the Chef database and all the views associated with the Chef Server. These compactions only occur if the database/view size is more than 100Mb. It will use the configured CouchDB URL, which is `http://localhost:5984` by default. The actual value used for the CouchDB server is from the `Chef::Config[:couchdb_url]`, so this can be dynamically changed in the /etc/chef/server.rb config file.\n\napache-proxy\n------------\n\nThis recipe sets up an Apache2 VirtualHost to proxy HTTPS for the Chef Server API and WebUI.\n\nThe API will be proxied on port 443. If the WebUI is enabled, it will be proxied on port 444. The recipe dynamically creates the OpenSSL certificate based on the `node['chef_server']['ssl_req']` attribute. It uses additional configuration for Apache to improve performance of the webui. The virtual host template is `chef_server.conf.erb`. The DocumentRoot setting is used for the WebUI, but not the API, and is set with the attribute `node['chef_server']['doc_root']`.\n\nrubygems-install\n----------------\n\nONLY FOR RUBYGEMS INSTALLATIONS. Do not use this recipe if you installed Chef from packages for your platform.\n\nUse this recipe to \"bootstrap\" a system to become a Chef Server. This recipe does the following:\n\n* Creates a `chef` user.\n* Installs CouchDB from package or source depending on the platform.\n* Installs Java for the `chef-solr` search engine.\n* Installs RabbitMQ with the `chef-server::rabbitmq` recipe in the rabbitmq cookbook for the chef-expander consumer.\n* Installs Gecode with the `gecode` cookbook. On Debian/Ubuntu, Opscode's APT repository will be used. On other platforms, Gecode will be installed from source, which can take a long time.\n* Installs all the Server-related RubyGems.\n* Creates the server configuration file `/etc/chef/server.rb` based on the configuration passed via JSON.\n* Creates the chef-solr configuration file, `/etc/chef/solr.rb`.\n* Sets up the `chef-server`, `chef-solr`, `chef-expander` services depending on the `init_style` attribute (see above).\n\nMinimal JSON to use for the server configuration:\n\n {\n \"chef_server\": {\n \"url\": \"http://localhost.localdomain:4000\",\n },\n \"run_list\": \"recipe[chef-server::rubygems-install]\"\n }\n\nNote that the `chef-server-webui` is optional and can be enabled if desired.\n\n {\n \"chef_server\": {\n \"url\": \"http://localhost.localdomain:4000\",\n \"webui_enabled\": true\n },\n \"run_list\": \"recipe[chef-server::rubygems-install]\"\n }\n\nFor more information see [Bootstrap Chef RubyGems Installation]( on the Chef Wiki and the attributes section above.\n\nTEMPLATES\n=========\n\nchef\\_server.conf.erb\n---------------------\n\nVirtualHost file used by Apache2 in the `chef-server::apache-proxy` recipe.\n\nserver.rb.erb\n-------------\n\nConfiguration for the server and server components used in the `chef-server::rubygems-install` recipe.\n\nsolr.rb.erb\n-----------\n\nConfiguration for chef-solr used in the `chef-server::rubygems-install` recipe.\n\nsv-\\*run.erb\n-------------\n\nRunit and daemontools \"run\" scripts for the services configured when `node['chef_server']['init_style']` is \"runit\" or \"daemontools\".\n\n\\*.pill.erb\n-----------\n\nBluepill \"pill\" files for the services configured when `node['chef_server']['init_style']` is \"bluepill\".\n\nLICENSE AND AUTHORS\n===================\n\n* Author: Joshua Timberman <>\n* Author: Joshua Sierles <>\n\n* Copyright 2008-2011, Opscode, Inc\n* Copyright 2009, 37signals\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\n",
"maintainer": "Opscode, Inc.",
"maintainer_email": "",
"license": "Apache 2.0",
"platforms": {
"ubuntu": ">= 0.0.0",
"debian": ">= 0.0.0",
"redhat": ">= 0.0.0",
"centos": ">= 0.0.0",
"fedora": ">= 0.0.0",
"freebsd": ">= 0.0.0",
"openbsd": ">= 0.0.0"
"dependencies": {
"runit": ">= 0.0.0",
"bluepill": ">= 0.0.0",
"daemontools": ">= 0.0.0",
"couchdb": ">= 0.0.0",
"apache2": ">= 0.0.0",
"openssl": ">= 0.0.0",
"zlib": ">= 0.0.0",
"xml": ">= 0.0.0",
"java": ">= 0.0.0",
"gecode": ">= 0.0.0"
"recommendations": {
"suggestions": {
"conflicting": {
"providing": {
"replacing": {
"attributes": {
"groupings": {
"recipes": {
"chef_server": "Compacts the Chef Server CouchDB.",
"chef_server::rubygems-install": "Set up rubygem installed chef server.",
"chef_server::apache-proxy": "Configures Apache2 proxy for API and WebUI"
"version": "0.99.11"
Jump to Line
Something went wrong with that request. Please try again.