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
}