Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
# shove this in ~/.chef/bootstrap/joyent-smartos.erb
# run knife bootstrap <hostname> -d joyent-smartos
bash -c '
if [ ! -f /opt/local/bin/chef-client ]; then
cd /tmp
pkgin install gcc-compiler gcc-runtime gcc-tools-0 ruby19 scmgit-base scmgit-docs gmake sun-jdk6
tar -xzf rubygems-1.8.10.tgz
cd rubygems-1.8.10
ruby setup.rb --no-format-executable
gem install --no-ri --no-rdoc json_pure
gem install --no-ri --no-rdoc -v=0.9.18 chef
mv /opt/local/lib/ruby/gems/1.9/gems/json-1.4.6 /tmp/
ln -s /opt/local/lib/ruby/gems/1.9/gems/json_pure-1.6.1 /opt/local/lib/ruby/gems/1.9/gems/json-1.4.6
mkdir -p /etc/chef
cat <<'EOP'
<%= validation_key %>
) > /tmp/validation.pem
awk NF /tmp/validation.pem > /etc/chef/validation.pem
rm /tmp/validation.pem
cat <<'EOP'
<%= config_content %>
) > /etc/chef/client.rb
cat <<'EOP'
<%= { "run_list" => @run_list }.to_json %>
) > /etc/chef/first-boot.json


I'm trying to get Chef working with a Joyent SmartOS zone.Was hoping to use your bootstrap template. I've install the chef gem follow your instructions and get:

WARNING: No knife configuration file found
Bootstrapping Chef on 0edd613
ERROR: Errno::ENOENT: No such file or directory - /etc/chef/validation.pem

I must be missing something?


benjaminws commented Jan 16, 2012

You know, I created this before Joyent rebooted the brand and released the newest smartos. I'm not sure if it will even work anymore.

However, I'll give it a quick shot. You're running this in server mode, not with chef-solo, right? It seems like it's not creating the chef validation.pem. Can you make sure the user you're running it as can create /etc/chef? Just a shot in the dark.

Thanks for the info. I'm just starting to learn Chef and was thinking from a Chef-solo perspective if that makes any sense. I now understand that knife bootstrap is for bootstraping nodes when you already have a Chef server (and hence a pem). Need to read more, but I'm glad someone else has tried this:

FYI: I'm actually running my own SmartOS servers, but this was essentially in a SmartMachine.


Hey thanks for this. I just ran it successfully on a new SmartOS node after making a couple of small tweaks (see my fork at -- had to add '-y' to pkgin to avoid interactive prompts, and removed sun-jdk6 because I couldn't come up with a way to get it to run non-interactively.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment