diff options
author | Tim Smith <tsmith84@gmail.com> | 2019-06-28 12:45:02 -0700 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2019-06-28 12:45:02 -0700 |
commit | 34e553738e5fdd74ce7e823add2130d33e71003a (patch) | |
tree | aeca9e0bc87293d00c9df891964bb0964ebcc01f /habitat | |
parent | e5ba371c42a16619b3ea9b4696d3f33bdfc2b134 (diff) | |
download | chef-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.rb | 19 | ||||
-rw-r--r-- | habitat/chef-infra-client/default.toml | 42 | ||||
-rw-r--r-- | habitat/chef-infra-client/hooks/init | 5 | ||||
-rw-r--r-- | habitat/chef-infra-client/hooks/run | 16 | ||||
-rw-r--r-- | habitat/chef-infra-client/plan.sh | 132 |
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 +} |