lib/chef/knife/bootstrap/_omnibus.sh in knife-server-1.1.0 vs lib/chef/knife/bootstrap/_omnibus.sh in knife-server-1.2.0

- old
+ new

@@ -3,16 +3,20 @@ # # Functions to install Chef Server from an Ombibus package # package_url() { - local base="http://www.opscode.com/chef/download-server" - if [ -n "$version" ] ; then - local v="&v=${version}" - fi + if [ -n "$url" ] ; then + echo "$url" + else + local base="http://www.getchef.com/chef/download-server" + if [ -n "$version" ] ; then + local v="&v=${version}" + fi - echo "${base}?p=${platform}&pv=${platform_version}&m=${machine}&prerelease=${prerelease}${v}" + echo "${base}?p=${platform}&pv=${platform_version}&m=${machine}&prerelease=${prerelease}${v}" + fi } # Set the filename for a deb, based on version and machine deb_filename() { filetype="deb" @@ -34,10 +38,20 @@ warn "We encountered an error downloading the package." echo exit 5 } +is_server_installed() { + if [ -f "/opt/chef-server/bin/chef-server-ctl" ] ; then + return 0 + elif [ -f "/opt/opscode/bin/chef-server-ctl" ] ; then + return 0 + else + return 1 + fi +} + perform_download() { case "$1" in wget) wget -O "$2" "$3" 2>/tmp/stderr || failed_download ;; @@ -46,12 +60,12 @@ ;; esac } download_package() { - if [ -f "/opt/chef-server/bin/chef-server-ctl" ] ; then - info "Chef Server detected in /opt/chef-server, skipping download" + if is_server_installed ; then + info "Chef Server detected, skipping download" return 0 fi local url="$(package_url)" @@ -70,12 +84,12 @@ info "Download complete" } install_package() { - if [ -f "/opt/chef-server/bin/chef-server-ctl" ] ; then - info "Chef Server detected in /opt/chef-server, skipping installation" + if is_server_installed ; then + info "Chef Server detected, skipping installation" return 0 fi banner "Installing Chef Server $version" case "$filetype" in @@ -88,10 +102,47 @@ rm -r "$tmp_dir" fi banner "Package installed" } +detect_info() { + if [ -f "/opt/chef-server/bin/chef-server-ctl" ] ; then + server_root="/opt/chef-server" + elif [ -f "/opt/opscode/bin/chef-server-ctl" ] ; then + server_root="/opt/opscode" + fi + + info "Chef Server detected in $server_root" +} + +patch_knife_code() { + local check="((Gem::Version.new(Chef::VERSION) <= Gem::Version.new(\"11.12.2\")) || (Gem::Version.new(Chef::VERSION) >= Gem::Version.new(\"11.6.0\"))) ? exit(0) : exit(1)" + local gems="$server_root/embedded/lib/ruby/gems/1.9.1/gems" + local patched="$gems/.patched" + + if [ -f "$patched" ]; then + info "Patched knife configure detected, skipping" + elif echo "$script" | $server_root/embedded/bin/ruby -r chef/version; then + info "Patching knife configure bug (CHEF-5211)" + (cd $gems/chef-11.* && cat <<PATCH | tr "#" "\047" | patch -p1) +diff --git a/lib/chef/knife/configure.rb b/lib/chef/knife/configure.rb +index 6af3d4e..2c77bf1 100644 +--- a/lib/chef/knife/configure.rb ++++ b/lib/chef/knife/configure.rb +@@ -153,6 +153,7 @@ EOH + + def guess_servername + o = Ohai::System.new ++ o.load_plugins + o.require_plugin #os# + o.require_plugin #hostname# + o[:fqdn] || #localhost# +PATCH + touch "$patched" + fi +} + prepare_chef_server_rb() { local config_file="/etc/chef-server/chef-server.rb" banner "Creating $config_file" mkdir -p "$(dirname $config_file)" @@ -110,11 +161,11 @@ } symlink_binaries() { for bin in chef-client chef-solo chef-apply knife ohai ; do banner "Updating /usr/bin/$bin symlink" - ln -snf /opt/chef-server/embedded/bin/$bin /usr/bin/$bin + ln -snf $server_root/embedded/bin/$bin /usr/bin/$bin done ; unset bin } reconfigure_chef_server() { banner "Reconfiguring Chef Server" @@ -130,7 +181,9 @@ configure_firewall() { if [ -x "/usr/sbin/lokkit" ] ; then banner "Opening TCP port 443" /usr/sbin/lokkit -p 443:tcp + banner "Opening SSH port 22" + /usr/sbin/lokkit -p 22:tcp fi }