summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKartik Null Cating-Subramanian <ksubramanian@chef.io>2016-01-11 16:15:40 -0500
committerKartik Null Cating-Subramanian <ksubramanian@chef.io>2016-01-11 16:15:40 -0500
commit0944320b72ee1ab16a18a149f5ecb743ace0c0d3 (patch)
tree1c70c6185a97a2e2bc7e9323651b920c28ab91fa
parentf00463d2f124221ef37aaab4d69e26778f349c61 (diff)
parent8cefd66dd0aee8db3fd6ddcb348c6702e498785d (diff)
downloadchef-0944320b72ee1ab16a18a149f5ecb743ace0c0d3.tar.gz
Merge pull request #4369 from chef/ksubrama/omnibus
Migrate omnibus-chef project/software definitions for chef in here.
-rw-r--r--.gitignore14
-rw-r--r--CHANGELOG.md1
-rw-r--r--ci/jenkins_run_tests.bat14
-rwxr-xr-xci/jenkins_run_tests.sh13
-rwxr-xr-xci/verify-chef.bat56
-rwxr-xr-xci/verify-chef.sh89
-rw-r--r--omnibus/.gitignore11
-rw-r--r--omnibus/.kitchen.local.yml.vmware.example6
-rw-r--r--omnibus/.kitchen.yml111
-rw-r--r--omnibus/Berksfile12
-rw-r--r--omnibus/Berksfile.lock30
-rw-r--r--omnibus/Gemfile18
-rw-r--r--omnibus/Gemfile.lock203
-rw-r--r--omnibus/README.md144
-rw-r--r--omnibus/config/projects/angrychef.rb41
-rw-r--r--omnibus/config/projects/chef-fips.rb48
-rw-r--r--omnibus/config/projects/chef.rb86
-rw-r--r--omnibus/files/mapfiles/solaris19
-rw-r--r--omnibus/files/openssl-customization/windows/ssl_env_hack.rb34
-rw-r--r--omnibus/omnibus.rb54
-rwxr-xr-xomnibus/package-scripts/angrychef/postinst115
-rwxr-xr-xomnibus/package-scripts/angrychef/postrm42
-rwxr-xr-xomnibus/package-scripts/chef-fips/postinst115
-rwxr-xr-xomnibus/package-scripts/chef-fips/postrm42
-rwxr-xr-xomnibus/package-scripts/chef/postinst115
-rwxr-xr-xomnibus/package-scripts/chef/postrm42
-rw-r--r--omnibus/resources/chef/dmg/background.pngbin0 -> 44066 bytes
-rw-r--r--omnibus/resources/chef/dmg/icon.pngbin0 -> 280172 bytes
-rw-r--r--omnibus/resources/chef/msi/assets/LICENSE.rtf197
-rw-r--r--omnibus/resources/chef/msi/assets/banner_background.bmpbin0 -> 114432 bytes
-rw-r--r--omnibus/resources/chef/msi/assets/dialog_background.bmpbin0 -> 615320 bytes
-rw-r--r--omnibus/resources/chef/msi/assets/oc.icobin0 -> 41880 bytes
-rw-r--r--omnibus/resources/chef/msi/assets/oc_16x16.icobin0 -> 1286 bytes
-rw-r--r--omnibus/resources/chef/msi/assets/oc_32x32.icobin0 -> 4682 bytes
-rw-r--r--omnibus/resources/chef/msi/localization-en-us.wxl.erb30
-rw-r--r--omnibus/resources/chef/msi/parameters.wxi.erb9
-rw-r--r--omnibus/resources/chef/msi/source.wxs.erb171
-rw-r--r--omnibus/resources/chef/pkg/background.pngbin0 -> 55731 bytes
-rw-r--r--omnibus/resources/chef/pkg/license.html.erb202
-rw-r--r--omnibus/resources/chef/pkg/welcome.html.erb5
40 files changed, 2056 insertions, 33 deletions
diff --git a/.gitignore b/.gitignore
index c981191e4e..064d998d6e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,18 +1,21 @@
.autotest
coverage
.DS_Store
-pkg
+pkg/*
tags
*/tags
*~
.chef
-# you should check in your Gemfile.lock in applications, and not in gems
+# You should check in your Gemfile.lock in applications, and not in gems
+# This also matches Berksfile.lock
external_tests/*.lock
-*.lock
-Gemfile.local
+/*.lock
+/Gemfile.local
-# Do not check in the .bundle directory, or any of the files inside it. Those files are specific to each particular machine, and are used to persist installation options between runs of the bundle install command.
+# Do not check in the .bundle directory, or any of the files inside it. Those
+# files are specific to each particular machine, and are used to persist
+# installation options between runs of the bundle install command.
.bundle
# ignore some common Bundler 'binstubs' directory names
@@ -36,7 +39,6 @@ doc/
# Test Kitchen
.kitchen/
-Berksfile.lock
# Vagrant
Vagrantfile
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 330f93fae7..5c79dcb1c5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@
* [pr#4278](https://github.com/chef/chef/pull/4278) make file resource use properties
* [**Nate Walck**](https://github.com/natewalck)
[pr#4078](https://github.com/chef/chef/pull/4078) Add `osx_profile` HWRP for OS X
+* [pr#4369](https://github.com/chef/chef/pull/4396) Import omnibus-chef chef project definition and history
## 12.6.0
diff --git a/ci/jenkins_run_tests.bat b/ci/jenkins_run_tests.bat
deleted file mode 100644
index ba9cedd5e2..0000000000
--- a/ci/jenkins_run_tests.bat
+++ /dev/null
@@ -1,14 +0,0 @@
-ruby -v
-
-call bundle check
-
-if %ERRORLEVEL% NEQ 0 (
- call rm Gemfile.lock
- call bundle install --without docgen --path vendor/bundle
-)
-
-bundle exec rspec -r rspec_junit_formatter -f RspecJunitFormatter -o test.xml -f documentation spec/functional spec/unit spec/stress spec/integration
-
-set RSPEC_ERRORLVL=%ERRORLEVEL%
-REM Return the error level from rspec
-exit /B %RSPEC_ERRORLVL%
diff --git a/ci/jenkins_run_tests.sh b/ci/jenkins_run_tests.sh
deleted file mode 100755
index 5bf7def062..0000000000
--- a/ci/jenkins_run_tests.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-export PATH=$PATH:/usr/local/bin
-
-ruby -v;
-# remove the Gemfile.lock and try again if bundler fails.
-# This should take care of Gemfile changes that result in "bad" bundles without forcing us to rebundle every time
-bundle install --without docgen --path vendor/bundle || ( rm Gemfile.lock && bundle install --path vendor/bundle )
-bundle exec rspec -r rspec_junit_formatter -f RspecJunitFormatter -o test.xml -f documentation spec;
-RSPEC_RETURNCODE=$?
-
-# exit with the result of running rspec
-exit $RSPEC_RETURNCODE
diff --git a/ci/verify-chef.bat b/ci/verify-chef.bat
new file mode 100755
index 0000000000..1c159f0668
--- /dev/null
+++ b/ci/verify-chef.bat
@@ -0,0 +1,56 @@
+
+@ECHO OFF
+
+REM ; %PROJECT_NAME% is set by Jenkins, this allows us to use the same script to verify
+REM ; Chef and Angry Chef
+cd C:\opscode\%PROJECT_NAME%\bin
+
+REM ; We don't want to add the embedded bin dir to the main PATH as this
+REM ; could mask issues in our binstub shebangs.
+SET EMBEDDED_BIN_DIR=C:\opscode\%PROJECT_NAME%\embedded\bin
+
+ECHO.
+
+FOR %%b IN (
+ chef-client
+ knife
+ chef-solo
+ ohai
+) DO (
+
+
+ ECHO Checking for existence of binfile `%%b`...
+
+ IF EXIST %%b (
+ ECHO ...FOUND IT!
+ ) ELSE (
+ GOTO :error
+ )
+ ECHO.
+)
+
+call chef-client --version
+
+REM ; Exercise various packaged tools to validate binstub shebangs
+call %EMBEDDED_BIN_DIR%\ruby --version
+call %EMBEDDED_BIN_DIR%\gem --version
+call %EMBEDDED_BIN_DIR%\bundle --version
+call %EMBEDDED_BIN_DIR%\rspec --version
+
+SET PATH=C:\opscode\%PROJECT_NAME%\bin;C:\opscode\%PROJECT_NAME%\embedded\bin;%PATH%
+
+REM ; Test against the vendored chef gem
+cd C:\opscode\%PROJECT_NAME%\embedded\lib\ruby\gems\2*\gems\chef-*-mingw32
+
+IF NOT EXIST "Gemfile.lock" (
+ ECHO "Chef gem does not contain a Gemfile.lock! This is needed to run any tests."
+ GOTO :error
+)
+
+IF "%PIPELINE_NAME%" == "chef-13" (
+ REM ; Running unit and functional tests
+ call bundle exec rspec -r rspec_junit_formatter -f RspecJunitFormatter -o %WORKSPACE%\test.xml -f documentation spec/unit spec/functional
+) ELSE (
+ REM ; Running unit tests
+ call bundle exec rspec -r rspec_junit_formatter -f RspecJunitFormatter -o %WORKSPACE%\test.xml -f documentation spec/unit spec/functional
+)
diff --git a/ci/verify-chef.sh b/ci/verify-chef.sh
new file mode 100755
index 0000000000..4e60b1fd9f
--- /dev/null
+++ b/ci/verify-chef.sh
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+# $PROJECT_NAME is set by Jenkins, this allows us to use the same script to verify
+# Chef and Angry Chef
+PATH=/opt/$PROJECT_NAME/bin:$PATH
+export PATH
+
+BIN_DIR=/opt/$PROJECT_NAME/bin
+export BIN_DIR
+
+# We don't want to add the embedded bin dir to the main PATH as this
+# could mask issues in our binstub shebangs.
+EMBEDDED_BIN_DIR=/opt/$PROJECT_NAME/embedded/bin
+export EMBEDDED_BIN_DIR
+
+# If we are on Mac our symlinks are located under /usr/local/bin
+# otherwise they are under /usr/bin
+if [ -f /usr/bin/sw_vers ]; then
+ USR_BIN_DIR="/usr/local/bin"
+else
+ USR_BIN_DIR="/usr/bin"
+fi
+export USR_BIN_DIR
+
+# sanity check that we're getting the correct symlinks from the pre-install script
+# solaris doesn't have readlink or test -e. ls -n is different on BSD. proceed with caution.
+if [ ! -L $USR_BIN_DIR/chef-client ] || [ `ls -l $USR_BIN_DIR/chef-client | awk '{print$NF}'` != "$BIN_DIR/chef-client" ]; then
+ echo "$USR_BIN_DIR/chef-client symlink to $BIN_DIR/chef-client was not correctly created by the pre-install script!"
+ exit 1
+fi
+
+if [ ! -L $USR_BIN_DIR/knife ] || [ `ls -l $USR_BIN_DIR/knife | awk '{print$NF}'` != "$BIN_DIR/knife" ]; then
+ echo "$USR_BIN_DIR/knife symlink to $BIN_DIR/knife was not correctly created by the pre-install script!"
+ exit 1
+fi
+
+if [ ! -L $USR_BIN_DIR/chef-solo ] || [ `ls -l $USR_BIN_DIR/chef-solo | awk '{print$NF}'` != "$BIN_DIR/chef-solo" ]; then
+ echo "$USR_BIN_DIR/chef-solo symlink to $BIN_DIR/chef-solo was not correctly created by the pre-install script!"
+ exit 1
+fi
+
+if [ ! -L $USR_BIN_DIR/ohai ] || [ `ls -l $USR_BIN_DIR/ohai | awk '{print$NF}'` != "$BIN_DIR/ohai" ]; then
+ echo "$USR_BIN_DIR/ohai symlink to $BIN_DIR/ohai was not correctly created by the pre-install script!"
+ exit 1
+fi
+
+# Ensure the calling environment (disapproval look Bundler) does not
+# infect our Ruby environment created by the `chef-client` cli.
+for ruby_env_var in _ORIGINAL_GEM_PATH \
+ BUNDLE_BIN_PATH \
+ BUNDLE_GEMFILE \
+ GEM_HOME \
+ GEM_PATH \
+ GEM_ROOT \
+ RUBYLIB \
+ RUBYOPT \
+ RUBY_ENGINE \
+ RUBY_ROOT \
+ RUBY_VERSION
+
+do
+ unset $ruby_env_var
+done
+
+chef-client --version
+
+# Exercise various packaged tools to validate binstub shebangs
+$EMBEDDED_BIN_DIR/ruby --version
+$EMBEDDED_BIN_DIR/gem --version
+$EMBEDDED_BIN_DIR/bundle --version
+$EMBEDDED_BIN_DIR/rspec --version
+
+# ffi-yajl must run in c-extension mode or we take perf hits, so we force it
+# before running rspec so that we don't wind up testing the ffi mode
+FORCE_FFI_YAJL=ext
+export FORCE_FFI_YAJL
+
+PATH=/opt/$PROJECT_NAME/bin:/opt/$PROJECT_NAME/embedded/bin:$PATH
+export PATH
+
+# Test against the vendored Chef gem
+cd /opt/$PROJECT_NAME/embedded/lib/ruby/gems/*/gems/chef-[0-9]*
+
+if [ ! -f "Gemfile.lock" ]; then
+ echo "Chef gem does not contain a Gemfile.lock! This is needed to run any tests."
+ exit 1
+fi
+
+sudo env PATH=$PATH TERM=xterm bundle exec rspec -r rspec_junit_formatter -f RspecJunitFormatter -o $WORKSPACE/test.xml -f documentation spec/functional spec/unit
diff --git a/omnibus/.gitignore b/omnibus/.gitignore
new file mode 100644
index 0000000000..d97af2ef9c
--- /dev/null
+++ b/omnibus/.gitignore
@@ -0,0 +1,11 @@
+vendor/bundle
+pkg/*
+.kitchen.local.yml
+bin/*
+files/chef-server-cookbooks/cache/
+files/msi/ChefClient-Config.wxi
+cookbooks
+vendor/cookbooks
+build_timestamp
+ldd.out
+jenkins/chef-solo
diff --git a/omnibus/.kitchen.local.yml.vmware.example b/omnibus/.kitchen.local.yml.vmware.example
new file mode 100644
index 0000000000..69f001ef97
--- /dev/null
+++ b/omnibus/.kitchen.local.yml.vmware.example
@@ -0,0 +1,6 @@
+driver:
+ name: vagrant
+ provider: vmware_fusion
+ customize:
+ numvcpus: 4
+ memsize: 4096
diff --git a/omnibus/.kitchen.yml b/omnibus/.kitchen.yml
new file mode 100644
index 0000000000..844ae9d895
--- /dev/null
+++ b/omnibus/.kitchen.yml
@@ -0,0 +1,111 @@
+#
+# NOTE: this runs the omnibus cookbook, but does not actually run Omnibus. Use
+# 'kichen converge' to setup the virtual machine and then `kitchen login` to
+# SSH into the machine and run Omnibus.
+#
+
+driver:
+ name: vagrant
+ forward_agent: yes
+ customize:
+ cpus: 4
+ memory: 4096
+ synced_folders:
+ - ['..', '/home/vagrant/chef']
+ - ['../../omnibus', '/home/vagrant/omnibus']
+ - ['../../omnibus-software', '/home/vagrant/omnibus-software']
+
+provisioner:
+ name: chef_zero
+ # Always install the latest version of Chef.
+ # This is not the version of chef that we're building - this is the version
+ # of chef that omnibus needs to build chef/chef.
+ require_chef_omnibus: true
+
+platforms:
+ - name: centos-5.10
+ run_list: yum-epel::default
+ - name: centos-6.5
+ run_list: yum-epel::default
+ - name: centos-7.0
+ run_list: yum-epel::default
+ - name: debian-7.2.0
+ run_list: apt::default
+ - name: debian-7.4
+ run_list: apt::default
+ - name: debian-6.0.8
+ run_list: apt::default
+ - name: freebsd-9.2
+ run_list:
+ - freebsd::portsnap
+ - freebsd::pkgng
+ - name: freebsd-10.0
+ run_list: freebsd::portsnap
+ - name: ubuntu-10.04
+ run_list: apt::default
+ - name: ubuntu-12.04
+ run_list: apt::default
+ - name: ubuntu-12.10
+ run_list: apt::default
+ - name: ubuntu-13.04
+ run_list: apt::default
+ - name: ubuntu-13.10
+ run_list: apt::default
+ - name: ubuntu-14.04
+ run_list: apt::default
+ # The following (private) boxes are shared via Atlas and are only
+ # available to users working for Chef. Sorry, it's about software licensing.
+ #
+ # Chef-internal users, you will need to:
+ # 1. Create an Atlas account: https://atlas.hashicorp.com/
+ # 2. Ping the Release Services room with your Atlas account name
+ # to be added to the relevant team in Atlas,
+ # 3. Do `vagrant login` with your Atlas creds so that you can download
+ # the private boxes.
+ #
+ # The Mac OS X boxes are VMware only also. You can enable VMware Fusion
+ # as the default provider by copying `.kitchen.local.yml.vmware.example`
+ # over to `.kitchen.local.yml`.
+ #
+ - name: macosx-10.8
+ driver:
+ box: chef/macosx-10.8 # private
+ - name: macosx-10.9
+ driver:
+ box: chef/macosx-10.9 # private
+ - name: macosx-10.10
+ driver:
+ box: chef/macosx-10.10 # private
+ - name: windows-7-professional
+ driver:
+ box: chef/windows-7-professional # private
+ - name: windows-8.1-professional
+ driver:
+ box: chef/windows-8.1-professional # private
+ - name: windows-2008r2-standard
+ driver:
+ box: chef/windows-server-2008r2-standard # private
+
+attribute_defaults: &attribute_defaults
+ build_user: vagrant
+ build_user_group: vagrant
+ build_user_password: vagrant
+
+suites:
+ - name: angrychef
+ attributes:
+ omnibus:
+ <<: *attribute_defaults
+ install_dir: /opt/angrychef
+ run_list:
+ - omnibus::default
+ - name: chef
+ provisioner:
+ chef_omnibus_install_options: -P angrychef
+ chef_omnibus_root: /opt/angrychef
+ attributes:
+ omnibus:
+ <<: *attribute_defaults
+ install_dir: /opt/chef
+ run_list:
+ - omnibus::default
diff --git a/omnibus/Berksfile b/omnibus/Berksfile
new file mode 100644
index 0000000000..acf0fa7389
--- /dev/null
+++ b/omnibus/Berksfile
@@ -0,0 +1,12 @@
+source 'https://api.berkshelf.com'
+
+cookbook 'omnibus'
+
+# Uncomment to use the latest version of the Omnibus cookbook from GitHub
+# cookbook 'omnibus', github: 'opscode-cookbooks/omnibus'
+
+group :integration do
+ cookbook 'apt', '~> 2.3'
+ cookbook 'freebsd', '~> 0.1'
+ cookbook 'yum-epel', '~> 0.3'
+end
diff --git a/omnibus/Berksfile.lock b/omnibus/Berksfile.lock
new file mode 100644
index 0000000000..975ab05c90
--- /dev/null
+++ b/omnibus/Berksfile.lock
@@ -0,0 +1,30 @@
+DEPENDENCIES
+ apt (~> 2.3)
+ freebsd (~> 0.1)
+ omnibus
+ yum-epel (~> 0.3)
+
+GRAPH
+ 7-zip (1.0.2)
+ windows (>= 1.2.2)
+ apt (2.7.0)
+ build-essential (2.2.3)
+ chef-sugar (3.1.0)
+ chef_handler (1.1.9)
+ freebsd (0.3.0)
+ homebrew (1.12.0)
+ build-essential (>= 2.1.2)
+ omnibus (2.6.7)
+ 7-zip (~> 1.0)
+ build-essential (~> 2.0)
+ chef-sugar (~> 3.0)
+ homebrew (~> 1.9)
+ windows (~> 1.30)
+ wix (~> 1.1)
+ windows (1.37.0)
+ chef_handler (>= 0.0.0)
+ wix (1.1.0)
+ windows (>= 1.2.2)
+ yum (3.6.0)
+ yum-epel (0.6.0)
+ yum (~> 3.0)
diff --git a/omnibus/Gemfile b/omnibus/Gemfile
new file mode 100644
index 0000000000..ad415d576a
--- /dev/null
+++ b/omnibus/Gemfile
@@ -0,0 +1,18 @@
+source 'https://rubygems.org'
+
+gem 'omnibus', github: 'chef/omnibus'
+gem 'omnibus-software', github: 'chef/omnibus-software'
+
+# This development group is installed by default when you run `bundle install`,
+# but if you are using Omnibus in a CI-based infrastructure, you do not need
+# the Test Kitchen-based build lab. You can skip these unnecessary dependencies
+# by running `bundle install --without development` to speed up build times.
+group :development do
+ # Use Berkshelf for resolving cookbook dependencies
+ gem 'berkshelf', '~> 3.0'
+
+ # Use Test Kitchen with Vagrant for converging the build environment
+ gem 'test-kitchen', '~> 1.4.0'
+ gem 'kitchen-vagrant', '~> 0.19.0'
+ gem 'winrm-transport', '~> 1.0'
+end
diff --git a/omnibus/Gemfile.lock b/omnibus/Gemfile.lock
new file mode 100644
index 0000000000..b452074e01
--- /dev/null
+++ b/omnibus/Gemfile.lock
@@ -0,0 +1,203 @@
+GIT
+ remote: git://github.com/chef/omnibus-software.git
+ revision: 7cbfe423d0720041c9007a0ddb15abc3b6480416
+ specs:
+ omnibus-software (4.0.0)
+
+GIT
+ remote: git://github.com/chef/omnibus.git
+ revision: b6422a3f9678a6f5cc145c9b0a488409ac0af73c
+ specs:
+ omnibus (5.0.0)
+ aws-sdk (~> 2)
+ chef-sugar (~> 3.0)
+ cleanroom (~> 1.0)
+ mixlib-shellout (~> 2.0)
+ mixlib-versioning
+ ohai (~> 8.0)
+ ruby-progressbar (~> 1.7)
+ thor (~> 0.18)
+
+GEM
+ remote: https://rubygems.org/
+ specs:
+ addressable (2.3.8)
+ aws-sdk (2.2.9)
+ aws-sdk-resources (= 2.2.9)
+ aws-sdk-core (2.2.9)
+ jmespath (~> 1.0)
+ aws-sdk-resources (2.2.9)
+ aws-sdk-core (= 2.2.9)
+ berkshelf (3.2.4)
+ addressable (~> 2.3.4)
+ berkshelf-api-client (~> 1.2)
+ buff-config (~> 1.0)
+ buff-extensions (~> 1.0)
+ buff-shell_out (~> 0.1)
+ celluloid (~> 0.16.0)
+ celluloid-io (~> 0.16.1)
+ cleanroom (~> 1.0)
+ faraday (~> 0.9.0)
+ minitar (~> 0.5.4)
+ octokit (~> 3.0)
+ retryable (~> 2.0)
+ ridley (~> 4.0)
+ solve (~> 1.1)
+ thor (~> 0.19)
+ berkshelf-api-client (1.2.1)
+ faraday (~> 0.9.0)
+ buff-config (1.0.1)
+ buff-extensions (~> 1.0)
+ varia_model (~> 0.4)
+ buff-extensions (1.0.0)
+ buff-ignore (1.1.1)
+ buff-ruby_engine (0.1.0)
+ buff-shell_out (0.2.0)
+ buff-ruby_engine (~> 0.1.0)
+ builder (3.2.2)
+ celluloid (0.16.0)
+ timers (~> 4.0.0)
+ celluloid-io (0.16.2)
+ celluloid (>= 0.16.0)
+ nio4r (>= 1.1.0)
+ chef-config (12.6.0)
+ mixlib-config (~> 2.0)
+ mixlib-shellout (~> 2.0)
+ chef-sugar (3.2.0)
+ cleanroom (1.0.0)
+ dep-selector-libgecode (1.0.2)
+ dep_selector (1.0.3)
+ dep-selector-libgecode (~> 1.0)
+ ffi (~> 1.9)
+ erubis (2.7.0)
+ faraday (0.9.1)
+ multipart-post (>= 1.2, < 3)
+ ffi (1.9.10)
+ ffi (1.9.10-x86-mingw32)
+ ffi-yajl (2.2.3)
+ libyajl2 (~> 1.2)
+ gssapi (1.2.0)
+ ffi (>= 1.0.1)
+ gyoku (1.3.1)
+ builder (>= 2.1.2)
+ hashie (2.1.2)
+ hitimes (1.2.2)
+ hitimes (1.2.2-x86-mingw32)
+ httpclient (2.6.0.1)
+ ipaddress (0.8.2)
+ jmespath (1.1.3)
+ json (1.8.3)
+ kitchen-vagrant (0.19.0)
+ test-kitchen (~> 1.4)
+ libyajl2 (1.2.0)
+ little-plugger (1.1.3)
+ logging (1.8.2)
+ little-plugger (>= 1.1.3)
+ multi_json (>= 1.8.4)
+ minitar (0.5.4)
+ mixlib-authentication (1.3.0)
+ mixlib-log
+ mixlib-cli (1.5.0)
+ mixlib-config (2.2.1)
+ mixlib-log (1.6.0)
+ mixlib-shellout (2.2.5)
+ mixlib-shellout (2.2.5-universal-mingw32)
+ win32-process (~> 0.8.2)
+ wmi-lite (~> 1.0)
+ mixlib-versioning (1.1.0)
+ multi_json (1.11.2)
+ multipart-post (2.0.0)
+ net-http-persistent (2.9.4)
+ net-scp (1.2.1)
+ net-ssh (>= 2.6.5)
+ net-ssh (2.9.2)
+ nio4r (1.1.1)
+ nori (2.6.0)
+ octokit (3.8.0)
+ sawyer (~> 0.6.0, >= 0.5.3)
+ ohai (8.8.1)
+ chef-config (>= 12.5.0.alpha.1, < 13)
+ ffi (~> 1.9)
+ ffi-yajl (~> 2.2)
+ ipaddress
+ mixlib-cli
+ mixlib-config (~> 2.0)
+ mixlib-log
+ mixlib-shellout (~> 2.0)
+ rake (~> 10.1)
+ systemu (~> 2.6.4)
+ wmi-lite (~> 1.0)
+ rake (10.4.2)
+ retryable (2.0.1)
+ ridley (4.2.0)
+ addressable
+ buff-config (~> 1.0)
+ buff-extensions (~> 1.0)
+ buff-ignore (~> 1.1)
+ buff-shell_out (~> 0.1)
+ celluloid (~> 0.16.0)
+ celluloid-io (~> 0.16.1)
+ erubis
+ faraday (~> 0.9.0)
+ hashie (>= 2.0.2, < 3.0.0)
+ json (>= 1.7.7)
+ mixlib-authentication (>= 1.3.0)
+ net-http-persistent (>= 2.8)
+ retryable (~> 2.0)
+ semverse (~> 1.1)
+ varia_model (~> 0.4)
+ ruby-progressbar (1.7.5)
+ rubyntlm (0.4.0)
+ rubyzip (1.1.7)
+ safe_yaml (1.0.4)
+ sawyer (0.6.0)
+ addressable (~> 2.3.5)
+ faraday (~> 0.8, < 0.10)
+ semverse (1.2.1)
+ solve (1.2.1)
+ dep_selector (~> 1.0)
+ semverse (~> 1.1)
+ systemu (2.6.5)
+ test-kitchen (1.4.2)
+ mixlib-shellout (>= 1.2, < 3.0)
+ net-scp (~> 1.1)
+ net-ssh (~> 2.7, < 2.10)
+ safe_yaml (~> 1.0)
+ thor (~> 0.18)
+ thor (0.19.1)
+ timers (4.0.1)
+ hitimes
+ uuidtools (2.1.5)
+ varia_model (0.4.0)
+ buff-extensions (~> 1.0)
+ hashie (>= 2.0.2, < 3.0.0)
+ win32-process (0.8.3)
+ ffi (>= 1.0.0)
+ winrm (1.3.3)
+ builder (>= 2.1.2)
+ gssapi (~> 1.2)
+ gyoku (~> 1.0)
+ httpclient (~> 2.2, >= 2.2.0.2)
+ logging (~> 1.6, >= 1.6.1)
+ nori (~> 2.0)
+ rubyntlm (~> 0.4.0)
+ uuidtools (~> 2.1.2)
+ winrm-transport (1.0.1)
+ rubyzip (~> 1.1, >= 1.1.7)
+ winrm (~> 1.3)
+ wmi-lite (1.0.0)
+
+PLATFORMS
+ ruby
+ x86-mingw32
+
+DEPENDENCIES
+ berkshelf (~> 3.0)
+ kitchen-vagrant (~> 0.19.0)
+ omnibus!
+ omnibus-software!
+ test-kitchen (~> 1.4.0)
+ winrm-transport (~> 1.0)
+
+BUNDLED WITH
+ 1.11.2
diff --git a/omnibus/README.md b/omnibus/README.md
new file mode 100644
index 0000000000..1e73ad80e4
--- /dev/null
+++ b/omnibus/README.md
@@ -0,0 +1,144 @@
+Client Tools Omnibus project
+============================
+This project creates full-stack platform-specific packages for the following projects:
+
+* AngryChef
+* Chef
+* Chef with FIPS enabled
+
+Installation
+------------
+You must have a sane Ruby 1.9+ environment with Bundler installed. Ensure all
+the required gems are installed:
+
+```shell
+$ bundle install --without development
+```
+
+Usage
+-----
+### Build
+
+You create a platform-specific package using the `build project` command:
+
+```shell
+$ bundle exec omnibus build <PROJECT>
+```
+
+The platform/architecture type of the package created will match the platform
+where the `build project` command is invoked. For example, running this command
+on a MacBook Pro will generate a Mac OS X package. After the build completes
+packages will be available in the `pkg/` folder.
+
+### Clean
+
+You can clean up all temporary files generated during the build process with
+the `clean` command:
+
+```shell
+$ bundle exec omnibus clean <PROJECT>
+```
+
+Adding the `--purge` purge option removes __ALL__ files generated during the
+build including the project install directory (`/opt/chef`) and
+the package cache directory (`/var/cache/omnibus/pkg`):
+
+```shell
+$ bundle exec omnibus clean <PROJECT> --purge
+```
+
+### Publish
+
+Omnibus has a built-in mechanism for releasing to a variety of "backends", such
+as Amazon S3 and Artifactory. You must set the proper credentials in your `omnibus.rb`
+config file or specify them via the command line.
+
+```shell
+$ bundle exec omnibus publish path/to/*.deb --backend s3
+```
+
+### Help
+
+Full help for the Omnibus command line interface can be accessed with the
+`help` command:
+
+```shell
+$ bundle exec omnibus help
+```
+
+Kitchen-based Build Environment
+-------------------------------
+Every Omnibus project ships will a project-specific
+[Berksfile](http://berkshelf.com/) that will allow you to build your omnibus projects on all of the projects listed
+in the `.kitchen.yml`. You can add/remove additional platforms as needed by
+changing the list found in the `.kitchen.yml` `platforms` YAML stanza.
+
+This build environment is designed to get you up-and-running quickly. However,
+there is nothing that restricts you to building on other platforms. Simply use
+the [omnibus cookbook](https://github.com/opscode-cookbooks/omnibus) to setup
+your desired platform and execute the build steps listed above.
+
+The default build environment requires Test Kitchen and VirtualBox for local
+development. Test Kitchen also exposes the ability to provision instances using
+various cloud providers like AWS, DigitalOcean, or OpenStack. For more
+information, please see the [Test Kitchen documentation](http://kitchen.ci).
+
+Once you have tweaked your `.kitchen.yml` (or `.kitchen.local.yml`) to your
+liking, you can bring up an individual build environment using the `kitchen`
+command.
+
+```shell
+$ bundle exec kitchen converge <PROJECT>-ubuntu-1204
+```
+
+Then login to the instance and build the project as described in the Usage
+section:
+
+```shell
+$ bundle exec kitchen login <PROJECT>-ubuntu-1204
+[vagrant@ubuntu...] $ cd chef/omnibus
+[vagrant@ubuntu...] $ bundle install --without development # Don't install dev tools!
+[vagrant@ubuntu...] $ ...
+[vagrant@ubuntu...] $ bundle exec omnibus build <PROJECT> -l internal
+```
+
+You can also login to Windows instances but will have to manually call the
+`load-omnibus-toolchain.bat` script which initializes the build environment.
+Please note the mounted code directory is also at `C:\home\vagrant\chef\omnibus`
+as opposed to `C:\Users\vagrant\chef\omnibus`.
+
+```shell
+$ bundle exec kitchen login <PROJECT>-windows-81-professional
+Last login: Sat Sep 13 10:19:04 2014 from 172.16.27.1
+Microsoft Windows [Version 6.3.9600]
+(c) 2013 Microsoft Corporation. All rights reserved.
+
+C:\Users\vagrant>load-omnibus-toolchain.bat
+
+C:\Users\vagrant>cd C:\home\vagrant\chef\omnibus
+
+C:\home\vagrant\chef\omnibus>bundle install --without development
+
+C:\home\vagrant\chef\omnibus>bundle exec omnibus build <PROJECT> -l internal
+```
+
+For a complete list of all commands and platforms, run `kitchen list` or
+`kitchen help`.
+
+License
+-------
+```text
+Copyright 2012-2014 Chef Software, Inc.
+
+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.
+```
diff --git a/omnibus/config/projects/angrychef.rb b/omnibus/config/projects/angrychef.rb
new file mode 100644
index 0000000000..c585c73040
--- /dev/null
+++ b/omnibus/config/projects/angrychef.rb
@@ -0,0 +1,41 @@
+#
+# Copyright 2012-2015 Chef Software, Inc.
+#
+# 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.
+#
+
+#
+# This is a clone of the Chef project that we can install on the Chef build and
+# test machines. As such this project definition is just a thin wrapper around
+# `config/project/chef.rb`.
+#
+chef_project_contents = IO.read(File.expand_path('../chef.rb', __FILE__))
+self.instance_eval chef_project_contents
+
+name "angrychef"
+friendly_name "Angry Chef Client"
+
+if windows?
+ # NOTE: Ruby DevKit fundamentally CANNOT be installed into "Program Files"
+ # Native gems will use gcc which will barf on files with spaces,
+ # which is only fixable if everyone in the world fixes their Makefiles
+ install_dir "#{default_root}/opscode/#{name}"
+ package_name "angrychef"
+else
+ install_dir "#{default_root}/#{name}"
+end
+
+resources_path "#{resources_path}/../chef"
+
+msi_upgrade_code = "D7FDDC1A-7668-404E-AD2F-61F875632A9C"
+project_location_dir = "angrychef"
diff --git a/omnibus/config/projects/chef-fips.rb b/omnibus/config/projects/chef-fips.rb
new file mode 100644
index 0000000000..32bbbc9c48
--- /dev/null
+++ b/omnibus/config/projects/chef-fips.rb
@@ -0,0 +1,48 @@
+#
+# Copyright 2012-2015 Chef Software, Inc.
+#
+# 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.
+#
+
+#
+# This is the chef client build with FIPS mode enabled.
+# It's a stub for now and produces identical results
+#
+chef_project_contents = IO.read(File.expand_path('../chef.rb', __FILE__))
+self.instance_eval chef_project_contents
+
+name "chef-fips"
+friendly_name "Chef Client with FIPS OpenSSL"
+
+if windows?
+ # NOTE: Ruby DevKit fundamentally CANNOT be installed into "Program Files"
+ # Native gems will use gcc which will barf on files with spaces,
+ # which is only fixable if everyone in the world fixes their Makefiles
+ install_dir "#{default_root}/opscode/#{name}"
+ package_name "chef-fips"
+else
+ install_dir "#{default_root}/#{name}"
+end
+
+# Global FIPS override flag.
+override :fips, enabled: true
+override :'ruby-windows', version: "2.0.0-p647"
+
+override :chef, version: "jdm/1.3-fips"
+override :ohai, version: "master"
+
+msi_upgrade_code = "819F5DB3-B818-4358-BB2B-54B8171D0A26"
+project_location_dir = "chef-fips"
+
+# Use chef's scripts for everything.
+resources_path "#{resources_path}/../chef"
diff --git a/omnibus/config/projects/chef.rb b/omnibus/config/projects/chef.rb
new file mode 100644
index 0000000000..b8b121e0d2
--- /dev/null
+++ b/omnibus/config/projects/chef.rb
@@ -0,0 +1,86 @@
+#
+# Copyright 2012-2014 Chef Software, Inc.
+#
+# 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.
+#
+
+name "chef"
+friendly_name "Chef Client"
+maintainer "Chef Software, Inc. <maintainers@chef.io>"
+homepage "https://www.chef.io"
+
+build_iteration 1
+build_version '12.6.0'
+
+if windows?
+ # NOTE: Ruby DevKit fundamentally CANNOT be installed into "Program Files"
+ # Native gems will use gcc which will barf on files with spaces,
+ # which is only fixable if everyone in the world fixes their Makefiles
+ install_dir "#{default_root}/opscode/#{name}"
+ package_name "chef-client"
+else
+ install_dir "#{default_root}/#{name}"
+end
+
+override :bundler, version: "1.10.6"
+override :ruby, version: "2.1.6"
+
+override :'ruby-windows', version: "2.0.0-p645"
+# Leave dev-kit pinned to 4.5 because 4.7 is 20MB larger and we don't want
+# to unnecessarily make the client any fatter.
+if windows_arch_i386?
+ override :'ruby-windows-devkit', version: "4.5.2-20111229-1559"
+end
+
+######
+# This points to jay's patched version for now to avoid a security
+# vulnerability and to allow pry to get installed on windows builds.
+# See the software definition for details.
+if windows?
+ override :rubygems, version: "jdm/2.4.8-patched"
+else
+ override :rubygems, version: "2.4.8"
+end
+
+# Chef Release version pinning
+override :chef, version: 'local_source'
+override :ohai, version: 'master'
+
+
+dependency "preparation"
+dependency "chef"
+dependency "shebang-cleanup"
+dependency "version-manifest"
+dependency "openssl-customization"
+
+package :rpm do
+ signing_passphrase ENV['OMNIBUS_RPM_SIGNING_PASSPHRASE']
+end
+
+proj_to_work_around_cleanroom = self
+package :pkg do
+ identifier "com.getchef.pkg.#{proj_to_work_around_cleanroom.name}"
+ signing_identity "Developer ID Installer: Chef Software, Inc. (EU3VF8YLX2)"
+end
+compress :dmg
+
+msi_upgrade_code = "D607A85C-BDFA-4F08-83ED-2ECB4DCD6BC5"
+project_location_dir = name
+package :msi do
+ fast_msi true
+ upgrade_code msi_upgrade_code
+ wix_candle_extension 'WixUtilExtension'
+ signing_identity "F74E1A68005E8A9C465C3D2FF7B41F3988F0EA09", machine_store: true
+ parameters ChefLogDllPath: windows_safe_path(gem_path("chef-[0-9]*-mingw32/ext/win32-eventlog/chef-log.dll")),
+ ProjectLocationDir: project_location_dir
+end
diff --git a/omnibus/files/mapfiles/solaris b/omnibus/files/mapfiles/solaris
new file mode 100644
index 0000000000..b33e54dcae
--- /dev/null
+++ b/omnibus/files/mapfiles/solaris
@@ -0,0 +1,19 @@
+$mapfile_version 2
+DEPEND_VERSIONS libnsl.so {
+ ALLOW = SUNW_1.1;
+ ALLOW = SUNWprivate_1.1;
+};
+DEPEND_VERSIONS libsocket.so {
+ ALLOW = SUNW_1.4;
+ ALLOW = SUNWprivate_1.1;
+};
+DEPEND_VERSIONS libdl.so {
+ ALLOW = SUNW_1.22.1;
+ ALLOW = SUNW_1.4;
+ ALLOW = SUNWprivate_1.1;
+};
+DEPEND_VERSIONS libc.so {
+ ALLOW = SUNW_1.22.1;
+ ALLOW = SUNW_1.4;
+ ALLOW = SUNWprivate_1.1;
+};
diff --git a/omnibus/files/openssl-customization/windows/ssl_env_hack.rb b/omnibus/files/openssl-customization/windows/ssl_env_hack.rb
new file mode 100644
index 0000000000..221854437e
--- /dev/null
+++ b/omnibus/files/openssl-customization/windows/ssl_env_hack.rb
@@ -0,0 +1,34 @@
+#
+# Copyright:: Copyright (c) 2014 Chef Software, 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.
+#
+
+# This script sets the SSL_CERT_FILE environment variable to the CA cert bundle
+# that ships with omnibus packages of Chef and Chef DK. If this environment
+# variable is already configured, this script is a no-op.
+#
+# This is required to make Chef tools use https URLs out of the box.
+
+unless ENV.key?("SSL_CERT_FILE")
+ base_dirs = File.dirname(__FILE__).split(File::SEPARATOR)
+
+ (base_dirs.length - 1).downto(0) do |i|
+ candidate_ca_bundle = File.join(base_dirs[0..i] + [ "ssl/certs/cacert.pem" ])
+ if File.exist?(candidate_ca_bundle)
+ ENV["SSL_CERT_FILE"] = candidate_ca_bundle
+ break
+ end
+ end
+end
diff --git a/omnibus/omnibus.rb b/omnibus/omnibus.rb
new file mode 100644
index 0000000000..3afa2ad84e
--- /dev/null
+++ b/omnibus/omnibus.rb
@@ -0,0 +1,54 @@
+#
+# This file is used to configure the Omnibus projects in this repo. It contains
+# some minimal configuration examples for working with Omnibus. For a full list
+# of configurable options, please see the documentation for +omnibus/config.rb+.
+#
+
+# Build internally
+# ------------------------------
+# By default, Omnibus uses system folders (like +/var+ and +/opt+) to build and
+# cache components. If you would to build everything internally, you can
+# uncomment the following options. This will prevent the need for root
+# permissions in most cases.
+#
+# Uncomment this line to change the default base directory to "local"
+# -------------------------------------------------------------------
+# base_dir './local'
+#
+# Alternatively you can tune the individual values
+# ------------------------------------------------
+# cache_dir './local/omnibus/cache'
+# git_cache_dir './local/omnibus/cache/git_cache'
+# source_dir './local/omnibus/src'
+# build_dir './local/omnibus/build'
+# package_dir './local/omnibus/pkg'
+# package_tmp './local/omnibus/pkg-tmp'
+
+# Windows architecture defaults - set to x86 unless otherwise specified.
+# ------------------------------
+windows_arch %w{x86 x64}.include?((ENV['OMNIBUS_WINDOWS_ARCH'] || '').downcase) ?
+ ENV['OMNIBUS_WINDOWS_ARCH'].downcase.to_sym : :x86
+
+# Disable git caching
+# ------------------------------
+# use_git_caching false
+
+# Enable S3 asset caching
+# ------------------------------
+use_s3_caching true
+s3_access_key ENV['AWS_ACCESS_KEY_ID']
+s3_secret_key ENV['AWS_SECRET_ACCESS_KEY']
+s3_bucket 'opscode-omnibus-cache'
+
+build_retries 3
+fetcher_retries 3
+fetcher_read_timeout 120
+
+# We limit this to 10 workers to eliminate transient timing issues in the
+# way Ruby (and other components) compiles on some more esoteric *nixes.
+workers 10
+
+# Load additional software
+# ------------------------------
+# software_gems ['omnibus-software', 'my-company-software']
+# local_software_dirs ['/path/to/local/software']
diff --git a/omnibus/package-scripts/angrychef/postinst b/omnibus/package-scripts/angrychef/postinst
new file mode 100755
index 0000000000..c0fc3f5525
--- /dev/null
+++ b/omnibus/package-scripts/angrychef/postinst
@@ -0,0 +1,115 @@
+#!/bin/sh
+# WARNING: REQUIRES /bin/sh
+#
+# - must run on /bin/sh on solaris 9
+# - must run on /bin/sh on AIX 6.x
+# - if you think you are a bash wizard, you probably do not understand
+# this programming language. do not touch.
+# - if you are under 40, get peer review from your elders.
+#
+# Install a full Opscode Client
+#
+
+PROGNAME=`basename $0`
+INSTALLER_DIR=/opt/angrychef
+CONFIG_DIR=/etc/chef
+USAGE="usage: $0 [-v validation_key] ([-o organization] || [-u url])"
+
+error_exit()
+{
+ echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
+ exit 1
+}
+
+is_darwin()
+{
+ uname -v | grep "^Darwin" 2>&1 >/dev/null
+}
+
+is_smartos()
+{
+ uname -v | grep "^joyent" 2>&1 >/dev/null
+}
+
+if is_smartos; then
+ PREFIX="/opt/local"
+elif is_darwin; then
+ PREFIX="/usr/local"
+ mkdir -p "$PREFIX/bin"
+else
+ PREFIX="/usr"
+fi
+
+validation_key=
+organization=
+chef_url=
+
+while getopts o:u:v: opt
+do
+ case "$opt" in
+ v) validation_key="${OPTARG}";;
+ o) organization="${OPTARG}"; chef_url="https://api.opscode.com/organizations/${OPTARG}";;
+ u) chef_url="${OPTARG}";;
+ \?) # unknown flag
+ echo >&2 ${USAGE}
+ exit 1;;
+ esac
+done
+shift `expr ${OPTIND} - 1`
+
+if [ "" != "$chef_url" ]; then
+ mkdir -p ${CONFIG_DIR} || error_exit "Cannot create ${CONFIG_DIR}!"
+ (
+ cat <<'EOP'
+log_level :info
+log_location STDOUT
+EOP
+ ) > ${CONFIG_DIR}/client.rb
+ if [ "" != "$chef_url" ]; then
+ echo "chef_server_url '${chef_url}'" >> ${CONFIG_DIR}/client.rb
+ fi
+ if [ "" != "$organization" ]; then
+ echo "validation_client_name '${organization}-validator'" >> ${CONFIG_DIR}/client.rb
+ fi
+ chmod 644 ${CONFIG_DIR}/client.rb
+fi
+
+if [ "" != "$validation_key" ]; then
+ cp ${validation_key} ${CONFIG_DIR}/validation.pem || error_exit "Cannot copy the validation key!"
+ chmod 600 ${CONFIG_DIR}/validation.pem
+fi
+
+# rm -f before ln -sf is required for solaris 9
+rm -f $PREFIX/bin/chef-client
+rm -f $PREFIX/bin/chef-solo
+rm -f $PREFIX/bin/chef-apply
+rm -f $PREFIX/bin/chef-shell
+rm -f $PREFIX/bin/knife
+rm -f $PREFIX/bin/shef
+rm -f $PREFIX/bin/ohai
+
+ln -sf $INSTALLER_DIR/bin/chef-solo $PREFIX/bin || error_exit "Cannot link chef-solo to $PREFIX/bin"
+if [ -f "$INSTALLER_DIR/bin/chef-apply" ]; then
+ ln -sf $INSTALLER_DIR/bin/chef-apply $PREFIX/bin || error_exit "Cannot link chef-apply to $PREFIX/bin"
+fi
+if [ -f "$INSTALLER_DIR/bin/chef-shell" ]; then
+ ln -sf $INSTALLER_DIR/bin/chef-shell $PREFIX/bin || error_exit "Cannot link chef-shell to $PREFIX/bin"
+fi
+ln -sf $INSTALLER_DIR/bin/knife $PREFIX/bin || error_exit "Cannot link knife to $PREFIX/bin"
+if [ -f "$INSTALLER_DIR/bin/shef" ]; then
+ ln -sf $INSTALLER_DIR/bin/shef $PREFIX/bin || error_exit "Cannot link shef to $PREFIX/bin"
+fi
+ln -sf $INSTALLER_DIR/bin/ohai $PREFIX/bin || error_exit "Cannot link ohai to $PREFIX/bin"
+
+# We test for the presence of /usr/bin/chef-client to know if this script succeeds, so this
+# must appear as the last real action in the script
+ln -sf $INSTALLER_DIR/bin/chef-client $PREFIX/bin || error_exit "Cannot link chef-client to $PREFIX/bin"
+
+# Ensure all files/directories in $INSTALLER_DIR are owned by root. This
+# has been fixed on new installs but upgrades from old installs need to
+# be manually fixed.
+chown -Rh 0:0 $INSTALLER_DIR
+
+echo "Thank you for installing Chef!"
+
+exit 0
diff --git a/omnibus/package-scripts/angrychef/postrm b/omnibus/package-scripts/angrychef/postrm
new file mode 100755
index 0000000000..724c082be7
--- /dev/null
+++ b/omnibus/package-scripts/angrychef/postrm
@@ -0,0 +1,42 @@
+#!/bin/sh
+# WARNING: REQUIRES /bin/sh
+#
+# - must run on /bin/sh on solaris 9
+# - must run on /bin/sh on AIX 6.x
+# - if you think you are a bash wizard, you probably do not understand
+# this programming language. do not touch.
+# - if you are under 40, get peer review from your elders.
+
+is_smartos() {
+ uname -v | grep "^joyent" 2>&1 >/dev/null
+}
+
+is_darwin()
+{
+ uname -v | grep "^Darwin" 2>&1 >/dev/null
+}
+
+if is_smartos; then
+ PREFIX="/opt/local"
+elif is_darwin; then
+ PREFIX="/usr/local"
+else
+ PREFIX="/usr"
+fi
+
+cleanup_symlinks() {
+ binaries="chef-client chef-solo chef-apply chef-shell knife shef ohai"
+ for binary in $binaries; do
+ rm -f $PREFIX/bin/$binary
+ done
+}
+
+# Clean up binary symlinks if they exist
+# see: http://tickets.opscode.com/browse/CHEF-3022
+if [ ! -f /etc/redhat-release -a ! -f /etc/fedora-release -a ! -f /etc/system-release -a ! -f /etc/SuSE-release ]; then
+ # not a redhat-ish RPM-based system
+ cleanup_symlinks
+elif [ "x$1" = "x0" ]; then
+ # RPM-based system and we're deinstalling rather than upgrading
+ cleanup_symlinks
+fi
diff --git a/omnibus/package-scripts/chef-fips/postinst b/omnibus/package-scripts/chef-fips/postinst
new file mode 100755
index 0000000000..6f13382b61
--- /dev/null
+++ b/omnibus/package-scripts/chef-fips/postinst
@@ -0,0 +1,115 @@
+#!/bin/sh
+# WARNING: REQUIRES /bin/sh
+#
+# - must run on /bin/sh on solaris 9
+# - must run on /bin/sh on AIX 6.x
+# - if you think you are a bash wizard, you probably do not understand
+# this programming language. do not touch.
+# - if you are under 40, get peer review from your elders.
+#
+# Install a full Opscode Client
+#
+
+PROGNAME=`basename $0`
+INSTALLER_DIR=/opt/chef-fips
+CONFIG_DIR=/etc/chef
+USAGE="usage: $0 [-v validation_key] ([-o organization] || [-u url])"
+
+error_exit()
+{
+ echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
+ exit 1
+}
+
+is_darwin()
+{
+ uname -v | grep "^Darwin" 2>&1 >/dev/null
+}
+
+is_smartos()
+{
+ uname -v | grep "^joyent" 2>&1 >/dev/null
+}
+
+if is_smartos; then
+ PREFIX="/opt/local"
+elif is_darwin; then
+ PREFIX="/usr/local"
+ mkdir -p "$PREFIX/bin"
+else
+ PREFIX="/usr"
+fi
+
+validation_key=
+organization=
+chef_url=
+
+while getopts o:u:v: opt
+do
+ case "$opt" in
+ v) validation_key="${OPTARG}";;
+ o) organization="${OPTARG}"; chef_url="https://api.opscode.com/organizations/${OPTARG}";;
+ u) chef_url="${OPTARG}";;
+ \?) # unknown flag
+ echo >&2 ${USAGE}
+ exit 1;;
+ esac
+done
+shift `expr ${OPTIND} - 1`
+
+if [ "" != "$chef_url" ]; then
+ mkdir -p ${CONFIG_DIR} || error_exit "Cannot create ${CONFIG_DIR}!"
+ (
+ cat <<'EOP'
+log_level :info
+log_location STDOUT
+EOP
+ ) > ${CONFIG_DIR}/client.rb
+ if [ "" != "$chef_url" ]; then
+ echo "chef_server_url '${chef_url}'" >> ${CONFIG_DIR}/client.rb
+ fi
+ if [ "" != "$organization" ]; then
+ echo "validation_client_name '${organization}-validator'" >> ${CONFIG_DIR}/client.rb
+ fi
+ chmod 644 ${CONFIG_DIR}/client.rb
+fi
+
+if [ "" != "$validation_key" ]; then
+ cp ${validation_key} ${CONFIG_DIR}/validation.pem || error_exit "Cannot copy the validation key!"
+ chmod 600 ${CONFIG_DIR}/validation.pem
+fi
+
+# rm -f before ln -sf is required for solaris 9
+rm -f $PREFIX/bin/chef-client
+rm -f $PREFIX/bin/chef-solo
+rm -f $PREFIX/bin/chef-apply
+rm -f $PREFIX/bin/chef-shell
+rm -f $PREFIX/bin/knife
+rm -f $PREFIX/bin/shef
+rm -f $PREFIX/bin/ohai
+
+ln -sf $INSTALLER_DIR/bin/chef-solo $PREFIX/bin || error_exit "Cannot link chef-solo to $PREFIX/bin"
+if [ -f "$INSTALLER_DIR/bin/chef-apply" ]; then
+ ln -sf $INSTALLER_DIR/bin/chef-apply $PREFIX/bin || error_exit "Cannot link chef-apply to $PREFIX/bin"
+fi
+if [ -f "$INSTALLER_DIR/bin/chef-shell" ]; then
+ ln -sf $INSTALLER_DIR/bin/chef-shell $PREFIX/bin || error_exit "Cannot link chef-shell to $PREFIX/bin"
+fi
+ln -sf $INSTALLER_DIR/bin/knife $PREFIX/bin || error_exit "Cannot link knife to $PREFIX/bin"
+if [ -f "$INSTALLER_DIR/bin/shef" ]; then
+ ln -sf $INSTALLER_DIR/bin/shef $PREFIX/bin || error_exit "Cannot link shef to $PREFIX/bin"
+fi
+ln -sf $INSTALLER_DIR/bin/ohai $PREFIX/bin || error_exit "Cannot link ohai to $PREFIX/bin"
+
+# We test for the presence of /usr/bin/chef-client to know if this script succeeds, so this
+# must appear as the last real action in the script
+ln -sf $INSTALLER_DIR/bin/chef-client $PREFIX/bin || error_exit "Cannot link chef-client to $PREFIX/bin"
+
+# Ensure all files/directories in $INSTALLER_DIR are owned by root. This
+# has been fixed on new installs but upgrades from old installs need to
+# be manually fixed.
+chown -Rh 0:0 $INSTALLER_DIR
+
+echo "Thank you for installing Chef!"
+
+exit 0
diff --git a/omnibus/package-scripts/chef-fips/postrm b/omnibus/package-scripts/chef-fips/postrm
new file mode 100755
index 0000000000..724c082be7
--- /dev/null
+++ b/omnibus/package-scripts/chef-fips/postrm
@@ -0,0 +1,42 @@
+#!/bin/sh
+# WARNING: REQUIRES /bin/sh
+#
+# - must run on /bin/sh on solaris 9
+# - must run on /bin/sh on AIX 6.x
+# - if you think you are a bash wizard, you probably do not understand
+# this programming language. do not touch.
+# - if you are under 40, get peer review from your elders.
+
+is_smartos() {
+ uname -v | grep "^joyent" 2>&1 >/dev/null
+}
+
+is_darwin()
+{
+ uname -v | grep "^Darwin" 2>&1 >/dev/null
+}
+
+if is_smartos; then
+ PREFIX="/opt/local"
+elif is_darwin; then
+ PREFIX="/usr/local"
+else
+ PREFIX="/usr"
+fi
+
+cleanup_symlinks() {
+ binaries="chef-client chef-solo chef-apply chef-shell knife shef ohai"
+ for binary in $binaries; do
+ rm -f $PREFIX/bin/$binary
+ done
+}
+
+# Clean up binary symlinks if they exist
+# see: http://tickets.opscode.com/browse/CHEF-3022
+if [ ! -f /etc/redhat-release -a ! -f /etc/fedora-release -a ! -f /etc/system-release -a ! -f /etc/SuSE-release ]; then
+ # not a redhat-ish RPM-based system
+ cleanup_symlinks
+elif [ "x$1" = "x0" ]; then
+ # RPM-based system and we're deinstalling rather than upgrading
+ cleanup_symlinks
+fi
diff --git a/omnibus/package-scripts/chef/postinst b/omnibus/package-scripts/chef/postinst
new file mode 100755
index 0000000000..88016f6c03
--- /dev/null
+++ b/omnibus/package-scripts/chef/postinst
@@ -0,0 +1,115 @@
+#!/bin/sh
+# WARNING: REQUIRES /bin/sh
+#
+# - must run on /bin/sh on solaris 9
+# - must run on /bin/sh on AIX 6.x
+# - if you think you are a bash wizard, you probably do not understand
+# this programming language. do not touch.
+# - if you are under 40, get peer review from your elders.
+#
+# Install a full Opscode Client
+#
+
+PROGNAME=`basename $0`
+INSTALLER_DIR=/opt/chef
+CONFIG_DIR=/etc/chef
+USAGE="usage: $0 [-v validation_key] ([-o organization] || [-u url])"
+
+error_exit()
+{
+ echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
+ exit 1
+}
+
+is_darwin()
+{
+ uname -v | grep "^Darwin" 2>&1 >/dev/null
+}
+
+is_smartos()
+{
+ uname -v | grep "^joyent" 2>&1 >/dev/null
+}
+
+if is_smartos; then
+ PREFIX="/opt/local"
+elif is_darwin; then
+ PREFIX="/usr/local"
+ mkdir -p "$PREFIX/bin"
+else
+ PREFIX="/usr"
+fi
+
+validation_key=
+organization=
+chef_url=
+
+while getopts o:u:v: opt
+do
+ case "$opt" in
+ v) validation_key="${OPTARG}";;
+ o) organization="${OPTARG}"; chef_url="https://api.opscode.com/organizations/${OPTARG}";;
+ u) chef_url="${OPTARG}";;
+ \?) # unknown flag
+ echo >&2 ${USAGE}
+ exit 1;;
+ esac
+done
+shift `expr ${OPTIND} - 1`
+
+if [ "" != "$chef_url" ]; then
+ mkdir -p ${CONFIG_DIR} || error_exit "Cannot create ${CONFIG_DIR}!"
+ (
+ cat <<'EOP'
+log_level :info
+log_location STDOUT
+EOP
+ ) > ${CONFIG_DIR}/client.rb
+ if [ "" != "$chef_url" ]; then
+ echo "chef_server_url '${chef_url}'" >> ${CONFIG_DIR}/client.rb
+ fi
+ if [ "" != "$organization" ]; then
+ echo "validation_client_name '${organization}-validator'" >> ${CONFIG_DIR}/client.rb
+ fi
+ chmod 644 ${CONFIG_DIR}/client.rb
+fi
+
+if [ "" != "$validation_key" ]; then
+ cp ${validation_key} ${CONFIG_DIR}/validation.pem || error_exit "Cannot copy the validation key!"
+ chmod 600 ${CONFIG_DIR}/validation.pem
+fi
+
+# rm -f before ln -sf is required for solaris 9
+rm -f $PREFIX/bin/chef-client
+rm -f $PREFIX/bin/chef-solo
+rm -f $PREFIX/bin/chef-apply
+rm -f $PREFIX/bin/chef-shell
+rm -f $PREFIX/bin/knife
+rm -f $PREFIX/bin/shef
+rm -f $PREFIX/bin/ohai
+
+ln -sf $INSTALLER_DIR/bin/chef-solo $PREFIX/bin || error_exit "Cannot link chef-solo to $PREFIX/bin"
+if [ -f "$INSTALLER_DIR/bin/chef-apply" ]; then
+ ln -sf $INSTALLER_DIR/bin/chef-apply $PREFIX/bin || error_exit "Cannot link chef-apply to $PREFIX/bin"
+fi
+if [ -f "$INSTALLER_DIR/bin/chef-shell" ]; then
+ ln -sf $INSTALLER_DIR/bin/chef-shell $PREFIX/bin || error_exit "Cannot link chef-shell to $PREFIX/bin"
+fi
+ln -sf $INSTALLER_DIR/bin/knife $PREFIX/bin || error_exit "Cannot link knife to $PREFIX/bin"
+if [ -f "$INSTALLER_DIR/bin/shef" ]; then
+ ln -sf $INSTALLER_DIR/bin/shef $PREFIX/bin || error_exit "Cannot link shef to $PREFIX/bin"
+fi
+ln -sf $INSTALLER_DIR/bin/ohai $PREFIX/bin || error_exit "Cannot link ohai to $PREFIX/bin"
+
+# We test for the presence of /usr/bin/chef-client to know if this script succeeds, so this
+# must appear as the last real action in the script
+ln -sf $INSTALLER_DIR/bin/chef-client $PREFIX/bin || error_exit "Cannot link chef-client to $PREFIX/bin"
+
+# Ensure all files/directories in $INSTALLER_DIR are owned by root. This
+# has been fixed on new installs but upgrades from old installs need to
+# be manually fixed.
+chown -Rh 0:0 $INSTALLER_DIR
+
+echo "Thank you for installing Chef!"
+
+exit 0
diff --git a/omnibus/package-scripts/chef/postrm b/omnibus/package-scripts/chef/postrm
new file mode 100755
index 0000000000..724c082be7
--- /dev/null
+++ b/omnibus/package-scripts/chef/postrm
@@ -0,0 +1,42 @@
+#!/bin/sh
+# WARNING: REQUIRES /bin/sh
+#
+# - must run on /bin/sh on solaris 9
+# - must run on /bin/sh on AIX 6.x
+# - if you think you are a bash wizard, you probably do not understand
+# this programming language. do not touch.
+# - if you are under 40, get peer review from your elders.
+
+is_smartos() {
+ uname -v | grep "^joyent" 2>&1 >/dev/null
+}
+
+is_darwin()
+{
+ uname -v | grep "^Darwin" 2>&1 >/dev/null
+}
+
+if is_smartos; then
+ PREFIX="/opt/local"
+elif is_darwin; then
+ PREFIX="/usr/local"
+else
+ PREFIX="/usr"
+fi
+
+cleanup_symlinks() {
+ binaries="chef-client chef-solo chef-apply chef-shell knife shef ohai"
+ for binary in $binaries; do
+ rm -f $PREFIX/bin/$binary
+ done
+}
+
+# Clean up binary symlinks if they exist
+# see: http://tickets.opscode.com/browse/CHEF-3022
+if [ ! -f /etc/redhat-release -a ! -f /etc/fedora-release -a ! -f /etc/system-release -a ! -f /etc/SuSE-release ]; then
+ # not a redhat-ish RPM-based system
+ cleanup_symlinks
+elif [ "x$1" = "x0" ]; then
+ # RPM-based system and we're deinstalling rather than upgrading
+ cleanup_symlinks
+fi
diff --git a/omnibus/resources/chef/dmg/background.png b/omnibus/resources/chef/dmg/background.png
new file mode 100644
index 0000000000..82c605ae51
--- /dev/null
+++ b/omnibus/resources/chef/dmg/background.png
Binary files differ
diff --git a/omnibus/resources/chef/dmg/icon.png b/omnibus/resources/chef/dmg/icon.png
new file mode 100644
index 0000000000..b65c309660
--- /dev/null
+++ b/omnibus/resources/chef/dmg/icon.png
Binary files differ
diff --git a/omnibus/resources/chef/msi/assets/LICENSE.rtf b/omnibus/resources/chef/msi/assets/LICENSE.rtf
new file mode 100644
index 0000000000..b18e6f59b8
--- /dev/null
+++ b/omnibus/resources/chef/msi/assets/LICENSE.rtf
@@ -0,0 +1,197 @@
+{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Courier New;}}
+
+{\*\generator Msftedit 5.41.21.2500;}\viewkind4\uc1\pard\qc\lang1033\f0\fs20 Apache License\par
+
+Version 2.0, January 2004\par
+
+http://www.apache.org/licenses/\par
+
+\pard\par
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\par
+
+\par
+
+1. Definitions.\par
+
+\par
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\par
+
+\par
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\par
+
+\par
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\par
+
+\par
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.\par
+
+\par
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation, source, and configuration files.\par
+
+\par
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\par
+
+\par
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\par
+
+\par
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\par
+
+\par
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."\par
+
+\par
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\par
+
+\par
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\par
+
+\par
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license plies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\par
+
+\par
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\par
+
+\par
+
+ (a) You must give any other recipients of the Work or\par
+
+ Derivative Works a copy of this License; and\par
+
+\par
+
+ (b) You must cause any modified files to carry prominent notices\par
+
+ stating that You changed the files; and\par
+
+\par
+
+ (c) You must retain, in the Source form of any Derivative Works\par
+
+ that You distribute, all copyright, patent, trademark, and\par
+
+ attribution notices from the Source form of the Work,\par
+
+ excluding those notices that do not pertain to any part of\par
+
+ the Derivative Works; and\par
+
+\par
+
+ (d) If the Work includes a "NOTICE" text file as part of its\par
+
+ distribution, then any Derivative Works that You distribute\par
+
+ must include a readable copy of the attribution notices\par
+
+ contained within such NOTICE file, excluding those notices\par
+
+ that do not pertain to any part of the Derivative Works, in\par
+
+ at least one of the following places: within a NOTICE text\par
+
+ file distributed as part of the Derivative Works; within the\par
+
+ Source form or documentation, if provided along with the\par
+
+ Derivative Works; or, within a display generated by the\par
+
+ Derivative Works, if and wherever such third-party notices\par
+
+ normally appear. The contents of the NOTICE file are for\par
+
+ informational purposes only and do not modify the License.\par
+
+ You may add Your own attribution notices within Derivative\par
+
+ Works that You distribute, alongside or as an addendum to the\par
+
+ NOTICE text from the Work, provided that such additional\par
+
+ attribution notices cannot be construed as modifying the\par
+
+ License.\par
+
+\par
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\par
+
+\par
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\par
+
+\par
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\par
+
+\par
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\par
+
+\par
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\par
+
+\par
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\par
+
+\par
+
+END OF TERMS AND CONDITIONS\par
+
+\par
+
+APPENDIX: How to apply the Apache License to your work.\par
+
+\par
+
+To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.\par
+
+\par
+
+ Copyright [yyyy] [name of copyright owner]\par
+
+\par
+
+ Licensed under the Apache License, Version 2.0 (the "License");\par
+
+ you may not use this file except in compliance with the License.\par
+
+ You may obtain a copy of the License at\par
+
+\par
+
+ http://www.apache.org/licenses/LICENSE-2.0\par
+
+\par
+
+ Unless required by applicable law or agreed to in writing, software\par
+
+ distributed under the License is distributed on an "AS IS" BASIS,\par
+
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\par
+
+ implied. See the License for the specific language governing\par
+
+ permissions and limitations under the License.\par
+
+\par
+
+}
+
+
diff --git a/omnibus/resources/chef/msi/assets/banner_background.bmp b/omnibus/resources/chef/msi/assets/banner_background.bmp
new file mode 100644
index 0000000000..5769a883c3
--- /dev/null
+++ b/omnibus/resources/chef/msi/assets/banner_background.bmp
Binary files differ
diff --git a/omnibus/resources/chef/msi/assets/dialog_background.bmp b/omnibus/resources/chef/msi/assets/dialog_background.bmp
new file mode 100644
index 0000000000..4dbe489e9c
--- /dev/null
+++ b/omnibus/resources/chef/msi/assets/dialog_background.bmp
Binary files differ
diff --git a/omnibus/resources/chef/msi/assets/oc.ico b/omnibus/resources/chef/msi/assets/oc.ico
new file mode 100644
index 0000000000..c4cee7bd75
--- /dev/null
+++ b/omnibus/resources/chef/msi/assets/oc.ico
Binary files differ
diff --git a/omnibus/resources/chef/msi/assets/oc_16x16.ico b/omnibus/resources/chef/msi/assets/oc_16x16.ico
new file mode 100644
index 0000000000..d3bd065a6a
--- /dev/null
+++ b/omnibus/resources/chef/msi/assets/oc_16x16.ico
Binary files differ
diff --git a/omnibus/resources/chef/msi/assets/oc_32x32.ico b/omnibus/resources/chef/msi/assets/oc_32x32.ico
new file mode 100644
index 0000000000..5eee0042c3
--- /dev/null
+++ b/omnibus/resources/chef/msi/assets/oc_32x32.ico
Binary files differ
diff --git a/omnibus/resources/chef/msi/localization-en-us.wxl.erb b/omnibus/resources/chef/msi/localization-en-us.wxl.erb
new file mode 100644
index 0000000000..767f615bb7
--- /dev/null
+++ b/omnibus/resources/chef/msi/localization-en-us.wxl.erb
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <!-- http://wix.codeplex.com/SourceControl/changeset/view/792e101c5cf7#src%2fext%2fUIExtension%2fwixlib%2fWixUI_en-us.wxl -->
+ <String Id="LANG">1033</String>
+ <String Id="ProductName"><%= friendly_name %></String>
+ <String Id="ManufacturerName"><%= maintainer.encode(:xml => :attr) %></String>
+ <String Id="WelcomeDlgTitle">{\WixUI_Font_Bigger}Welcome to the [ProductName] Setup Wizard</String>
+
+ <String Id="LicenseAgreementDlgTitle">{\WixUI_Font_Title_White}End-User License Agreement</String>
+ <String Id="LicenseAgreementDlgDescription">{\WixUI_Font_Normal_White}Please read the following license agreement carefully</String>
+
+ <String Id="InstallDirDlgTitle">{\WixUI_Font_Title_White}Destination Folder</String>
+ <String Id="InstallDirDlgDescription">{\WixUI_Font_Normal_White}Click Next to install to the default folder or click Change to choose another.</String>
+
+ <String Id="ProgressDlgTitleInstalling">{\WixUI_Font_Title_White}Installing [ProductName]</String>
+
+ <String Id="VerifyReadyDlgInstallTitle">{\WixUI_Font_Title_White}Ready to install [ProductName]</String>
+
+ <!-- Service -->
+ <!-- Keep these in sync with the name and description in chef-service-manager -->
+ <String Id="ServiceDisplayName"><%= friendly_name %> Service</String>
+ <String Id="ServiceDescription">Runs <%= friendly_name %> on regular, configurable intervals.</String>
+ <String Id="FeatureMainName"><%= friendly_name %></String>
+ <String Id="FeatureServiceName"><%= friendly_name %> Service</String>
+ <String Id="FeaturePSModuleName"><%= friendly_name %> PowerShell wrappers</String>
+
+ <String Id="MinimumOSVersionMessage">This package requires minimum OS version: Windows 7/Windows Server 2008 R2 or greater.</String>
+ <String Id="DowngradeErrorMessage">A newer version of [ProductName] is already installed.</String>
+ <String Id="FileExtractionProgress">Extracting files, please wait...</String>
+</WixLocalization>
diff --git a/omnibus/resources/chef/msi/parameters.wxi.erb b/omnibus/resources/chef/msi/parameters.wxi.erb
new file mode 100644
index 0000000000..febd1738e2
--- /dev/null
+++ b/omnibus/resources/chef/msi/parameters.wxi.erb
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Include>
+ <?define VersionNumber="<%= version %>" ?>
+ <?define DisplayVersionNumber="<%= display_version %>" ?>
+ <?define UpgradeCode="<%= upgrade_code %>" ?>
+<% parameters.each do |key, value| -%>
+ <?define <%= key %>="<%= value %>" ?>
+<% end -%>
+</Include>
diff --git a/omnibus/resources/chef/msi/source.wxs.erb b/omnibus/resources/chef/msi/source.wxs.erb
new file mode 100644
index 0000000000..d9c05127ed
--- /dev/null
+++ b/omnibus/resources/chef/msi/source.wxs.erb
@@ -0,0 +1,171 @@
+<?xml version='1.0'?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
+
+ <!-- This is how we include wxi files -->
+ <?include "parameters.wxi" ?>
+
+ <!--
+ Id="*" is to enable upgrading. * means that the product ID will be autogenerated on each build.
+ Name is made of localized product name and version number.
+ -->
+ <Product Id="*" Name="!(loc.ProductName) v$(var.DisplayVersionNumber)" Language="!(loc.LANG)"
+ Version="$(var.VersionNumber)" Manufacturer="!(loc.ManufacturerName)" UpgradeCode="$(var.UpgradeCode)">
+
+ <!--
+ Define the minimum supported installer version (2.0).
+ The install should be done for the whole machine not just the current user
+ -->
+ <Package InstallerVersion="200" InstallPrivileges="elevated"
+ Compressed="yes" InstallScope="perMachine" />
+
+ <Media Id="1" Cabinet="ChefClient.cab" EmbedCab="yes" CompressionLevel="high" />
+
+ <!--
+ Uncomment launch condition below to check for minimum OS
+ 601 = Windows 7/Server 2008R2.
+ -->
+ <!-- Condition Message="!(loc.MinimumOSVersionMessage)">
+ <![CDATA[Installed OR VersionNT >= 601]]>
+ </Condition -->
+
+ <!-- We always do Major upgrades -->
+ <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)" />
+
+ <!--
+ If fastmsi is set, custom actions will be invoked during install to unzip
+ project files, and during uninstall to remove the project folder
+ -->
+ <% if fastmsi %>
+ <SetProperty Id="FastUnzip"
+ Value="FASTZIPDIR=[INSTALLLOCATION];FASTZIPAPPNAME=$(var.ProjectLocationDir)"
+ Sequence="execute"
+ Before="FastUnzip" />
+
+ <CustomAction Id="FastUnzip"
+ BinaryKey="CustomActionFastMsiDLL"
+ DllEntry="FastUnzip"
+ Execute="deferred"
+ Impersonate="no"
+ Return="check" />
+
+ <Binary Id="CustomActionFastMsiDLL"
+ SourceFile="CustomActionFastMsi.CA.dll" />
+
+ <CustomAction Id="Cleanup"
+ Directory="INSTALLLOCATION"
+ ExeCommand="cmd /C &quot;rd /S /Q $(var.ProjectLocationDir)&quot;"
+ Execute="deferred"
+ Impersonate="no"
+ Return="ignore" />
+
+ <InstallExecuteSequence>
+ <Custom Action="FastUnzip" After="InstallFiles">NOT Installed</Custom>
+ <Custom Action="Cleanup" After="RemoveFiles">REMOVE~="ALL"</Custom>
+ </InstallExecuteSequence>
+
+ <UI>
+ <ProgressText Action="FastUnzip">!(loc.FileExtractionProgress)</ProgressText>
+ </UI>
+ <% end %>
+
+ <Directory Id="TARGETDIR" Name="SourceDir">
+ <Directory Id="WindowsVolume">
+ <!-- Service needs chef directory to be present. -->
+ <Directory Id="CONFIGLOCATION" Name="chef">
+ <Component Id="CONFIGLOCATIONDIR" Guid="{F66F6394-51A4-4C5D-908B-E55584473436}" >
+ <CreateFolder Directory="CONFIGLOCATION" />
+ </Component>
+ </Directory>
+ <Directory Id="INSTALLLOCATION" Name="opscode">
+ <Directory Id="PROJECTLOCATION" Name="$(var.ProjectLocationDir)" >
+ <Directory Id="PROJECTLOCATIONBIN" Name="bin" >
+ <Component Id="ChefClientPath" Guid="{7F663F88-55A2-4E20-82BF-8BD2E60BB83A}" >
+ <Environment Id="ClientPathEnvironment"
+ Name="PATH" Action="set" Part="last" System="yes" Value="[PROJECTLOCATIONBIN]" />
+ </Component>
+ </Directory>
+ <Directory Id="PSMODULES" Name="modules" >
+ <Component Id="ChefPSModulePath" Guid="{357DA654-F02E-430A-9EA6-A10554E3EF38}" >
+ <Environment Id="ChefPSModulePathEnvironment"
+ Name="PSModulePath" Action="set" Part="last" System="yes" Value="[PSMODULES]" />
+ </Component>
+ </Directory>
+ <Directory Id="EMBEDDED" Name="embedded" >
+ <Directory Id="EMBEDDEDBIN" Name="bin" >
+ <Component Id="ChefClientService" Guid="{69B2D8BE-4A47-4BE3-AEE8-83FAEB6E2FAF}" >
+ <File Id="RubyExecutable" Source="$(var.ProjectSourceDir)\embedded\bin\ruby.exe" KeyPath="yes" />
+ <ServiceInstall Name="chef-client" Type="ownProcess"
+ Start="auto" Vital="yes" ErrorControl="ignore"
+ Arguments="$(var.ProjectSourceDir)\bin\chef-windows-service"
+ DisplayName="!(loc.ServiceDisplayName)"
+ Description="!(loc.ServiceDescription)">
+ <ServiceDependency Id="Winmgmt" />
+ <ServiceConfig DelayedAutoStart="yes" OnInstall="yes" />
+ </ServiceInstall>
+ <ServiceControl Id="ControlChefClientService" Name="chef-client"
+ Remove="both" Stop="both" Wait="yes" />
+ </Component>
+ <Component Id="ChefClientLog" Guid="{8e492d59-3a0c-43fd-b889-e35dfa33da91}">
+ <util:EventSource xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
+ Name="Chef" Log="Application"
+ EventMessageFile="[PROJECTLOCATION]$(var.ChefLogDllPath)"
+ />
+ </Component>
+ </Directory>
+ </Directory>
+ </Directory>
+ </Directory>
+ </Directory>
+ </Directory>
+
+ <!-- Set the components defined in our fragment files that will be used for our feature -->
+ <Feature Id="ChefClientFeature" Title="!(loc.FeatureMainName)" Absent="disallow" AllowAdvertise="no" Level="1" ConfigurableDirectory="INSTALLLOCATION">
+ <ComponentGroupRef Id="ProjectDir" />
+ <ComponentRef Id="ChefClientPath" />
+ <ComponentRef Id="CONFIGLOCATIONDIR" />
+ <ComponentRef Id="ChefClientLog" />
+ </Feature>
+
+ <Feature Id="ChefPSModuleFeature" Title="!(loc.FeaturePSModuleName)" Level="1000" AllowAdvertise="no">
+ <ComponentRef Id="ChefPSModulePath" />
+ </Feature>
+
+ <Feature Id="ChefServiceFeature" Title="!(loc.FeatureServiceName)" Level="1000" AllowAdvertise="no">
+ <ComponentRef Id="ChefClientService" />
+ </Feature>
+
+ <!--
+ TODO:
+
+ * create initial Client config? ie C:\chef\client.rb?
+ * optionally install extra tools? ie git?
+
+ -->
+
+ <!--
+ UI Stuff
+ -->
+ <Icon Id="oc.ico" SourceFile="Resources\assets\oc_16x16.ico"/>
+ <Property Id="ARPPRODUCTICON" Value="oc.ico" />
+ <Property Id="ARPHELPLINK" Value="http://www.getchef.com/support/" />
+ <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
+
+ <UIRef Id="ChefClientUI_InstallDir"/>
+ <UI Id="ChefClientUI_InstallDir">
+ <UIRef Id="WixUI_FeatureTree"/>
+ <TextStyle Id="WixUI_Font_Normal_White" FaceName="Tahoma" Size="8" Red="255" Green="255" Blue="255" />
+ <TextStyle Id="WixUI_Font_Bigger_White" FaceName="Tahoma" Size="12" Red="255" Green="255" Blue="255" />
+ <TextStyle Id="WixUI_Font_Title_White" FaceName="Tahoma" Size="9" Bold="yes" Red="255" Green="255" Blue="255" />
+ </UI>
+
+ <WixVariable Id="WixUILicenseRtf" Value="Resources\assets\LICENSE.rtf" />
+ <WixVariable Id="WixUIDialogBmp" Value="Resources\assets\dialog_background.bmp" />
+ <WixVariable Id="WixUIBannerBmp" Value="Resources\assets\banner_background.bmp" />
+
+ <WixVariable Id="WixUIExclamationIco" Value="Resources\assets\oc_32x32.ico" />
+ <WixVariable Id="WixUIInfoIco" Value="Resources\assets\oc_32x32.ico" />
+ <WixVariable Id="WixUINewIco" Value="Resources\assets\oc_16x16.ico" />
+ <WixVariable Id="WixUIUpIco" Value="Resources\assets\oc_16x16.ico" />
+
+ </Product>
+</Wix>
diff --git a/omnibus/resources/chef/pkg/background.png b/omnibus/resources/chef/pkg/background.png
new file mode 100644
index 0000000000..027453ab8c
--- /dev/null
+++ b/omnibus/resources/chef/pkg/background.png
Binary files differ
diff --git a/omnibus/resources/chef/pkg/license.html.erb b/omnibus/resources/chef/pkg/license.html.erb
new file mode 100644
index 0000000000..21b7991abf
--- /dev/null
+++ b/omnibus/resources/chef/pkg/license.html.erb
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright <%= Time.new.year %> Chef Software Inc.
+
+ 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.
diff --git a/omnibus/resources/chef/pkg/welcome.html.erb b/omnibus/resources/chef/pkg/welcome.html.erb
new file mode 100644
index 0000000000..04a02fb225
--- /dev/null
+++ b/omnibus/resources/chef/pkg/welcome.html.erb
@@ -0,0 +1,5 @@
+
+ This installer will help you install <%= friendly_name %> version <%= build_version %>.
+
+
+ You will be guided through the steps necessary to install this software.