= Setting up Bcfg2 From Scratch =
Ala [[http://blog.conpocococo.org/post/6079832974/managing-etc-motd-with-bcfg2-starting-from-an-empty-vm|Managing /etc/motd with Bcfg2 Starting From an Empty VM]], I’ll be setting up a fresh OS X 10.6 machine to be managed by [[http://bcfg2.org|Bcfg2]].
== Get OS X 10.6 Running ==
Use your favorite provisioning method (e.g. open-box-then-push-power-button, DVD, [[http://www.deploystudio.com/Home.html|DeplyStudio]], etc) to get your operating system running and fully patched.
For this hands on, I’m running OS X 10.6.8 (Build 10K540) with the supplied python 2.6.1. I’ve also turned on Remote Login (i.e. ssh) so I can use my client to write this document going through the steps; having ssh on is not a requirement for this howto.
== Get bcfg2-server Working ==
=== Get bcfg2 package ===
You might be able to get a package already built for you, but it is not hard to build it from the source. You’ll need git (via [[https://code.google.com/p/git-osx-installer/|git-osx-installer]] or [[https://github.com/mxcl/homebrew|homebrew]] the former is easier, the later more developer friendly) and Apple’s [[http://developer.apple.com/xcode/|xcode]].
The first step is to clone the bcfg2 repository into a working directory:
{{{#!highlight bash cd ~/Devloper git clone git://git.mcs.anl.gov/bcfg2.git cd bcfg2 }}}
At this point you will probably want to checkout a release tag (git tag -l to see a list of them). This test is using v1.2.0pre4. Once you’ve done that you can build the server.
{{{#!highlight bash git checkout v1.2.0pre4 cd osx make server }}}
The server package contains both the client and the server. The package is located at ./osx/bcfg2-VERSION.pkg. Copy it to the machine you want to set up from scratch and install it.
THIS NEEDS TO VERIFIED Some of the differences between bcfg2 on Mac OS X and Debian is that the libraries are stored at /Library/Frameworks/Python.framework/Versions/Current/share/bcfg2/ /Library/Python/site-packages/Bcfg2/ instead of /usr/lib/pymodules/ and /usr/share/pyshare/Bcfg2. Also, instead of cron and init.d, `/Library/LaunchDaemons/gov.anl.mcs.bcfg2-daily.plist controls peridic runs and starts and stops. The runtime files are stored in /usr/local/bin under Mac OS X instead of /usr/sbin/ for Debian. VERIFY
Error: bcfg2-admin init “”” 10.6_client :~ user$ sudo /usr/local/bin/bcfg2-admin init Failed to import lxml dependency. Shutting down server. “”“
Try: sudo easy_install lxml. If you don’t have gcc-4.2 installed, you’ll need to install it on a machine that does. Then move /Library/Python/2.6/sites-packages/lxml-2.3-py2.6-macosx-10.6-universal.egg to the client and add the line ”./lxml-2.3-py2.6-macosx-10.6-universal.egg” to /Library/Python/2.6/site-packages/easy-install.pth.
getting a new error:
$ sudo /usr/local/bin/bcfg2-admin init Interactively initialize a new repository.
bcfg2-admin init $
So what is lxml easy_install fully installing? Need to make a package (Lettuce to the rescue!)