From a6acfe338b4b650a8c8a4336d346a05036d21fcb Mon Sep 17 00:00:00 2001 From: Salim Afiune Date: Fri, 2 Aug 2019 09:53:34 +0200 Subject: Cleanup habitat/plan.sh for chef-infra-client Signed-off-by: Salim Afiune --- habitat/chef-infra-client/config/client.rb | 19 ---- habitat/chef-infra-client/default.toml | 42 -------- habitat/chef-infra-client/hooks/init | 5 - habitat/chef-infra-client/hooks/run | 16 ---- habitat/chef-infra-client/plan.sh | 132 ------------------------- habitat/config/client.rb | 19 ++++ habitat/default.toml | 42 ++++++++ habitat/hooks/init | 5 + habitat/hooks/run | 16 ++++ habitat/plan.sh | 149 +++++++++++++++++++++++++++++ 10 files changed, 231 insertions(+), 214 deletions(-) delete mode 100644 habitat/chef-infra-client/config/client.rb delete mode 100644 habitat/chef-infra-client/default.toml delete mode 100644 habitat/chef-infra-client/hooks/init delete mode 100644 habitat/chef-infra-client/hooks/run delete mode 100644 habitat/chef-infra-client/plan.sh create mode 100644 habitat/config/client.rb create mode 100644 habitat/default.toml create mode 100644 habitat/hooks/init create mode 100644 habitat/hooks/run create mode 100644 habitat/plan.sh (limited to 'habitat') diff --git a/habitat/chef-infra-client/config/client.rb b/habitat/chef-infra-client/config/client.rb deleted file mode 100644 index 3dd6d67e1b..0000000000 --- a/habitat/chef-infra-client/config/client.rb +++ /dev/null @@ -1,19 +0,0 @@ -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 deleted file mode 100644 index 2bea08934b..0000000000 --- a/habitat/chef-infra-client/default.toml +++ /dev/null @@ -1,42 +0,0 @@ -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 deleted file mode 100644 index a23344b2a9..0000000000 --- a/habitat/chef-infra-client/hooks/init +++ /dev/null @@ -1,5 +0,0 @@ -#!/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 deleted file mode 100644 index 598d609d7f..0000000000 --- a/habitat/chef-infra-client/hooks/run +++ /dev/null @@ -1,16 +0,0 @@ -#!/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 deleted file mode 100644 index 146f162718..0000000000 --- a/habitat/chef-infra-client/plan.sh +++ /dev/null @@ -1,132 +0,0 @@ -pkg_name=chef-infra-client -pkg_origin=chef -pkg_maintainer="The Chef Maintainers " -pkg_description="The Chef Infra 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 -} diff --git a/habitat/config/client.rb b/habitat/config/client.rb new file mode 100644 index 0000000000..3dd6d67e1b --- /dev/null +++ b/habitat/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/default.toml b/habitat/default.toml new file mode 100644 index 0000000000..2bea08934b --- /dev/null +++ b/habitat/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/hooks/init b/habitat/hooks/init new file mode 100644 index 0000000000..a23344b2a9 --- /dev/null +++ b/habitat/hooks/init @@ -0,0 +1,5 @@ +#!/bin/sh + +exec 2>&1 + +mkdir -p "{{pkg.svc_data_path}}/chef" diff --git a/habitat/hooks/run b/habitat/hooks/run new file mode 100644 index 0000000000..598d609d7f --- /dev/null +++ b/habitat/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/plan.sh b/habitat/plan.sh new file mode 100644 index 0000000000..182c6f352c --- /dev/null +++ b/habitat/plan.sh @@ -0,0 +1,149 @@ +pkg_name=chef-infra-client +pkg_origin=chef +pkg_maintainer="The Chef Maintainers " +pkg_description="The Chef Infra Client" +pkg_license=('Apache-2.0') +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 + # We must wait until we update the pkg_version to use the pkg_version + pkg_filename="${pkg_name}-${pkg_version}.tar.gz" +} + +do_download() { + build_line "Locally creating archive of latest repository commit at ${HAB_CACHE_SRC_PATH}/${pkg_filename}" + # 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 "${SRC_PATH}" || exit_with "unable to enter hab-src directory" 1 + 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'" + if [ ! -f /usr/bin/env ]; then + ln -s "$(pkg_interpreter_for core/coreutils bin/env)" /usr/bin/env + fi +} + +do_build() { + local _bundler_dir + local _libxml2_dir + local _libxslt_dir + local _zlib_dir + export CPPFLAGS + export GEM_HOME + export GEM_PATH + export NOKOGIRI_CONFIG + + _bundler_dir=$(pkg_path_for bundler) + _libxml2_dir=$(pkg_path_for libxml2) + _libxslt_dir=$(pkg_path_for libxslt) + _zlib_dir=$(pkg_path_for zlib) + + CPPFLAGS="${CPPFLAGS} ${CFLAGS}" + GEM_HOME=${pkg_prefix}/bundle + GEM_PATH=${_bundler_dir}:${GEM_HOME} + 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" + + + build_line "Executing bundle install inside hab-cache path. ($CACHE_PATH/chef-config)" + ( cd "$CACHE_PATH/chef-config" || exit_with "unable to enter hab-cache directory" 1 + bundle config --local build.nokogiri "${NOKOGIRI_CONFIG}" + bundle config --local silence_root_warning 1 + _bundle_install "${pkg_prefix}/bundle" + ) + + build_line "Executing bundle install inside source path. ($SRC_PATH)" + _bundle_install "${pkg_prefix}/bundle" +} + +do_install() { + build_line "Copying directories from source to pkg_prefix" + mkdir -p "${pkg_prefix}/chef" + for dir in bin chef-bin chef-config lib chef.gemspec Gemfile Gemfile.lock; do + cp -rv "${SRC_PATH}/${dir}" "${pkg_prefix}/chef/" + done + + # If we generated them on install, bundler thinks our source is in $HAB_CACHE_SOURCE_PATH + build_line "Generating binstubs with the correct path" + ( cd "$pkg_prefix/chef" || exit_with "unable to enter pkg prefix directory" 1 + _bundle_install \ + "${pkg_prefix}/bundle" \ + --local \ + --quiet \ + --binstubs "${pkg_prefix}/bin" + ) + + build_line "Fixing bin/ruby and bin/env interpreters" + 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_interpreter_for core/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 +} -- cgit v1.2.1