summaryrefslogtreecommitdiff
path: root/habitat
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2019-06-28 12:45:02 -0700
committerTim Smith <tsmith84@gmail.com>2019-06-28 12:45:02 -0700
commit34e553738e5fdd74ce7e823add2130d33e71003a (patch)
treeaeca9e0bc87293d00c9df891964bb0964ebcc01f /habitat
parente5ba371c42a16619b3ea9b4696d3f33bdfc2b134 (diff)
downloadchef-34e553738e5fdd74ce7e823add2130d33e71003a.tar.gz
Move the habitat content back to the habitat directory
These were moved when the scafolding was in this dir Signed-off-by: Tim Smith <tsmith@chef.io>
Diffstat (limited to 'habitat')
-rw-r--r--habitat/chef-infra-client/config/client.rb19
-rw-r--r--habitat/chef-infra-client/default.toml42
-rw-r--r--habitat/chef-infra-client/hooks/init5
-rw-r--r--habitat/chef-infra-client/hooks/run16
-rw-r--r--habitat/chef-infra-client/plan.sh132
5 files changed, 214 insertions, 0 deletions
diff --git a/habitat/chef-infra-client/config/client.rb b/habitat/chef-infra-client/config/client.rb
new file mode 100644
index 0000000000..3dd6d67e1b
--- /dev/null
+++ b/habitat/chef-infra-client/config/client.rb
@@ -0,0 +1,19 @@
+chef_repo_path "{{pkg.svc_data_path}}/chef"
+file_backup_path "{{pkg.svc_data_path}}/{{cfg.file_backup_path}}"
+pid_file "{{pkg.svc_data_path}}/{{cfg.pid_file}}"
+data_collector.server_url "{{cfg.data_collector.url}}"
+data_collector.token "{{cfg.data_collector.token}}"
+data_collector.mode "{{cfg.data_collector.mode}}".to_sym
+data_collector.raise_on_failure "{{cfg.data_collector.raise_on_failure}}"
+minimal_ohai "{{cfg.minimal_ohai}}"
+local_mode "{{cfg.local_mode}}"
+{{#if cfg.chef-client.node_name ~}}
+node_name "{{cfg.node_name}}"
+{{/if ~}}
+splay "{{cfg.splay}}"
+interval "{{cfg.interval}}"
+log_location "{{cfg.log_location}}"
+log_level "{{cfg.log_level}}".to_sym
+{{#if cfg.use_member_id_as_uuid ~}}
+chef_guid "{{svc.me.member_id}}"
+{{/if ~}}
diff --git a/habitat/chef-infra-client/default.toml b/habitat/chef-infra-client/default.toml
new file mode 100644
index 0000000000..2bea08934b
--- /dev/null
+++ b/habitat/chef-infra-client/default.toml
@@ -0,0 +1,42 @@
+pid_file = "chef.pid"
+run_list = ""
+
+local_mode = true
+
+# Positive License Acceptance. See https://docs.chef.io/chef_license_accept.html
+chef_license = "donotaccept"
+
+# Path to the chef client config on disk. If blank, will default to the one built by habitat.
+config_path = ""
+
+# The location in which nodes are stored when the chef-client is run in local mode
+
+log_location = "STDOUT"
+
+# The level of logging to be stored in a log file
+log_level = "info"
+
+# A random number between zero and splay that is added to interval
+splay = 10
+
+# The frequency (in seconds) at which the chef-client runs
+interval = 10
+
+minimal_ohai = false
+
+# The name of the node. Determines which configuration should be applied and sets the client_name,
+# which is the name used when authenticating to a Chef server. The default value is the FQDN of the chef-client,
+# as detected by Ohai. In general, Chef recommends that you leave this setting blank and let Ohai
+# assign the FQDN of the node as the node_name during each chef-clientrun.
+node_name = ""
+
+# The name of the environment
+environment = "_default"
+
+use_member_id_as_uuid = false
+
+[data_collector]
+url="http://localhost/data-collector/v0/"
+token="93a49a4f2482c64126f7b6015e6b0f30284287ee4054ff8807fb63d9cbd1c506"
+raise_on_failure=false
+mode="both"
diff --git a/habitat/chef-infra-client/hooks/init b/habitat/chef-infra-client/hooks/init
new file mode 100644
index 0000000000..a23344b2a9
--- /dev/null
+++ b/habitat/chef-infra-client/hooks/init
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+exec 2>&1
+
+mkdir -p "{{pkg.svc_data_path}}/chef"
diff --git a/habitat/chef-infra-client/hooks/run b/habitat/chef-infra-client/hooks/run
new file mode 100644
index 0000000000..598d609d7f
--- /dev/null
+++ b/habitat/chef-infra-client/hooks/run
@@ -0,0 +1,16 @@
+#!/bin/sh
+exec 2>&1
+
+export SSL_CERT_FILE="{{pkgPathFor "core/cacerts"}}/ssl/cert.pem"
+
+if [[ -z "{{cfg.config_path}}" ]]; then
+ CLIENT_CONFIG="{{pkg.svc_config_path}}"
+else
+ CLIENT_CONFIG="{{cfg.config_path}}"
+fi
+
+if [[ "${CLIENT_CONFIG##*.}" != "rb" ]]; then
+ CLIENT_CONFIG=${CLIENT_CONFIG}/client.rb
+fi
+
+exec chef-client --fork -c ${CLIENT_CONFIG} --chef-license {{cfg.chef_license}}
diff --git a/habitat/chef-infra-client/plan.sh b/habitat/chef-infra-client/plan.sh
new file mode 100644
index 0000000000..8d8d873956
--- /dev/null
+++ b/habitat/chef-infra-client/plan.sh
@@ -0,0 +1,132 @@
+pkg_name=chef-infra-client
+pkg_origin=chef
+pkg_maintainer="The Chef Maintainers <humans@chef.io>"
+pkg_description="The Chef Client"
+pkg_license=('Apache-2.0')
+pkg_filename="${pkg_name}-${pkg_version}.tar.gz"
+pkg_bin_dirs=(bin)
+pkg_build_deps=(
+ core/make
+ core/gcc
+ core/git
+)
+pkg_deps=(
+ core/glibc
+ core/ruby26
+ core/libxml2
+ core/libxslt
+ core/libiconv
+ core/xz
+ core/zlib
+ core/bundler
+ core/openssl
+ core/cacerts
+ core/libffi
+ core/coreutils
+ core/libarchive
+)
+pkg_svc_user=root
+
+pkg_version() {
+ cat "${SRC_PATH}/../../VERSION"
+}
+
+do_before() {
+ do_default_before
+ update_pkg_version
+}
+
+do_download() {
+ build_line "Locally creating archive of latest repository commit."
+ # source is in this repo, so we're going to create an archive from the
+ # appropriate path within the repo and place the generated tarball in the
+ # location expected by do_unpack
+ cd ${PLAN_CONTEXT}/../../
+ git archive --prefix=${pkg_name}-${pkg_version}/ --output=${HAB_CACHE_SRC_PATH}/${pkg_filename} HEAD
+}
+
+do_verify() {
+ build_line "Skipping checksum verification on the archive we just created."
+ return 0
+}
+
+do_prepare() {
+ export OPENSSL_LIB_DIR=$(pkg_path_for openssl)/lib
+ export OPENSSL_INCLUDE_DIR=$(pkg_path_for openssl)/include
+ export SSL_CERT_FILE=$(pkg_path_for cacerts)/ssl/cert.pem
+
+ build_line "Setting link for /usr/bin/env to 'coreutils'"
+ [[ ! -f /usr/bin/env ]] && ln -s $(pkg_path_for coreutils)/bin/env /usr/bin/env
+
+ return 0
+}
+
+do_build() {
+ export CPPFLAGS="${CPPFLAGS} ${CFLAGS}"
+
+ local _bundler_dir=$(pkg_path_for bundler)
+ local _libxml2_dir=$(pkg_path_for libxml2)
+ local _libxslt_dir=$(pkg_path_for libxslt)
+ local _zlib_dir=$(pkg_path_for zlib)
+
+ export GEM_HOME=${pkg_prefix}/bundle
+ export GEM_PATH=${_bundler_dir}:${GEM_HOME}
+
+ export NOKOGIRI_CONFIG="--use-system-libraries --with-zlib-dir=${_zlib_dir} --with-xslt-dir=${_libxslt_dir} --with-xml2-include=${_libxml2_dir}/include/libxml2 --with-xml2-lib=${_libxml2_dir}/lib"
+ bundle config --local build.nokogiri '${NOKOGIRI_CONFIG}'
+
+ bundle config --local silence_root_warning 1
+
+ pushd ${HAB_CACHE_SRC_PATH}/${pkg_name}-${pkg_version}/chef-config > /dev/null
+ _bundle_install "${pkg_prefix}/bundle"
+ popd > /dev/null
+
+ _bundle_install "${pkg_prefix}/bundle"
+}
+
+do_install() {
+ mkdir -p "${pkg_prefix}/chef"
+ for dir in bin chef-bin chef-config lib chef.gemspec Gemfile Gemfile.lock; do
+ cp -rv "${PLAN_CONTEXT}/../../${dir}" "${pkg_prefix}/chef/"
+ done
+
+ # This is just generating binstubs with the correct path.
+ # If we generated them on install, bundler thinks our source is in $HAB_CACHE_SOURCE_PATH
+ pushd "$pkg_prefix/chef" > /dev/null
+ _bundle_install \
+ "${pkg_prefix}/bundle" \
+ --local \
+ --quiet \
+ --binstubs "${pkg_prefix}/bin"
+ popd > /dev/null
+
+ fix_interpreter "${pkg_prefix}/bin/*" core/coreutils bin/env
+ fix_interpreter "${pkg_prefix}/bin/*" core/ruby26 bin/ruby
+}
+
+do_end() {
+ if [[ `readlink /usr/bin/env` = "$(pkg_path_for coreutils)/bin/env" ]]; then
+ build_line "Removing the symlink we created for '/usr/bin/env'"
+ rm /usr/bin/env
+ fi
+}
+
+do_strip() {
+ return 0
+}
+
+# Helper function to wrap up some repetitive bundle install flags
+_bundle_install() {
+ local path
+ path="$1"
+ shift
+
+ bundle install ${*:-} \
+ --jobs "$(nproc)" \
+ --without development:test \
+ --path "$path" \
+ --shebang="$(pkg_path_for "core/ruby26")/bin/ruby" \
+ --no-clean \
+ --retry 5 \
+ --standalone
+}