Upcoming changes to Chef bootstrap/config

-----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-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello!

I released the changes to the Opscode/cookbooks and the wiki updates
the other day. The chef cookbook is much different than before, and
the bootstrap cookbook is a new addition. Please see the installation
page on the wiki[0] for details, and please review the README docs in
the bootstrap and chef cookbooks[1].

Reminder: The server recipe no longer sets up passenger.

If you are using CentOS / RHEL / Fedora with the RPMs, please continue
to use the older bootstrap tarball (bootstrap-0.7.10.tar.gz), as the
RPMs that manage all the init scripts and configuration are still in
progress.

The older procedures are still available[2] as well, using
bootstrap-0.7.10.tar.gz. We think the new procedure is a lot more
streamlined and generalized, despite some duplication between the two
cookbooks.

If you run into trouble, please post to this list or stop by Chef Infra (archive) on
IRC.

[0] http://wiki.opscode.com/display/chef/Installation
[1] http://github.com/opscode/cookbooks/blob/master/bootstrap/README.rdoc
http://github.com/opscode/cookbooks/blob/master/chef/README.rdoc
[2] http://wiki.opscode.com/display/chef/Configuring+Chef+Server+and+Clients

On Sep 21, 2009, at 6:51 PM, Joshua Timberman wrote:

-----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-----


Opscode, Inc
Joshua Timberman, Senior Solutions Engineer
C: 720.878.4322 E: joshua@opscode.com

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEARECAAYFAkq9BEQACgkQO97WSdVpzT08mwCbBVcrMrgfW/O5emCcIWj8d5Fe
I+4An0zxtT4pgtmw9oMRfIJs2r1leKVw
=1aK6
-----END PGP SIGNATURE-----