-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Ohai Chefs!
We would like to take a moment to let everyone know about upcoming
changes to the Opscode cookbook for Chef for the installation and
bootstrap/configuration procedures.
First, some background. When we launched Chef, we didn’t have any OS
specific packages, just RubyGems. We provided the Chef cookbook as a
canonical cross-platform method of getting everything set up, because
RubyGems doesn’t handle external dependencies (ie, CouchDB), service
startup, or file/directory creation outside the Gem itself.
Thanks to contributions from the community, we now have some platform-
specific packages (rpm, deb), and more on the way (bsd, gentoo). Many
people expect installing a package for their platform installs all
dependencies, creates all the right files and directories, sets up a
basic configuration and starts any relevant services. The Debian/
Ubuntu debs do all this, for both clients and servers. It will soon be
covered by the Red Hat/CentOS rpms, as well. To reflect package
installation expectations, the “bootstrap” method of configuring Chef
with chef-solo itself will only be applicable to RubyGem installations
with a new cookbook called “bootstrap”. The goal of this cookbook is
to get all the components in place to match package installations.
Once the bootstrap is complete, or platform packages are installed,
the “chef” cookbook can be used to manage the clients’ or server’s
configuration. That cookbook will be streamlined. Important changes to
note:
General:
The attributes have been consolidated into one file, chef.rb, rather
than split amongst chef.rb, client.rb, indexer.rb and server.rb.
Attribute files in the chef cookbook and other associated cookbooks
are updated to the new 0.7.10 notation for ‘default’ attribute values,
ie:
default[:chef][:client_interval] = "1800"
We don’t explicitly set up the various bits of Chef as runit services
anymore. We assume this was either done by the bootstrap, or that the
package installation handled installing an init script. The default is
still to use runit, but that can be controlled with an attribute
"init_style".
Client:
This cookbook no longer manages the chef gem/package version; it
manages /etc/chef/client.rb, reloads the configuration if the template
changes, and can auto-validate a client if /etc/chef/validation_token
exists.
Server:
This cookbook no longer configures a Chef Server with Passenger. This
makes the RubyGem installation consistent with package installation,
as not all platforms have a clean package installation method for
Passenger.
The default server recipe (chef::server) sets up the client
(chef::client), manages the chef-indexer and chef-server services, and
configures both from /etc/chef/server.rb. It also compacts the Chef
database in CouchDB if it is over 100Mb.
The chef::server_proxy recipe sets up an Apache proxy vhost to provide
SSL in front of the chef-server running as a Merb application. The
passenger configuration is no longer the default because not all
platforms have an easily-installed passenger package, so this would be
a big inconsistency between the RubyGems bootstrap and native package
installations, though the chef cookbook will have a passenger
deployment recipe as an option.
These cookbooks aren’t live yet. The wiki will be updated to reflect
the change in installation and configuration, as well as how to use on
existing systems. There will be some basic information about the
cookbooks/recipes for the bootstrap and chef cookbooks in their
respective README.rdoc. Once the documentation is updated and the
cookbooks are updated, we will send out another announcement.
Opscode, Inc
Joshua Timberman, Senior Solutions Engineer
C: 720.878.4322 E: joshua@opscode.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)
iEYEARECAAYFAkq4H4YACgkQO97WSdVpzT3wWgCfSOlCfMkxyy3dzy+ql8+JwB3f
2FwAoJ9oZjEAmcNItzr5dYbKHb/mDTJ7
=ltv0
-----END PGP SIGNATURE-----