Everything is an update
For some work projects we've started making all the configuration changes via update functions. These get checked into version control and from there deployed to the staging site for testing, and then eventually deployed on the production site. The nice thing about update functions is that you can test it on staging and be sure that exactly the same changes will occur on the production site.
Here's a few examples, I'll continue to update it as I get more good examples.
Installing a module
Simple one liner to enable several modules:
<?php
function foo_update_6000(&$sandbox) {
$ret = array();
drupal_install_modules(array('devel', 'devel_node_access'));
return $ret;
}
?>