#!/usr/bin/env ruby # # ./chef-server - Serving up piping hot infrastructure! # # Author:: Adam Jacob () # Copyright:: Copyright (c) 2008 Opscode, Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Based on the 'merb' command, by Ezra require "rubygems" require "merb-core" # Load chef and chef-server-api from source rather than gem, if present $:.unshift(File.expand_path(File.dirname(__FILE__) + '/../../chef/lib/')) $:.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib')) require 'chef' require 'chef-server-api' # Ensure the chef gem we load is the same version as the chef server unless defined?(Chef) gem "chef", "=" + CHEF_SERVER_VERSION require 'chef' end # Print the help message if our argv looks fishy if ARGV[0] && ARGV[0] =~ /^[^-]/ ARGV.push "-H" end # Default to thin unless %w[-a --adapter -i --irb-console -r --script-runner].any? { |o| ARGV.index(o) } ARGV.push *%w[-a thin] end # Tell merb where to root ARGV.push *[ "-m", CHEF_SERVER_API_ROOT] # attempt to find the user and group that this process will become. Fixes CHEF-1015 if (index = ARGV.index("-u")) Chef::Config[:signing_ca_user] = ARGV[index+1] end if (index = ARGV.index("-G")) Chef::Config[:signing_ca_group] = ARGV[index+1] end # Find and load the config if index = ARGV.index("-C") config = ARGV[index+1] ARGV.delete("-C") ARGV.delete(config) Chef::Config.from_file(File.expand_path(config)) else Chef::Config.from_file( File.join("/etc", "chef", "server.rb") ) end Chef::Log.init(Chef::Config[:log_location]) Chef::Log.level = Chef::Config[:log_level] Merb.start