diff --git a/.gitattributes b/.gitattributes index 45c10d7b..76eac516 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,6 +3,3 @@ .gitkeep export-ignore docs/speeches export-ignore docs/video export-ignore -docs/src/man7 export-ignore -bin/build-helper export-ignore -README-maintainers export-ignore diff --git a/.gitignore b/.gitignore index ed8b453a..0c664232 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,5 @@ # -vim -# Swap -[._]*.s[a-v][a-z] -[._]*.sw[a-p] -[._]s[a-rt-v][a-z] -[._]ss[a-gi-z] -[._]sw[a-p] - -# Session -Session.vim - -# Temporary -.netrwhist -*~ -*.tmp -# Auto-generated tag files -tags -# Persistent undo -[._]*.un~ +.*.swp # Ignore generated manpages docs/src/.marker @@ -34,7 +17,7 @@ cdist/inventory/ # Python: cache, distutils, distribution in general __pycache__/ *.pyc -/MANIFEST +MANIFEST dist/ cdist/version.py cdist.egg-info/ @@ -44,7 +27,6 @@ _build/ docs/dist # Ignore temp files used for signing -cdist-*.tar cdist-*.tar.gz cdist-*.tar.gz.asc diff --git a/Makefile b/Makefile index fa3327d1..d727bccc 100644 --- a/Makefile +++ b/Makefile @@ -18,30 +18,31 @@ # # -.PHONY: help -help: - @echo "Please use \`make ' where is one of" - @echo "man build only man user documentation" - @echo "html build only html user documentation" - @echo "docs build both man and html user documentation" - @echo "dotman build man pages for types in your ~/.cdist directory" - @echo "speeches build speeches pdf files" - @echo "install install in the system site-packages directory" - @echo "install-user install in the user site-packages directory" - @echo "docs-clean clean documentation" - @echo "clean clean" +helper=./bin/build-helper -DOCS_SRC_DIR=./docs/src -SPEECHDIR=./docs/speeches -TYPEDIR=./cdist/conf/type +DOCS_SRC_DIR=docs/src +SPEECHDIR=docs/speeches +TYPEDIR=cdist/conf/type + +WEBSRCDIR=docs/web + +WEBDIR=$$HOME/vcs/www.nico.schottelius.org +WEBBLOG=$(WEBDIR)/blog +WEBBASE=$(WEBDIR)/software/cdist +WEBPAGE=$(WEBBASE).mdwn + +CHANGELOG_VERSION=$(shell $(helper) changelog-version) +CHANGELOG_FILE=docs/changelog + +PYTHON_VERSION=cdist/version.py SPHINXM=make -C $(DOCS_SRC_DIR) man SPHINXH=make -C $(DOCS_SRC_DIR) html SPHINXC=make -C $(DOCS_SRC_DIR) clean - ################################################################################ # Manpages # +MAN1DSTDIR=$(DOCS_SRC_DIR)/man1 MAN7DSTDIR=$(DOCS_SRC_DIR)/man7 # Manpages #1: Types @@ -53,7 +54,6 @@ MANTYPES=$(subst /man.rst,.rst,$(MANTYPEPREFIX)) # Link manpage: do not create man.html but correct named file $(MAN7DSTDIR)/cdist-type%.rst: $(TYPEDIR)/%/man.rst - mkdir -p $(MAN7DSTDIR) ln -sf "../../../$^" $@ # Manpages #2: reference @@ -63,16 +63,11 @@ DOCSREFSH=$(DOCS_SRC_DIR)/cdist-reference.rst.sh $(DOCSREF): $(DOCSREFSH) $(DOCSREFSH) -version: - @[ -f "cdist/version.py" ] || { \ - printf "Missing 'cdist/version.py', please generate it first.\n" && exit 1; \ - } - # Manpages #3: generic part -man: version $(MANTYPES) $(DOCSREF) +man: $(MANTYPES) $(DOCSREF) $(PYTHON_VERSION) $(SPHINXM) -html: version $(MANTYPES) $(DOCSREF) +html: $(MANTYPES) $(DOCSREF) $(PYTHON_VERSION) $(SPHINXH) docs: man html @@ -80,6 +75,24 @@ docs: man html docs-clean: $(SPHINXC) +# Manpages #5: release part +MANWEBDIR=$(WEBBASE)/man/$(CHANGELOG_VERSION) +HTMLBUILDDIR=docs/dist/html + +docs-dist: html + rm -rf "${MANWEBDIR}" + mkdir -p "${MANWEBDIR}" + # mkdir -p "${MANWEBDIR}/man1" "${MANWEBDIR}/man7" + # cp ${MAN1DSTDIR}/*.html ${MAN1DSTDIR}/*.css ${MANWEBDIR}/man1 + # cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7 + cp -R ${HTMLBUILDDIR}/* ${MANWEBDIR} + cd ${MANWEBDIR} && git add . && git commit -m "cdist manpages update: $(CHANGELOG_VERSION)" || true + +man-latest-link: web-pub + # Fix ikiwiki, which does not like symlinks for pseudo security + ssh staticweb.ungleich.ch \ + "cd /home/services/www/nico/nico.schottelius.org/www/software/cdist/man/ && rm -f latest && ln -sf "$(CHANGELOG_VERSION)" latest" + # Manpages: .cdist Types DOT_CDIST_PATH=${HOME}/.cdist DOTMAN7DSTDIR=$(MAN7DSTDIR) @@ -92,7 +105,8 @@ DOTMANTYPES=$(subst /man.rst,.rst,$(DOTMANTYPEPREFIX)) $(DOTMAN7DSTDIR)/cdist-type%.rst: $(DOTTYPEDIR)/%/man.rst ln -sf "$^" $@ -dotman: version $(DOTMANTYPES) +# Manpages #3: generic part +dotman: $(DOTMANTYPES) $(SPHINXM) ################################################################################ @@ -100,6 +114,7 @@ dotman: version $(DOTMANTYPES) # SPEECHESOURCES=$(SPEECHDIR)/*.tex SPEECHES=$(SPEECHESOURCES:.tex=.pdf) +SPEECHESWEBDIR=$(WEBBASE)/speeches # Create speeches and ensure Toc is up-to-date $(SPEECHDIR)/%.pdf: $(SPEECHDIR)/%.tex @@ -109,26 +124,131 @@ $(SPEECHDIR)/%.pdf: $(SPEECHDIR)/%.tex speeches: $(SPEECHES) +speeches-dist: speeches + rm -rf "${SPEECHESWEBDIR}" + mkdir -p "${SPEECHESWEBDIR}" + cp ${SPEECHES} "${SPEECHESWEBDIR}" + cd ${SPEECHESWEBDIR} && git add . && git commit -m "cdist speeches updated" || true + ################################################################################ -# Misc +# Website # -clean: docs-clean + +BLOGFILE=$(WEBBLOG)/cdist-$(CHANGELOG_VERSION)-released.mdwn + +$(BLOGFILE): $(CHANGELOG_FILE) + $(helper) blog $(CHANGELOG_VERSION) $(BLOGFILE) + +web-blog: $(BLOGFILE) + +web-doc: + # Go to top level, because of cdist.mdwn + rsync -av "$(WEBSRCDIR)/" "${WEBBASE}/.." + cd "${WEBBASE}/.." && git add cdist* && git commit -m "cdist doc update" cdist* || true + +web-dist: web-blog web-doc + +web-pub: web-dist docs-dist speeches-dist + cd "${WEBDIR}" && make pub + +web-release-all: man-latest-link +web-release-all-no-latest: web-pub + +################################################################################ +# Release: Mailinglist +# +ML_FILE=.lock-ml + +# Only send mail once - lock until new changelog things happened +$(ML_FILE): $(CHANGELOG_FILE) + $(helper) ml-release $(CHANGELOG_VERSION) + touch $@ + +ml-release: $(ML_FILE) + + +################################################################################ +# pypi +# +PYPI_FILE=.pypi-release +$(PYPI_FILE): man $(PYTHON_VERSION) + python3 setup.py sdist upload + touch $@ + +pypi-release: $(PYPI_FILE) +################################################################################ +# archlinux +# +ARCHLINUX_FILE=.lock-archlinux +ARCHLINUXTAR=cdist-$(CHANGELOG_VERSION)-1.src.tar.gz + +$(ARCHLINUXTAR): PKGBUILD + umask 022; mkaurball + +PKGBUILD: PKGBUILD.in $(PYTHON_VERSION) + ./PKGBUILD.in $(CHANGELOG_VERSION) + +$(ARCHLINUX_FILE): $(ARCHLINUXTAR) $(PYTHON_VERSION) + burp -c system $(ARCHLINUXTAR) + touch $@ + +archlinux-release: $(ARCHLINUX_FILE) + +################################################################################ +# Release +# + +$(PYTHON_VERSION) version: .git/refs/heads/master + $(helper) version + +# Code that is better handled in a shell script +check-%: + $(helper) $@ + +release: + $(helper) $@ + +################################################################################ +# Cleanup +# + +clean: rm -f $(DOCS_SRC_DIR)/cdist-reference.rst find "$(DOCS_SRC_DIR)" -mindepth 2 -type l \ | xargs rm -f + make -C $(DOCS_SRC_DIR) clean + find * -name __pycache__ | xargs rm -rf - # distutils - rm -rf ./build + # Archlinux + rm -f cdist-*.pkg.tar.xz cdist-*.tar.gz + rm -rf pkg/ src/ + + rm -f MANIFEST PKGBUILD + rm -rf dist/ + + # Signed release + rm -f cdist-*.tar.gz + rm -f cdist-*.tar.gz.asc + +distclean: clean + rm -f cdist/version.py ################################################################################ -# install +# Misc # -install: - python3 setup.py install +# The pub is Nico's "push to all git remotes" way ("make pub") +pub: + git push --mirror -install-user: - python3 setup.py install --user +test: + $(helper) $@ + +test-remote: + $(helper) $@ + +pep8: + $(helper) $@ diff --git a/PKGBUILD.in b/PKGBUILD.in index c0188e68..c967249d 100755 --- a/PKGBUILD.in +++ b/PKGBUILD.in @@ -9,7 +9,7 @@ pkgver=$version pkgrel=1 pkgdesc='A Usable Configuration Management System"' arch=('any') -url='https://www.cdi.st/' +url='http://www.nico.schottelius.org/software/cdist/' license=('GPL3') depends=('python>=3.2.0') source=("http://pypi.python.org/packages/source/c/cdist/cdist-\${pkgver}.tar.gz") diff --git a/README b/README index caf2dac8..a67e25e3 100644 --- a/README +++ b/README @@ -3,5 +3,4 @@ cdist cdist is a usable configuration management system. -For the web documentation have a look at https://www.cdi.st/ -or at docs/src for reStructuredText manual. +For the web documentation have a look at docs/web/. diff --git a/README-maintainers b/README-maintainers deleted file mode 100644 index af57f475..00000000 --- a/README-maintainers +++ /dev/null @@ -1,4 +0,0 @@ -Maintainers should use ./bin/build-helper script. - -Makefile is intended for end users. It can be used for non-maintaining -targets that can be run from pure source (without git repository). diff --git a/bin/build-helper b/bin/build-helper index 9a776491..ef15b6c2 100755 --- a/bin/build-helper +++ b/bin/build-helper @@ -1,7 +1,6 @@ #!/bin/sh # # 2011-2013 Nico Schottelius (nico-cdist at schottelius.org) -# 2016-2019 Darko Poljak (darko.poljak at gmail.com) # # This file is part of cdist. # @@ -19,66 +18,17 @@ # along with cdist. If not, see . # # -# This file contains the heavy lifting found usually in the Makefile. +# This file contains the heavy lifting found usually in the Makefile # -usage() { - printf "usage: %s TARGET [TARGET-ARGS...] - Available targets: - changelog-changes - changelog-version - check-date - check-unittest - ml-release - archlinux-release - pypi-release - release-git-tag - sign-git-release - release - test - test-remote - pycodestyle - pep8 - check-pycodestyle - shellcheck-global-explorers - shellcheck-type-explorers - shellcheck-manifests - shellcheck-local-gencodes - shellcheck-remote-gencodes - shellcheck-scripts - shellcheck-gencodes - shellcheck-types - shellcheck - shellcheck-type-files - shellcheck-with-files - shellcheck-build-helper - check-shellcheck - version-branch - version - target-version - clean - distclean\n" "$1" -} +basedir=${0%/*}/../ +# Change to checkout directory +cd "$basedir" -basename="${0##*/}" - -if [ $# -lt 1 ] -then - usage "${basename}" - exit 1 -fi +version=$(git describe) option=$1; shift -SHELLCHECKCMD="shellcheck -s sh -f gcc -x" -# Skip SC2154 for variables starting with __ since such variables are cdist -# environment variables. -SHELLCHECK_SKIP=': __.*is referenced but not assigned.*\[SC2154\]' - -# Change to checkout directory -basedir="${0%/*}/../" -cd "$basedir" - case "$option" in changelog-changes) if [ "$#" -eq 1 ]; then @@ -116,8 +66,8 @@ case "$option" in date_changelog=$(grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/.*: //') if [ "$date_today" != "$date_changelog" ]; then - printf "Date in changelog is not today\n" - printf "Changelog date: %s\n" "${date_changelog}" + echo "Date in changelog is not today" + echo "Changelog: $date_changelog" exit 1 fi ;; @@ -126,17 +76,54 @@ case "$option" in "$0" test ;; + blog) + version=$1; shift + blogfile=$1; shift + dir=${blogfile%/*} + file=${blogfile##*/} + + + cat << eof > "$blogfile" +[[!meta title="Cdist $version released"]] + +Here's a short overview about the changes found in version ${version}: + +eof + + $0 changelog-changes "$version" >> "$blogfile" + + cat << eof >> "$blogfile" +For more information visit the [[cdist homepage|software/cdist]]. + +[[!tag cdist config unix]] +eof + cd "$dir" + git add "$file" + # Allow git commit to fail if there are no changes + git commit -m "cdist blog update: $version" "$blogfile" || true + ;; + ml-release) if [ $# -ne 1 ]; then - printf "%s ml-release version\n" "$0" >&2 + echo "$0 ml-release version" >&2 exit 1 fi version=$1; shift + to_a=cdist + to_d=l.schottelius.org + to=${to_a}@${to_d} + + from_a=nico-cdist + from_d=schottelius.org + from=${from_a}@${from_d} + ( cat << eof -Subject: cdist $version has been released +From: Nico -telmich- Schottelius <$from> +To: cdist mailing list <$to> +Subject: cdist $version released Hello .*, @@ -147,41 +134,25 @@ eof "$0" changelog-changes "$version" cat << eof +Cheers, + +Nico + +-- +Automatisation at its best level. With cdist. eof - ) > mailinglist.tmp + ) | /usr/sbin/sendmail -f "$from" "$to" ;; - archlinux-release) - if [ $# -ne 1 ]; then - printf "%s archlinux-release version\n" "$0" >&2 - exit 1 - fi - version=$1; shift - - ARCHLINUXTAR="cdist-${version}-1.src.tar.gz" - ./PKGBUILD.in "${version}" - umask 022 - mkaurball - burp -c system "${ARCHLINUXTAR}" - ;; - - pypi-release) - # Ensure that pypi release has the right version - "$0" version - - make docs-clean - make docs - python3 setup.py sdist upload - ;; release-git-tag) target_version=$($0 changelog-version) - if git rev-parse --verify "refs/tags/${target_version}" 2>/dev/null; then - printf "Tag for %s exists, aborting\n" "${target_version}" + if git rev-parse --verify refs/tags/$target_version 2>/dev/null; then + echo "Tag for $target_version exists, aborting" exit 1 fi - printf "Enter tag description for %s: " "${target_version}" - read -r tagmessage + printf "Enter tag description for ${target_version}: " + read tagmessage # setup for signed tags: # gpg --fulL-gen-key @@ -199,8 +170,7 @@ eof # gpg --verify # gpg --no-default-keyring --keyring --verify # Ensure gpg-agent is running. - GPG_TTY=$(tty) - export GPG_TTY + export GPG_TTY=$(tty) gpg-agent git tag -s "$target_version" -m "$tagmessage" @@ -210,14 +180,14 @@ eof sign-git-release) if [ $# -lt 2 ] then - printf "usage: %s sign-git-release TAG TOKEN [ARCHIVE]\n" "$0" + printf "usage: $0 sign-git-release TAG TOKEN [ARCHIVE]\n" printf " if ARCHIVE is not specified then it is created\n" exit 1 fi tag="$1" if ! git rev-parse -q --verify "${tag}" >/dev/null 2>&1 then - printf "Tag \"%s\" not found.\n" "${tag}" + printf "Tag \"${tag}\" not found.\n" exit 1 fi token="$2" @@ -225,53 +195,44 @@ eof then archivename="$3" else - archivename="cdist-${tag}.tar" + archivename="cdist-${tag}.tar.gz" git archive --prefix="cdist-${tag}/" -o "${archivename}" "${tag}" \ || exit 1 - # make sure target version is generated - "$0" target-version - tar -x -f "${archivename}" || exit 1 - cp cdist/version.py "cdist-${tag}/cdist/version.py" || exit 1 - tar -c -f "${archivename}" "cdist-${tag}/" || exit 1 - rm -r -f "cdist-${tag}/" - gzip "${archivename}" || exit 1 - archivename="${archivename}.gz" fi gpg --armor --detach-sign "${archivename}" || exit 1 - project="ungleich-public%2Fcdist" - sed_cmd='s/^.*"markdown":"\([^"]*\)".*$/\1/' + # make github release + curl -H "Authorization: token ${token}" \ + --request POST \ + --data "{ \"tag_name\":\"${tag}\", \ + \"target_commitish\":\"master\", \ + \"name\": \"${tag}\", \ + \"body\":\"${tag}\", \ + \"draft\":false, \ + \"prerelease\": false}" \ + "https://api.github.com/repos/ungleich/cdist/releases" || exit 1 - # upload archive - response_archive=$(curl -f -X POST \ - --http1.1 \ - -H "PRIVATE-TOKEN: ${token}" \ - -F "file=@${archivename}" \ - "https://code.ungleich.ch/api/v4/projects/${project}/uploads" \ - | sed "${sed_cmd}") || exit 1 + # get release ID + repoid=$(curl "https://api.github.com/repos/ungleich/cdist/releases/tags/${tag}" \ + | python3 -c 'import json; import sys; print(json.loads(sys.stdin.read())["id"])') \ + || exit 1 - # upload archive signature - response_archive_sig=$(curl -f -X POST \ - --http1.1 \ - -H "PRIVATE-TOKEN: ${token}" \ - -F "file=@${archivename}.asc" \ - "https://code.ungleich.ch/api/v4/projects/${project}/uploads" \ - | sed "${sed_cmd}") || exit 1 - - # make release - changelog=$("$0" changelog-changes "$1" | sed 's/^[[:space:]]*//') - release_notes=$( - printf "%s\n\n%s\n\n**Changelog**\n\n%s\n" \ - "${response_archive}" "${response_archive_sig}" "${changelog}" - ) - curl -f -X POST \ - -H "PRIVATE-TOKEN: ${token}" \ - -F "description=${release_notes}" \ - "https://code.ungleich.ch/api/v4/projects/${project}/repository/tags/${tag}/release" \ + # upload archive and then signature + curl -H "Authorization: token ${token}" \ + -H "Accept: application/vnd.github.manifold-preview" \ + -H "Content-Type: application/x-gtar" \ + --data-binary @${archivename} \ + "https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}" \ + || exit 1 + curl -H "Authorization: token ${token}" \ + -H "Accept: application/vnd.github.manifold-preview" \ + -H "Content-Type: application/pgp-signature" \ + --data-binary @${archivename}.asc \ + "https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}.asc" \ || exit 1 # remove generated files (archive and asc) - if [ $# -eq 2 ] + if [ $# -eq 2] then rm -f "${archivename}" fi @@ -283,30 +244,29 @@ eof target_version=$($0 changelog-version) target_branch=$($0 version-branch) - printf "Beginning release process for %s\n" "${target_version}" + echo "Beginning release process for $target_version" # First check everything is sane "$0" check-date "$0" check-unittest - "$0" check-pycodestyle - "$0" check-shellcheck + "$0" check-pep8 # Generate version file to be included in packaging "$0" target-version # Ensure the git status is clean, else abort if ! git diff-index --name-only --exit-code HEAD ; then - printf "Unclean tree, see files above, aborting.\n" + echo "Unclean tree, see files above, aborting" exit 1 fi # Ensure we are on the master branch masterbranch=yes if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then - printf "Releases are happening from the master branch, aborting.\n" + echo "Releases are happening from the master branch, aborting" - printf "Enter the magic word to release anyway:" - read -r magicword + echo "Enter the magic word to release anyway" + read magicword if [ "$magicword" = "iknowwhatido" ]; then masterbranch=no @@ -317,7 +277,7 @@ eof if [ "$masterbranch" = yes ]; then # Ensure version branch exists - if ! git rev-parse --verify "refs/heads/${target_branch}" 2>/dev/null; then + if ! git rev-parse --verify refs/heads/$target_branch 2>/dev/null; then git branch "$target_branch" fi @@ -335,12 +295,20 @@ eof make docs-clean make docs + # Generate speeches (indirect check if they build) + make speeches + ############################################################# # Everything green, let's do the release # Tag the current commit "$0" release-git-tag + # sign git tag + printf "Enter github authentication token: " + read token + "$0" sign-git-release "${target_version}" "${token}" + # Also merge back the version branch if [ "$masterbranch" = yes ]; then git checkout master @@ -348,41 +316,41 @@ eof fi # Publish git changes - # if you want to have mirror locally then uncomment this and comment below - # git push --mirror - git push - # push also new branch and set up tracking - git push -u origin "${target_branch}" - # fi + make pub + + # publish man, speeches, website + if [ "$masterbranch" = yes ]; then + make web-release-all + else + make web-release-all-no-latest + fi + + # Ensure that pypi release has the right version + "$0" version # Create and publish package for pypi - "$0" pypi-release + make pypi-release - # sign git tag - printf "Enter upstream repository authentication token: " - read -r token - "$0" sign-git-release "${target_version}" "${token}" + # Archlinux release is based on pypi + make archlinux-release # Announce change on ML - "$0" ml-release "${target_version}" + make ml-release cat << eof Manual steps post release: - - cdist-web - - send mail body generated in mailinglist.tmp and inform Dmitry for deb + + - linkedin + - hackernews + - reddit - twitter + eof + ;; test) - if [ ! -f "cdist/version.py" ] - then - printf "cdist/version.py is missing, generate it first.\n" - exit 1 - fi - - PYTHONPATH="$(pwd -P)" - export PYTHONPATH + export PYTHONPATH="$(pwd -P)" if [ $# -lt 1 ]; then python3 -m cdist.test @@ -392,30 +360,22 @@ eof ;; test-remote) - if [ ! -f "cdist/version.py" ] - then - printf "cdist/version.py is missing, generate it first.\n" - exit 1 - fi - - PYTHONPATH="$(pwd -P)" - export PYTHONPATH - + export PYTHONPATH="$(pwd -P)" python3 -m cdist.test.exec.remote ;; - pycodestyle|pep8) - pycodestyle "${basedir}" "${basedir}/scripts/cdist" | less + pep8) + pep8 "${basedir}" "${basedir}/scripts/cdist" | less ;; - check-pycodestyle) - "$0" pycodestyle - printf "\\nPlease review pycodestyle report.\\n" + check-pep8) + "$0" pep8 + echo "Please review pep8 report." while true do - printf "Continue (yes/no)?\n" + echo "Continue (yes/no)?" any= - read -r any + read any case "$any" in yes) break @@ -424,83 +384,7 @@ eof exit 1 ;; *) - printf "Please answer with 'yes' or 'no' explicitly.\n" - ;; - esac - done - ;; - - shellcheck-global-explorers) - find cdist/conf/explorer -type f -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0 - ;; - - shellcheck-type-explorers) - find cdist/conf/type -type f -path "*/explorer/*" -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0 - ;; - - shellcheck-manifests) - find cdist/conf/type -type f -name manifest -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0 - ;; - - shellcheck-local-gencodes) - find cdist/conf/type -type f -name gencode-local -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0 - ;; - - shellcheck-remote-gencodes) - find cdist/conf/type -type f -name gencode-remote -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0 - ;; - - shellcheck-scripts) - ${SHELLCHECKCMD} scripts/cdist-dump scripts/cdist-new-type || exit 0 - ;; - - shellcheck-gencodes) - "$0" shellcheck-local-gencodes - "$0" shellcheck-remote-gencodes - ;; - - shellcheck-types) - "$0" shellcheck-type-explorers - "$0" shellcheck-manifests - "$0" shellcheck-gencodes - ;; - - shellcheck) - "$0" shellcheck-global-explorers - "$0" shellcheck-types - "$0" shellcheck-scripts - ;; - - shellcheck-type-files) - find cdist/conf/type -type f -path "*/files/*" -exec ${SHELLCHECKCMD} {} + | grep -v "${SHELLCHECK_SKIP}" || exit 0 - ;; - - shellcheck-with-files) - "$0" shellcheck - "$0" shellcheck-type-files - ;; - - shellcheck-build-helper) - ${SHELLCHECKCMD} ./bin/build-helper - ;; - - check-shellcheck) - "$0" shellcheck - printf "\\nPlease review shellcheck report.\\n" - while true - do - printf "Continue (yes/no)?\n" - any= - read -r any - case "$any" in - yes) - break - ;; - no) - exit 1 - ;; - *) - printf "Please answer with 'yes' or 'no' explicitly.\n" + echo "Please answer with 'yes' or 'no' explicitly." ;; esac done @@ -511,39 +395,16 @@ eof ;; version) - printf "VERSION = \"%s\"\n" "$(git describe)" > cdist/version.py + echo "VERSION = \"$(git describe)\"" > cdist/version.py ;; target-version) target_version=$($0 changelog-version) - printf "VERSION = \"%s\"\n" "${target_version}" > cdist/version.py + echo "VERSION = \"${target_version}\"" > cdist/version.py ;; - clean) - make clean - - # Archlinux - rm -f cdist-*.pkg.tar.xz cdist-*.tar.gz - rm -rf pkg/ src/ - - rm -f MANIFEST PKGBUILD - rm -rf dist/ - - # Signed release - rm -f cdist-*.tar.gz - rm -f cdist-*.tar.gz.asc - - # Temp files - rm -f ./*.tmp - ;; - - distclean) - "$0" clean - rm -f cdist/version.py - ;; *) - printf "Unknown target: '%s'.\n" "${option}" >&2 - usage "${basename}" + echo "Unknown helper target $@ - aborting" exit 1 ;; diff --git a/bin/build-helper.freebsd b/bin/build-helper.freebsd new file mode 100755 index 00000000..e49b2f7a --- /dev/null +++ b/bin/build-helper.freebsd @@ -0,0 +1,473 @@ +#!/bin/sh +# +# 2011-2013 Nico Schottelius (nico-cdist at schottelius.org) +# 2016 Darko Poljak (darko.poljak at gmail.com) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# This file contains the heavy lifting found usually in the Makefile +# + +# vars for make +helper=$0 + +basedir=${0%/*}/../ +# run_as is used to check how the script is called (by $0 value) +# currently supported sufixes for $0 are: +# .freebsd - run as freebsd +basename=${0##*/} +run_as=${basename#*.} +case "$run_as" in + freebsd) + to_a=cdist-configuration-management + to_d=googlegroups.com + from_a=darko.poljak + from_d=gmail.com + ml_name="Darko Poljak" + ml_sig_name="Darko" + + # vars for make + WEBDIR=../vcs/www.nico.schottelius.org + ;; + *) + to_a=cdist + to_d=l.schottelius.org + from_a=nico-cdist + from_d=schottelius.org + ml_name="Nico -telmich- Schottelius" + ml_sig_name="Nico" + + # vars for make + WEBDIR=$$HOME/vcs/www.nico.schottelius.org + ;; +esac + +# Change to checkout directory +cd "$basedir" + +version=$(git describe) + +option=$1; shift + +case "$option" in + print-make-vars) + printf "helper: ${helper}\n" + printf "WEBDIR: ${WEBDIR}\n" + ;; + print-runas) + printf "run_as: $run_as\n" + ;; + changelog-changes) + if [ "$#" -eq 1 ]; then + start=$1 + else + start="[[:digit:]]" + fi + + end="[[:digit:]]" + + awk -F: "BEGIN { start=0 } + { + if(start == 0) { + if (\$0 ~ /^$start/) { + start = 1 + } + } else { + if (\$0 ~ /^$end/) { + exit + } else { + print \$0 + } + } + }" "$basedir/docs/changelog" + ;; + + changelog-version) + # get version from changelog + grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/:.*//' + ;; + + check-date) + # verify date in changelog is today + date_today="$(date +%Y-%m-%d)" + date_changelog=$(grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/.*: //') + + if [ "$date_today" != "$date_changelog" ]; then + echo "Date in changelog is not today" + echo "Changelog: $date_changelog" + exit 1 + fi + ;; + + check-unittest) + "$0" test + ;; + + blog) + version=$1; shift + blogfile=$1; shift + dir=${blogfile%/*} + file=${blogfile##*/} + + + cat << eof > "$blogfile" +[[!meta title="Cdist $version released"]] + +Here's a short overview about the changes found in version ${version}: + +eof + + $0 changelog-changes "$version" >> "$blogfile" + + cat << eof >> "$blogfile" +For more information visit the [[cdist homepage|software/cdist]]. + +[[!tag cdist config unix]] +eof + cd "$dir" + git add "$file" + # Allow git commit to fail if there are no changes + git commit -m "cdist blog update: $version" "$blogfile" || true + ;; + + ml-release) + if [ $# -ne 1 ]; then + echo "$0 ml-release version" >&2 + exit 1 + fi + + version=$1; shift + + to=${to_a}@${to_d} + from=${from_a}@${from_d} + + ( + cat << eof +From: ${ml_name} <$from> +To: cdist mailing list <$to> +Subject: cdist $version released + +Hello .*, + +cdist $version has been released with the following changes: + +eof + + "$0" changelog-changes "$version" + cat << eof + +Cheers, + +${ml_sig_name} + +-- +Automatisation at its best level. With cdist. +eof + ) | /usr/sbin/sendmail -f "$from" "$to" + ;; + + release-git-tag) + target_version=$($0 changelog-version) + if git rev-parse --verify refs/tags/$target_version 2>/dev/null; then + echo "Tag for $target_version exists, aborting" + exit 1 + fi + printf "Enter tag description for ${target_version}: " + read tagmessage + + # setup for signed tags: + # gpg --fulL-gen-key + # gpg --list-secret-keys --keyid-format LONG + # git config --local user.signingkey + # for exporting pub key: + # gpg --armor --export > pubkey.asc + # gpg --output pubkey.gpg --export + # show tag with signature + # git show + # verify tag signature + # git tag -v + # + # gpg verify signature + # gpg --verify + # gpg --no-default-keyring --keyring --verify + # Ensure gpg-agent is running. + export GPG_TTY=$(tty) + gpg-agent + + git tag -s "$target_version" -m "$tagmessage" + git push --tags + ;; + + sign-git-release) + if [ $# -lt 2 ] + then + printf "usage: $0 sign-git-release TAG TOKEN [ARCHIVE]\n" + printf " if ARCHIVE is not specified then it is created\n" + exit 1 + fi + tag="$1" + if ! git rev-parse -q --verify "${tag}" >/dev/null 2>&1 + then + printf "Tag \"${tag}\" not found.\n" + exit 1 + fi + token="$2" + if [ $# -gt 2 ] + then + archivename="$3" + else + archivename="cdist-${tag}.tar.gz" + git archive --prefix="cdist-${tag}/" -o "${archivename}" "${tag}" \ + || exit 1 + fi + gpg --armor --detach-sign "${archivename}" || exit 1 + + # make github release + curl -H "Authorization: token ${token}" \ + --request POST \ + --data "{ \"tag_name\":\"${tag}\", \ + \"target_commitish\":\"master\", \ + \"name\": \"${tag}\", \ + \"body\":\"${tag}\", \ + \"draft\":false, \ + \"prerelease\": false}" \ + "https://api.github.com/repos/ungleich/cdist/releases" || exit 1 + + # get release ID + repoid=$(curl "https://api.github.com/repos/ungleich/cdist/releases/tags/${tag}" \ + | python3 -c 'import json; import sys; print(json.loads(sys.stdin.read())["id"])') \ + || exit 1 + + # upload archive and then signature + curl -H "Authorization: token ${token}" \ + -H "Accept: application/vnd.github.manifold-preview" \ + -H "Content-Type: application/x-gtar" \ + --data-binary @${archivename} \ + "https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}" \ + || exit 1 + curl -H "Authorization: token ${token}" \ + -H "Accept: application/vnd.github.manifold-preview" \ + -H "Content-Type: application/pgp-signature" \ + --data-binary @${archivename}.asc \ + "https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}.asc" \ + || exit 1 + + # remove generated files (archive and asc) + if [ $# -eq 2] + then + rm -f "${archivename}" + fi + rm -f "${archivename}.asc" + ;; + + release) + set -e + target_version=$($0 changelog-version) + target_branch=$($0 version-branch) + + echo "Beginning release process for $target_version" + + # First check everything is sane + "$0" check-date + "$0" check-unittest + "$0" check-pep8 + + # Generate version file to be included in packaging + "$0" target-version + + # Ensure the git status is clean, else abort + if ! git diff-index --name-only --exit-code HEAD ; then + echo "Unclean tree, see files above, aborting" + exit 1 + fi + + # Ensure we are on the master branch + masterbranch=yes + if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then + echo "Releases are happening from the master branch, aborting" + + echo "Enter the magic word to release anyway" + read magicword + + if [ "$magicword" = "iknowwhatido" ]; then + masterbranch=no + else + exit 1 + fi + fi + + if [ "$masterbranch" = yes ]; then + # Ensure version branch exists + if ! git rev-parse --verify refs/heads/$target_branch 2>/dev/null; then + git branch "$target_branch" + fi + + # Merge master branch into version branch + git checkout "$target_branch" + git merge master + fi + + # Verify that after the merge everything works + "$0" check-date + "$0" check-unittest + + # Generate documentation (man and html) + # First, clean old generated docs + make helper=${helper} WEBDIR=${WEBDIR} docs-clean + make helper=${helper} WEBDIR=${WEBDIR} docs + + # Generate speeches (indirect check if they build) + make helper=${helper} WEBDIR=${WEBDIR} speeches + + ############################################################# + # Everything green, let's do the release + + # Tag the current commit + "$0" release-git-tag + + # sign git tag + printf "Enter github authentication token: " + read token + "$0" sign-git-release "${target_version}" "${token}" + + # Also merge back the version branch + if [ "$masterbranch" = yes ]; then + git checkout master + git merge "$target_branch" + fi + + # Publish git changes + case "$run_as" in + freebsd) + # if we are not Nico :) then just push, no mirror + git push + # push also new branch and set up tracking + git push -u origin "${target_branch}" + ;; + *) + make helper=${helper} WEBDIR=${WEBDIR} pub + ;; + esac + + # publish man, speeches, website + if [ "$masterbranch" = yes ]; then + make helper=${helper} WEBDIR=${WEBDIR} web-release-all + else + make helper=${helper} WEBDIR=${WEBDIR} web-release-all-no-latest + fi + + # Ensure that pypi release has the right version + "$0" version + + # Create and publish package for pypi + make helper=${helper} WEBDIR=${WEBDIR} pypi-release + + case "$run_as" in + freebsd) + ;; + *) + # Archlinux release is based on pypi + make archlinux-release + ;; + esac + + # Announce change on ML + make helper=${helper} WEBDIR=${WEBDIR} ml-release + + cat << eof +Manual steps post release: + + - linkedin + - hackernews + - reddit + - twitter + +eof + + case "$run_as" in + freebsd) + cat < cdist/version.py + ;; + + target-version) + target_version=$($0 changelog-version) + echo "VERSION = \"${target_version}\"" > cdist/version.py + ;; + + *) + echo "Unknown helper target $@ - aborting" + exit 1 + ;; + +esac diff --git a/cdist/__init__.py b/cdist/__init__.py index c673b3ba..e6fdfac6 100644 --- a/cdist/__init__.py +++ b/cdist/__init__.py @@ -83,78 +83,41 @@ class CdistBetaRequired(cdist.Error): class CdistEntityError(Error): """Something went wrong while executing cdist entity""" - def __init__(self, entity_name, entity_params, stdout_paths, - stderr_paths, subject=''): + def __init__(self, entity_name, entity_params, stderr_paths, subject=''): self.entity_name = entity_name self.entity_params = entity_params self.stderr_paths = stderr_paths - self.stdout_paths = stdout_paths if isinstance(subject, Error): self.original_error = subject else: self.original_error = None self.message = str(subject) - def _stdpath(self, stdpaths, header_name): - result = {} - for name, path in stdpaths: - if name not in result: - result[name] = [] - try: - if os.path.exists(path) and os.path.getsize(path) > 0: - output = [] - label_begin = name + ":" + header_name - output.append(label_begin) - output.append('\n') - output.append('-' * len(label_begin)) - output.append('\n') - with open(path, 'r') as fd: - output.append(fd.read()) - output.append('\n') - result[name].append(''.join(output)) - except UnicodeError as ue: - result[name].append(('Cannot output {}:{} due to: {}.\n' - 'You can try to read the error file "{}"' - ' yourself.').format( - name, header_name, ue, path)) - return result - - def _stderr(self): - return self._stdpath(self.stderr_paths, 'stderr') - - def _stdout(self): - return self._stdpath(self.stdout_paths, 'stdout') - - def _update_dict_list(self, target, source): - for x in source: - if x not in target: - target[x] = [] - target[x].extend(source[x]) - @property - def std_streams(self): - std_dict = {} - self._update_dict_list(std_dict, self._stdout()) - self._update_dict_list(std_dict, self._stderr()) - return std_dict + def stderr(self): + output = [] + for stderr_name, stderr_path in self.stderr_paths: + if (os.path.exists(stderr_path) and + os.path.getsize(stderr_path) > 0): + label_begin = '---- BEGIN ' + stderr_name + ':stderr ----' + label_end = '---- END ' + stderr_name + ':stderr ----' + output.append('\n' + label_begin) + with open(stderr_path, 'r') as fd: + output.append(fd.read()) + output.append(label_end) + return '\n'.join(output) def __str__(self): output = [] output.append(self.message) - output.append('\n\n') - header = "Error processing " + self.entity_name + header = "\nError processing " + self.entity_name under_header = '=' * len(header) output.append(header) - output.append('\n') output.append(under_header) - output.append('\n') for param_name, param_value in self.entity_params: output.append(param_name + ': ' + str(param_value)) - output.append('\n') - output.append('\n') - for x in self.std_streams: - output.append(''.join(self.std_streams[x])) - return ''.join(output) + output.append(self.stderr + '\n') + return '\n'.join(output) class CdistObjectError(CdistEntityError): @@ -164,76 +127,28 @@ class CdistObjectError(CdistEntityError): ('name', cdist_object.name, ), ('path', cdist_object.absolute_path, ), ('source', " ".join(cdist_object.source), ), - ('type', os.path.realpath( - cdist_object.cdist_type.absolute_path), ), + ('type', cdist_object.cdist_type.absolute_path, ), ] stderr_paths = [] for stderr_name in os.listdir(cdist_object.stderr_path): stderr_path = os.path.join(cdist_object.stderr_path, stderr_name) stderr_paths.append((stderr_name, stderr_path, )) - stdout_paths = [] - for stdout_name in os.listdir(cdist_object.stdout_path): - stdout_path = os.path.join(cdist_object.stdout_path, - stdout_name) - stdout_paths.append((stdout_name, stdout_path, )) super().__init__("object '{}'".format(cdist_object.name), - params, stdout_paths, stderr_paths, subject) - - -class CdistObjectExplorerError(CdistEntityError): - """ - Something went wrong while working on a specific - cdist object explorer - """ - def __init__(self, cdist_object, explorer_name, explorer_path, - stderr_path, subject=''): - params = [ - ('object name', cdist_object.name, ), - ('object path', cdist_object.absolute_path, ), - ('object source', " ".join(cdist_object.source), ), - ('object type', os.path.realpath( - cdist_object.cdist_type.absolute_path), ), - ('explorer name', explorer_name, ), - ('explorer path', explorer_path, ), - ] - stdout_paths = [] - stderr_paths = [ - ('remote', stderr_path, ), - ] - super().__init__("explorer '{}' of object '{}'".format( - explorer_name, cdist_object.name), params, stdout_paths, - stderr_paths, subject) + params, stderr_paths, subject) class InitialManifestError(CdistEntityError): """Something went wrong while executing initial manifest""" - def __init__(self, initial_manifest, stdout_path, stderr_path, subject=''): + def __init__(self, initial_manifest, stderr_path, subject=''): params = [ ('path', initial_manifest, ), ] - stdout_paths = [ - ('init', stdout_path, ), - ] + stderr_paths = [] stderr_paths = [ ('init', stderr_path, ), ] - super().__init__('initial manifest', params, stdout_paths, - stderr_paths, subject) - - -class GlobalExplorerError(CdistEntityError): - """Something went wrong while executing global explorer""" - def __init__(self, name, path, stderr_path, subject=''): - params = [ - ('name', name, ), - ('path', path, ), - ] - stderr_paths = [ - ('remote', stderr_path, ), - ] - super().__init__("global explorer '{}'".format(name), - params, [], stderr_paths, subject) + super().__init__('initial manifest', params, stderr_paths, subject) def file_to_list(filename): diff --git a/cdist/argparse.py b/cdist/argparse.py index ca69cdae..29620751 100644 --- a/cdist/argparse.py +++ b/cdist/argparse.py @@ -5,23 +5,21 @@ import logging import collections import functools import cdist.configuration -import cdist.preos # set of beta sub-commands BETA_COMMANDS = set(('install', 'inventory', )) # set of beta arguments for sub-commands BETA_ARGS = { - 'config': set(('tag', 'all_tagged_hosts', 'use_archiving', )), + 'config': set(('jobs', 'tag', 'all_tagged_hosts', 'use_archiving', )), } -EPILOG = "Get cdist at https://code.ungleich.ch/ungleich-public/cdist" +EPILOG = "Get cdist at http://www.nico.schottelius.org/software/cdist/" # Parser others can reuse parser = None _verbosity_level_off = -2 _verbosity_level = { - None: logging.WARNING, _verbosity_level_off: logging.OFF, -1: logging.ERROR, 0: logging.WARNING, @@ -163,16 +161,6 @@ def get_parsers(): # Config parser['config_main'] = argparse.ArgumentParser(add_help=False) - parser['config_main'].add_argument( - '-4', '--force-ipv4', - help=('Force to use IPv4 addresses only. No influence for custom' - ' remote commands.'), - action='store_const', dest='force_ipv', const=4) - parser['config_main'].add_argument( - '-6', '--force-ipv6', - help=('Force to use IPv6 addresses only. No influence for custom' - ' remote commands.'), - action='store_const', dest='force_ipv', const=6) parser['config_main'].add_argument( '-C', '--cache-path-pattern', help=('Specify custom cache path pattern. If ' @@ -193,7 +181,8 @@ def get_parsers(): name="positive int"), help=('Operate in parallel in specified maximum number of jobs. ' 'Global explorers, object prepare and object run are ' - 'supported. Without argument CPU count is used by default. '), + 'supported. Without argument CPU count is used by default. ' + 'Currently in beta.'), action='store', dest='jobs', const=multiprocessing.cpu_count()) parser['config_main'].add_argument( @@ -202,11 +191,6 @@ def get_parsers(): parser['config_main'].add_argument( '-o', '--out-dir', help='Directory to save cdist output in.', dest="out_path") - parser['config_main'].add_argument( - '-P', '--timestamp', - help=('Timestamp log messages with the current local date and time ' - 'in the format: YYYYMMDDHHMMSS.us.'), - action='store_true', dest='timestamp') parser['config_main'].add_argument( '-R', '--use-archiving', nargs='?', choices=('tar', 'tgz', 'tbz2', 'txz',), @@ -236,13 +220,19 @@ def get_parsers(): '(should behave like ssh).'), action='store', dest='remote_exec', default=None) - parser['config_main'].add_argument( - '-S', '--disable-saving-output-streams', - help='Disable saving output streams.', - action='store_false', dest='save_output_streams', default=True) # Config parser['config_args'] = argparse.ArgumentParser(add_help=False) + parser['config_args'].add_argument( + '-4', '--force-ipv4', + help=('Force to use IPv4 addresses only. No influence for custom' + ' remote commands.'), + action='store_const', dest='force_ipv', const=4) + parser['config_args'].add_argument( + '-6', '--force-ipv6', + help=('Force to use IPv6 addresses only. No influence for custom' + ' remote commands.'), + action='store_const', dest='force_ipv', const=6) parser['config_args'].add_argument( '-A', '--all-tagged', help=('Use all hosts present in tags db. Currently in beta.'), @@ -252,6 +242,8 @@ def get_parsers(): help=('List hosts that have all specified tags, ' 'if -t/--tag is specified.'), action="store_true", dest="has_all_tags", default=False) + parser['config_args'].add_argument( + 'host', nargs='*', help='Host(s) to operate on.') parser['config_args'].add_argument( '-f', '--file', help=('Read specified file for a list of additional hosts to ' @@ -268,6 +260,10 @@ def get_parsers(): 'default.'), action='store', dest='parallel', const=multiprocessing.cpu_count()) + parser['config_args'].add_argument( + '-S', '--disable-saving-output-streams', + help='Disable saving output streams.', + action='store_false', dest='save_output_streams', default=True) parser['config_args'].add_argument( '-s', '--sequential', help='Operate on multiple hosts sequentially (default).', @@ -278,8 +274,6 @@ def get_parsers(): 'list all hosts that contain any of specified tags. ' 'Currently in beta.'), dest='tag', required=False, action="store_true", default=False) - parser['config_args'].add_argument( - 'host', nargs='*', help='Host(s) to operate on.') parser['config'] = parser['sub'].add_parser( 'config', parents=[parser['loglevel'], parser['beta'], parser['common'], @@ -424,9 +418,6 @@ def get_parsers(): parser['inventory'].set_defaults( func=cdist.inventory.Inventory.commandline) - # PreOs - parser['preos'] = parser['sub'].add_parser('preos', add_help=False) - # Shell parser['shell'] = parser['sub'].add_parser( 'shell', parents=[parser['loglevel']]) diff --git a/cdist/conf/explorer/cpu_cores b/cdist/conf/explorer/cpu_cores index a52bddac..7f7a955e 100755 --- a/cdist/conf/explorer/cpu_cores +++ b/cdist/conf/explorer/cpu_cores @@ -25,17 +25,13 @@ os=$("$__explorer/os") case "$os" in "macosx") - sysctl -n hw.physicalcpu - ;; - - "openbsd") - sysctl -n hw.ncpuonline + echo "$(sysctl -n hw.physicalcpu)" ;; *) if [ -r /proc/cpuinfo ]; then cores="$(grep "core id" /proc/cpuinfo | sort | uniq | wc -l)" - if [ "${cores}" -eq 0 ]; then + if [ ${cores} -eq 0 ]; then cores="1" fi echo "$cores" diff --git a/cdist/conf/explorer/cpu_sockets b/cdist/conf/explorer/cpu_sockets index a32e2f00..8a8194df 100755 --- a/cdist/conf/explorer/cpu_sockets +++ b/cdist/conf/explorer/cpu_sockets @@ -25,14 +25,14 @@ os=$("$__explorer/os") case "$os" in "macosx") - system_profiler SPHardwareDataType | grep "Number of Processors" | awk -F': ' '{print $2}' + echo "$(system_profiler SPHardwareDataType | grep "Number of Processors" | awk -F': ' '{print $2}')" ;; *) if [ -r /proc/cpuinfo ]; then - sockets="$(grep "physical id" /proc/cpuinfo | sort -u | wc -l)" - if [ "${sockets}" -eq 0 ]; then - sockets="$(grep -c "processor" /proc/cpuinfo)" + sockets="$(grep "physical id" /proc/cpuinfo | sort | uniq | wc -l)" + if [ ${sockets} -eq 0 ]; then + sockets="$(cat /proc/cpuinfo | grep "processor" | wc -l)" fi echo "${sockets}" fi diff --git a/cdist/conf/explorer/disks b/cdist/conf/explorer/disks old mode 100755 new mode 100644 index 87a6b5c6..52fef81e --- a/cdist/conf/explorer/disks +++ b/cdist/conf/explorer/disks @@ -1,27 +1,2 @@ -#!/bin/sh - -uname_s="$(uname -s)" - -case "${uname_s}" in - FreeBSD) - sysctl -n kern.disks - ;; - OpenBSD|NetBSD) - sysctl -n hw.disknames | grep -Eo '[lsw]d[0-9]+' | xargs - ;; - Linux) - if command -v lsblk > /dev/null - then - # exclude ram disks, floppies and cdroms - # https://www.kernel.org/doc/Documentation/admin-guide/devices.txt - lsblk -e 1,2,11 -dno name | xargs - else - printf "Don't know how to list disks for %s operating system without lsblk, if you can please submit a patch\n" "${uname_s}" >&2 - fi - ;; - *) - printf "Don't know how to list disks for %s operating system, if you can please submit a patch\n" "${uname_s}" >&2 - ;; -esac - -exit 0 +cd /dev +echo sd? hd? vd? diff --git a/cdist/conf/explorer/hostname b/cdist/conf/explorer/hostname index dca004d1..7715c6b0 100755 --- a/cdist/conf/explorer/hostname +++ b/cdist/conf/explorer/hostname @@ -1,6 +1,7 @@ #!/bin/sh # -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) +# 2010-2014 Nico Schottelius (nico-cdist at schottelius.org) +# 2012 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # @@ -18,12 +19,7 @@ # along with cdist. If not, see . # # -# Retrieve the running hostname -# -if command -v hostname >/dev/null -then - hostname -else - uname -n +if command -v uname >/dev/null; then + uname -n fi diff --git a/cdist/conf/explorer/init b/cdist/conf/explorer/init index a8a7857e..43a66a50 100755 --- a/cdist/conf/explorer/init +++ b/cdist/conf/explorer/init @@ -29,7 +29,7 @@ case "$uname_s" in Linux) (pgrep -P0 -l | awk '/^1[ \t]/ {print $2;}') || true ;; - FreeBSD|OpenBSD) + FreeBSD) ps -o comm= -p 1 || true ;; *) diff --git a/cdist/conf/explorer/interfaces b/cdist/conf/explorer/interfaces index aeb55ed0..c1f2a57a 100755 --- a/cdist/conf/explorer/interfaces +++ b/cdist/conf/explorer/interfaces @@ -1,6 +1,6 @@ -#!/bin/sh -e +#!/bin/sh # -# 2019 Ander Punnar (ander-at-kvlt-dot-ee) +# 2012 Sébastien Gross # # This file is part of cdist. # @@ -17,12 +17,35 @@ # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # +# +# List all network interfaces in explorer/ifaces. One interface per line. +# +# If your OS is not supported please provide a ifconfig output +# -if command -v ip >/dev/null -then - ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p' -elif command -v ifconfig >/dev/null -then - ifconfig -a | sed -n -E 's/^(.*)(:[[:space:]]*flags=|Link encap).*/\1/p' -fi \ - | sort -u +# Use ip, if available +if command -v ip >/dev/null; then + ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p' + exit 0 +fi + +if ! command -v ifconfig >/dev/null; then + # no ifconfig, nothing we could do + exit 0 +fi + +uname_s="$(uname -s)" +REGEXP='s/^(.*)(:[[:space:]]*flags=|Link encap).*/\1/p' + +case "$uname_s" in + Darwin) + ifconfig -a | sed -n -E "$REGEXP" + ;; + Linux|*BSD) + ifconfig -a | sed -n -r "$REGEXP" + ;; + *) + echo "Unsupported ifconfig output for $uname_s" >&2 + exit 1 + ;; +esac diff --git a/cdist/conf/explorer/is-freebsd-jail b/cdist/conf/explorer/is-freebsd-jail old mode 100755 new mode 100644 index 010917f5..a6d11d1a --- a/cdist/conf/explorer/is-freebsd-jail +++ b/cdist/conf/explorer/is-freebsd-jail @@ -1,2 +1 @@ -#!/bin/sh sysctl -n security.jail.jailed 2>/dev/null | grep "1" || true diff --git a/cdist/conf/explorer/kernel_name b/cdist/conf/explorer/kernel_name old mode 100755 new mode 100644 index 1f9cfca4..98ebac2a --- a/cdist/conf/explorer/kernel_name +++ b/cdist/conf/explorer/kernel_name @@ -1,2 +1 @@ -#!/bin/sh uname -s diff --git a/cdist/conf/explorer/lsb_codename b/cdist/conf/explorer/lsb_codename index 26bb8e3d..eebd3e0f 100755 --- a/cdist/conf/explorer/lsb_codename +++ b/cdist/conf/explorer/lsb_codename @@ -20,9 +20,8 @@ # set +e -case "$("$__explorer/os")" in +case "$($__explorer/os)" in openwrt) - # shellcheck disable=SC1091 (. /etc/openwrt_release && echo "$DISTRIB_CODENAME") ;; *) diff --git a/cdist/conf/explorer/lsb_description b/cdist/conf/explorer/lsb_description index b1009627..23f45421 100755 --- a/cdist/conf/explorer/lsb_description +++ b/cdist/conf/explorer/lsb_description @@ -20,9 +20,8 @@ # set +e -case "$("$__explorer/os")" in +case "$($__explorer/os)" in openwrt) - # shellcheck disable=SC1091 (. /etc/openwrt_release && echo "$DISTRIB_DESCRIPTION") ;; *) diff --git a/cdist/conf/explorer/lsb_id b/cdist/conf/explorer/lsb_id index 82ff9977..9754eb63 100755 --- a/cdist/conf/explorer/lsb_id +++ b/cdist/conf/explorer/lsb_id @@ -20,9 +20,8 @@ # set +e -case "$("$__explorer/os")" in +case "$($__explorer/os)" in openwrt) - # shellcheck disable=SC1091 (. /etc/openwrt_release && echo "$DISTRIB_ID") ;; *) diff --git a/cdist/conf/explorer/lsb_release b/cdist/conf/explorer/lsb_release index 5ebfff1a..35b5547c 100755 --- a/cdist/conf/explorer/lsb_release +++ b/cdist/conf/explorer/lsb_release @@ -20,9 +20,8 @@ # set +e -case "$("$__explorer/os")" in +case "$($__explorer/os)" in openwrt) - # shellcheck disable=SC1091 (. /etc/openwrt_release && echo "$DISTRIB_RELEASE") ;; *) diff --git a/cdist/conf/explorer/machine b/cdist/conf/explorer/machine index 7ecb67e3..d4a0e106 100755 --- a/cdist/conf/explorer/machine +++ b/cdist/conf/explorer/machine @@ -22,6 +22,6 @@ # # -if command -v uname >/dev/null 2>&1 ; then +if command -v uname 2>&1 >/dev/null; then uname -m fi diff --git a/cdist/conf/explorer/machine_type b/cdist/conf/explorer/machine_type index bb21f69c..3b4f0308 100755 --- a/cdist/conf/explorer/machine_type +++ b/cdist/conf/explorer/machine_type @@ -22,13 +22,13 @@ # FIXME: other system types (not linux ...) -if [ -d "/proc/vz" ] && [ ! -d "/proc/bc" ]; then +if [ -d "/proc/vz" -a ! -d "/proc/bc" ]; then echo openvz exit fi if [ -e "/proc/1/environ" ] && - tr '\000' '\n' < "/proc/1/environ" | grep -Eiq '^container='; then + cat "/proc/1/environ" | tr '\000' '\n' | grep -Eiq '^container='; then echo lxc exit fi diff --git a/cdist/conf/explorer/os b/cdist/conf/explorer/os index 563fa4cf..d522300c 100755 --- a/cdist/conf/explorer/os +++ b/cdist/conf/explorer/os @@ -145,7 +145,7 @@ esac if [ -f /etc/os-release ]; then # already lowercase, according to: # https://www.freedesktop.org/software/systemd/man/os-release.html - awk -F= '/^ID=/ { if ($2 ~ /^'"'"'(.*)'"'"'$/ || $2 ~ /^"(.*)"$/) { print substr($2, 2, length($2) - 2) } else { print $2 } }' /etc/os-release + awk -F= '/^ID=/ {print $2;}' /etc/os-release exit 0 fi diff --git a/cdist/conf/explorer/os_version b/cdist/conf/explorer/os_version index 4c41695b..380782cc 100755 --- a/cdist/conf/explorer/os_version +++ b/cdist/conf/explorer/os_version @@ -22,7 +22,7 @@ # # -case "$("$__explorer/os")" in +case "$($__explorer/os)" in amazon) cat /etc/system-release ;; diff --git a/cdist/conf/type/__acl/explorer/acl_is b/cdist/conf/type/__acl/explorer/acl_is deleted file mode 100755 index a693c023..00000000 --- a/cdist/conf/type/__acl/explorer/acl_is +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -e -# -# 2018 Ander Punnar (ander-at-kvlt-dot-ee) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -[ ! -e "/$__object_id" ] && exit 0 - -if ! command -v getfacl > /dev/null -then - echo 'getfacl not available' >&2 - exit 1 -fi - -getfacl "/$__object_id" 2>/dev/null \ - | grep -Eo '^(default:)?(user|group|(mask|other):):[^:][[:graph:]]+' \ - || true diff --git a/cdist/conf/type/__acl/explorer/checks b/cdist/conf/type/__acl/explorer/checks deleted file mode 100755 index 70bb0412..00000000 --- a/cdist/conf/type/__acl/explorer/checks +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -e -# -# 2019 Ander Punnar (ander-at-kvlt-dot-ee) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -# TODO check if filesystem has ACL turned on etc - -if [ -f "$__object/parameter/acl" ] -then - grep -E '^(default:)?(user|group):' "$__object/parameter/acl" \ - | while read -r acl - do - param="$( echo "$acl" | awk -F: '{print $(NF-2)}' )" - check="$( echo "$acl" | awk -F: '{print $(NF-1)}' )" - - [ "$param" = 'user' ] && db=passwd || db="$param" - - if ! getent "$db" "$check" > /dev/null - then - echo "missing $param '$check'" >&2 - exit 1 - fi - done -fi diff --git a/cdist/conf/type/__acl/explorer/file_is b/cdist/conf/type/__acl/explorer/file_is deleted file mode 100755 index 096cffd1..00000000 --- a/cdist/conf/type/__acl/explorer/file_is +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -e -# -# 2018 Ander Punnar (ander-at-kvlt-dot-ee) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -if [ -e "/$__object_id" ] -then - if [ -d "/$__object_id" ] - then echo directory - elif [ -f "/$__object_id" ] - then echo regular - else echo other - fi -else - echo missing -fi diff --git a/cdist/conf/type/__acl/gencode-remote b/cdist/conf/type/__acl/gencode-remote deleted file mode 100755 index 6dab4d09..00000000 --- a/cdist/conf/type/__acl/gencode-remote +++ /dev/null @@ -1,126 +0,0 @@ -#!/bin/sh -e -# -# 2018 Ander Punnar (ander-at-kvlt-dot-ee) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -file_is="$( cat "$__object/explorer/file_is" )" - -[ "$file_is" = 'missing' ] && [ -z "$__cdist_dry_run" ] && exit 0 - -os="$( cat "$__global/explorer/os" )" - -acl_path="/$__object_id" - -acl_is="$( cat "$__object/explorer/acl_is" )" - -if [ -f "$__object/parameter/acl" ] -then - acl_should="$( cat "$__object/parameter/acl" )" -elif - [ -f "$__object/parameter/user" ] \ - || [ -f "$__object/parameter/group" ] \ - || [ -f "$__object/parameter/mask" ] \ - || [ -f "$__object/parameter/other" ] -then - acl_should="$( for param in user group mask other - do - [ ! -f "$__object/parameter/$param" ] && continue - - echo "$param" | grep -Eq 'mask|other' && sep=:: || sep=: - - echo "$param$sep$( cat "$__object/parameter/$param" )" - done )" -else - echo 'no parameters set' >&2 - exit 1 -fi - -if [ -f "$__object/parameter/default" ] -then - acl_should="$( echo "$acl_should" \ - | sed 's/^default://' \ - | sort -u \ - | sed 's/\(.*\)/default:\1\n\1/' )" -fi - -if [ "$file_is" = 'regular' ] \ - && echo "$acl_should" | grep -Eq '^default:' -then - # only directories can have default ACLs, - # but instead of error, - # let's just remove default entries - acl_should="$( echo "$acl_should" | grep -Ev '^default:' )" -fi - -if echo "$acl_should" | awk -F: '{ print $NF }' | grep -Fq 'X' -then - [ "$file_is" = 'directory' ] && rep=x || rep=- - - acl_should="$( echo "$acl_should" | sed "s/\\(.*\\)X/\\1$rep/" )" -fi - -setfacl_exec='setfacl' - -if [ -f "$__object/parameter/recursive" ] -then - if echo "$os" | grep -Fq 'freebsd' - then - echo "$os setfacl do not support recursive operations" >&2 - else - setfacl_exec="$setfacl_exec -R" - fi -fi - -if [ -f "$__object/parameter/remove" ] -then - echo "$acl_is" | while read -r acl - do - # skip wanted ACL entries which already exist - # and skip mask and other entries, because we - # can't actually remove them, but only change. - if echo "$acl_should" | grep -Eq "^$acl" \ - || echo "$acl" | grep -Eq '^(default:)?(mask|other)' - then continue - fi - - if echo "$os" | grep -Fq 'freebsd' - then - remove="$acl" - else - remove="$( echo "$acl" | sed 's/:...$//' )" - fi - - echo "$setfacl_exec -x \"$remove\" \"$acl_path\"" - echo "removed '$remove'" >> "$__messages_out" - done -fi - -for acl in $acl_should -do - if ! echo "$acl_is" | grep -Eq "^$acl" - then - if echo "$os" | grep -Fq 'freebsd' \ - && echo "$acl" | grep -Eq '^default:' - then - echo "setting default ACL in $os is currently not supported" >&2 - else - echo "$setfacl_exec -m \"$acl\" \"$acl_path\"" - echo "added '$acl'" >> "$__messages_out" - fi - fi -done diff --git a/cdist/conf/type/__acl/man.rst b/cdist/conf/type/__acl/man.rst deleted file mode 100644 index 85e946ce..00000000 --- a/cdist/conf/type/__acl/man.rst +++ /dev/null @@ -1,85 +0,0 @@ -cdist-type__acl(7) -================== - -NAME ----- -cdist-type__acl - Set ACL entries - - -DESCRIPTION ------------ -Fully supported and tested on Linux (ext4 filesystem), partial support for FreeBSD. - -See ``setfacl`` and ``acl`` manpages for more details. - - -REQUIRED MULTIPLE PARAMETERS ----------------------------- -acl - Set ACL entry following ``getfacl`` output syntax. - - -BOOLEAN PARAMETERS ------------------- -default - Set all ACL entries as default too. - Only directories can have default ACLs. - Setting default ACL in FreeBSD is currently not supported. - -recursive - Make ``setfacl`` recursive (Linux only), but not ``getfacl`` in explorer. - -remove - Remove undefined ACL entries. - ``mask`` and ``other`` entries can't be removed, but only changed. - - -DEPRECATED PARAMETERS ---------------------- -Parameters ``user``, ``group``, ``mask`` and ``other`` are deprecated and they -will be removed in future versions. Please use ``acl`` parameter instead. - - -EXAMPLES --------- - -.. code-block:: sh - - __acl /srv/project \ - --default \ - --recursive \ - --remove \ - --acl user:alice:rwx \ - --acl user:bob:r-x \ - --acl group:project-group:rwx \ - --acl group:some-other-group:r-x \ - --acl mask::r-x \ - --acl other::r-x - - # give Alice read-only access to subdir, - # but don't allow her to see parent content. - - __acl /srv/project2 \ - --remove \ - --acl default:group:secret-project:rwx \ - --acl group:secret-project:rwx \ - --acl user:alice:--x - - __acl /srv/project2/subdir \ - --default \ - --remove \ - --acl group:secret-project:rwx \ - --acl user:alice:r-x - - -AUTHORS -------- -Ander Punnar - - -COPYING -------- -Copyright \(C) 2018 Ander Punnar. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__acl/parameter/boolean b/cdist/conf/type/__acl/parameter/boolean deleted file mode 100644 index 8b96693f..00000000 --- a/cdist/conf/type/__acl/parameter/boolean +++ /dev/null @@ -1,3 +0,0 @@ -recursive -default -remove diff --git a/cdist/conf/type/__acl/parameter/deprecated/group b/cdist/conf/type/__acl/parameter/deprecated/group deleted file mode 100644 index 94e14159..00000000 --- a/cdist/conf/type/__acl/parameter/deprecated/group +++ /dev/null @@ -1 +0,0 @@ -see manual for details diff --git a/cdist/conf/type/__acl/parameter/deprecated/mask b/cdist/conf/type/__acl/parameter/deprecated/mask deleted file mode 100644 index 94e14159..00000000 --- a/cdist/conf/type/__acl/parameter/deprecated/mask +++ /dev/null @@ -1 +0,0 @@ -see manual for details diff --git a/cdist/conf/type/__acl/parameter/deprecated/other b/cdist/conf/type/__acl/parameter/deprecated/other deleted file mode 100644 index 94e14159..00000000 --- a/cdist/conf/type/__acl/parameter/deprecated/other +++ /dev/null @@ -1 +0,0 @@ -see manual for details diff --git a/cdist/conf/type/__acl/parameter/deprecated/user b/cdist/conf/type/__acl/parameter/deprecated/user deleted file mode 100644 index 94e14159..00000000 --- a/cdist/conf/type/__acl/parameter/deprecated/user +++ /dev/null @@ -1 +0,0 @@ -see manual for details diff --git a/cdist/conf/type/__acl/parameter/optional b/cdist/conf/type/__acl/parameter/optional deleted file mode 100644 index 4b32086b..00000000 --- a/cdist/conf/type/__acl/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -mask -other diff --git a/cdist/conf/type/__acl/parameter/optional_multiple b/cdist/conf/type/__acl/parameter/optional_multiple deleted file mode 100644 index 95c25d55..00000000 --- a/cdist/conf/type/__acl/parameter/optional_multiple +++ /dev/null @@ -1,3 +0,0 @@ -acl -user -group diff --git a/cdist/conf/type/__apt_key/explorer/state b/cdist/conf/type/__apt_key/explorer/state index 38f1bd3c..f7940741 100755 --- a/cdist/conf/type/__apt_key/explorer/state +++ b/cdist/conf/type/__apt_key/explorer/state @@ -27,18 +27,6 @@ else keyid="$__object_id" fi -keydir="$(cat "$__object/parameter/keydir")" -keyfile="$keydir/$__object_id.gpg" - -if [ -d "$keydir" ] -then - if [ -f "$keyfile" ] - then echo present - else echo absent - fi -else - # fallback to deprecated apt-key - apt-key export "$keyid" | head -n 1 | grep -Fqe "BEGIN PGP PUBLIC KEY BLOCK" \ - && echo present \ - || echo absent -fi +apt-key export "$keyid" | head -n 1 | grep -Fqe "BEGIN PGP PUBLIC KEY BLOCK" \ + && echo present \ + || echo absent diff --git a/cdist/conf/type/__apt_key/gencode-remote b/cdist/conf/type/__apt_key/gencode-remote index 0c96ff67..9c4fa00c 100755 --- a/cdist/conf/type/__apt_key/gencode-remote +++ b/cdist/conf/type/__apt_key/gencode-remote @@ -31,82 +31,12 @@ if [ "$state_should" = "$state_is" ]; then exit 0 fi -keydir="$(cat "$__object/parameter/keydir")" -keyfile="$keydir/$__object_id.gpg" - case "$state_should" in present) keyserver="$(cat "$__object/parameter/keyserver")" - - if [ -f "$__object/parameter/uri" ]; then - uri="$(cat "$__object/parameter/uri")" - - if [ -d "$keydir" ]; then - cat << EOF - -curl -s -L \\ - -o "$keyfile" \\ - "$uri" - -key="\$( cat "$keyfile" )" - -if echo "\$key" | grep -Fq 'BEGIN PGP PUBLIC KEY BLOCK' -then - echo "\$key" | gpg --dearmor > "$keyfile" -fi - -EOF - else - # fallback to deprecated apt-key - echo "curl -s -L '$uri' | apt-key add -" - fi - elif [ -d "$keydir" ]; then - # we need to kill gpg after 30 seconds, because gpg - # can get stuck if keyserver is not responding. - # exporting env var and not exit 1, - # because we need to clean up and kill dirmngr. - cat << EOF - -gpgtmphome="\$( mktemp -d )" - -if timeout 30s \\ - gpg --homedir "\$gpgtmphome" \\ - --keyserver "$keyserver" \\ - --recv-keys "$keyid" -then - gpg --homedir "\$gpgtmphome" \\ - --export "$keyid" \\ - > "$keyfile" -else - export GPG_GOT_STUCK=1 -fi - -GNUPGHOME="\$gpgtmphome" gpgconf --kill dirmngr - -rm -rf "\$gpgtmphome" - -if [ -n "\$GPG_GOT_STUCK" ] -then - echo "GPG GOT STUCK - no response from keyserver after 30 seconds" >&2 - exit 1 -fi - -EOF - else - # fallback to deprecated apt-key - echo "apt-key adv --keyserver \"$keyserver\" --recv-keys \"$keyid\"" - fi - - echo "added '$keyid'" >> "$__messages_out" + echo "apt-key adv --keyserver \"$keyserver\" --recv-keys \"$keyid\"" ;; absent) - if [ -f "$keyfile" ]; then - echo "rm '$keyfile'" - else - # fallback to deprecated apt-key - echo "apt-key del \"$keyid\"" - fi - - echo "removed '$keyid'" >> "$__messages_out" + echo "apt-key del \"$keyid\"" ;; esac diff --git a/cdist/conf/type/__apt_key/man.rst b/cdist/conf/type/__apt_key/man.rst index 234bc715..9009877e 100644 --- a/cdist/conf/type/__apt_key/man.rst +++ b/cdist/conf/type/__apt_key/man.rst @@ -28,12 +28,6 @@ keyserver the keyserver from which to fetch the key. If omitted the default set in ./parameter/default/keyserver is used. -keydir - key save location, defaults to ``/etc/apt/trusted.pgp.d`` - -uri - the URI from which to download the key - EXAMPLES -------- @@ -53,20 +47,15 @@ EXAMPLES # same thing with other keyserver __apt_key UbuntuArchiveKey --keyid 437D05B5 --keyserver keyserver.ubuntu.com - # download key from the internet - __apt_key rabbitmq \ - --uri http://www.rabbitmq.com/rabbitmq-signing-key-public.asc - AUTHORS ------- Steven Armstrong -Ander Punnar COPYING ------- -Copyright \(C) 2011-2019 Steven Armstrong and Ander Punnar. You can -redistribute it and/or modify it under the terms of the GNU General Public -License as published by the Free Software Foundation, either version 3 of the +Copyright \(C) 2011-2014 Steven Armstrong. You can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. diff --git a/cdist/conf/type/__apt_key/manifest b/cdist/conf/type/__apt_key/manifest deleted file mode 100755 index 010357cd..00000000 --- a/cdist/conf/type/__apt_key/manifest +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -e - -__package gnupg - -if [ -f "$__object/parameter/uri" ] -then __package curl -else __package dirmngr -fi diff --git a/cdist/conf/type/__apt_key/parameter/default/keydir b/cdist/conf/type/__apt_key/parameter/default/keydir deleted file mode 100644 index 190eb2de..00000000 --- a/cdist/conf/type/__apt_key/parameter/default/keydir +++ /dev/null @@ -1 +0,0 @@ -/etc/apt/trusted.gpg.d diff --git a/cdist/conf/type/__apt_key/parameter/optional b/cdist/conf/type/__apt_key/parameter/optional index de647375..18cf2586 100644 --- a/cdist/conf/type/__apt_key/parameter/optional +++ b/cdist/conf/type/__apt_key/parameter/optional @@ -1,5 +1,3 @@ state keyid keyserver -keydir -uri diff --git a/cdist/conf/type/__apt_ppa/explorer/state b/cdist/conf/type/__apt_ppa/explorer/state index d47e7d20..2bb4f65a 100755 --- a/cdist/conf/type/__apt_ppa/explorer/state +++ b/cdist/conf/type/__apt_ppa/explorer/state @@ -23,11 +23,10 @@ name="$__object_id" -# shellcheck disable=SC1091 . /etc/lsb-release repo_name="${name#ppa:}" -repo_file_name="$(echo "$repo_name" | sed -e 's|[/:]|-|' -e 's|\.|_|')-${DISTRIB_CODENAME}.list" +repo_file_name="$(echo "$repo_name" | sed -e "s|[/:]|-|" -e "s|\.|_|")-${DISTRIB_CODENAME}.list" [ -s "/etc/apt/sources.list.d/${repo_file_name}" ] \ && echo present || echo absent diff --git a/cdist/conf/type/__apt_ppa/gencode-remote b/cdist/conf/type/__apt_ppa/gencode-remote index 84ebebfe..f60cb7ac 100755 --- a/cdist/conf/type/__apt_ppa/gencode-remote +++ b/cdist/conf/type/__apt_ppa/gencode-remote @@ -29,9 +29,9 @@ fi case "$state_should" in present) - echo "add-apt-repository '$name'" + echo add-apt-repository \"$name\" ;; absent) - echo "remove-apt-repository '$name'" + echo remove-apt-repository \"$name\" ;; esac diff --git a/cdist/conf/type/__apt_ppa/manifest b/cdist/conf/type/__apt_ppa/manifest index c6f4e876..e1af21bd 100755 --- a/cdist/conf/type/__apt_ppa/manifest +++ b/cdist/conf/type/__apt_ppa/manifest @@ -18,6 +18,8 @@ # along with cdist. If not, see . # +name="$__object_id" + __package software-properties-common require="__package/software-properties-common" \ diff --git a/cdist/conf/type/__apt_source/nonparallel b/cdist/conf/type/__apt_source/nonparallel deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__block/gencode-remote b/cdist/conf/type/__block/gencode-remote index 1f5cc033..f269c785 100755 --- a/cdist/conf/type/__block/gencode-remote +++ b/cdist/conf/type/__block/gencode-remote @@ -18,11 +18,6 @@ # along with cdist. If not, see . # -# quote function from http://www.etalabs.net/sh_tricks.html -quote() { - printf '%s\n' "$1" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/'/" -} - file="$(cat "$__object/parameter/file" 2>/dev/null || echo "/$__object_id")" state_should=$(cat "$__object/parameter/state") prefix=$(cat "$__object/parameter/prefix" 2>/dev/null || echo "#cdist:__block/$__object_id") @@ -51,7 +46,7 @@ tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX) if [ -f "$file" ]; then cp -p "$file" "\$tmpfile" fi -awk -v prefix=^$(quote "$prefix")\$ -v suffix=^$(quote "$suffix")\$ ' +awk -v prefix="^$prefix\$" -v suffix="^$suffix\$" ' { if (match(\$0,prefix)) { triggered=1 diff --git a/cdist/conf/type/__block/manifest b/cdist/conf/type/__block/manifest index 726950d3..8fea3e83 100755 --- a/cdist/conf/type/__block/manifest +++ b/cdist/conf/type/__block/manifest @@ -18,6 +18,8 @@ # along with cdist. If not, see . # + +file="$(cat "$__object/parameter/file" 2>/dev/null || echo "/$__object_id")" prefix=$(cat "$__object/parameter/prefix" 2>/dev/null || echo "#cdist:__block/$__object_id") suffix=$(cat "$__object/parameter/suffix" 2>/dev/null || echo "#/cdist:__block/$__object_id") text=$(cat "$__object/parameter/text") diff --git a/cdist/conf/type/__ccollect_source/gencode-remote b/cdist/conf/type/__ccollect_source/gencode-remote index 57353c24..56003fef 100755 --- a/cdist/conf/type/__ccollect_source/gencode-remote +++ b/cdist/conf/type/__ccollect_source/gencode-remote @@ -42,20 +42,21 @@ get_current_value() { } set_group() { - echo "chgrp '$1' '$destination'" - echo "chgrp '$1'" >> "$__messages_out" + echo chgrp \"$1\" \"$destination\" + echo chgrp $1 >> "$__messages_out" } set_owner() { - echo "chown '$1' '$destination'" - echo "chown '$1'" >> "$__messages_out" + echo chown \"$1\" \"$destination\" + echo chown $1 >> "$__messages_out" } set_mode() { - echo "chmod '$1' '$destination'" - echo "chmod '$1'" >> "$__messages_out" + echo chmod \"$1\" \"$destination\" + echo chmod $1 >> "$__messages_out" } +set_attributes= case "$state_should" in present|exists) # Note: Mode - needs to happen last as a chown/chgrp can alter mode by @@ -66,11 +67,11 @@ case "$state_should" in # change 0xxx format to xxx format => same as stat returns if [ "$attribute" = mode ]; then - value_should="$(echo "$value_should" | sed 's/^0\(...\)/\1/')" + value_should="$(echo $value_should | sed 's/^0\(...\)/\1/')" fi value_is="$(get_current_value "$attribute" "$value_should")" - if [ -f "$__object/files/set-attributes" ] || [ "$value_should" != "$value_is" ]; then + if [ -f "$__object/files/set-attributes" -o "$value_should" != "$value_is" ]; then "set_$attribute" "$value_should" fi fi @@ -80,7 +81,7 @@ case "$state_should" in absent) if [ "$type" = "file" ]; then - echo "rm -f '$destination'" + echo rm -f \"$destination\" echo remove >> "$__messages_out" fi ;; diff --git a/cdist/conf/type/__ccollect_source/manifest b/cdist/conf/type/__ccollect_source/manifest index 727a4c97..238c7e76 100755 --- a/cdist/conf/type/__ccollect_source/manifest +++ b/cdist/conf/type/__ccollect_source/manifest @@ -22,7 +22,7 @@ name="$__object_id" state="$(cat "$__object/parameter/state")" source="$(cat "$__object/parameter/source")" destination="$(cat "$__object/parameter/destination")" -ccollectconf="$(sed 's,/$,,' "$__object/parameter/ccollectconf")" +ccollectconf="$(cat "$__object/parameter/ccollectconf" | sed 's,/$,,')" sourcedir="$ccollectconf/sources" basedir="$sourcedir/$name" @@ -55,5 +55,5 @@ if [ -f "$__object/parameter/exclude" ]; then fi if [ -f "$__object/parameter/create-destination" ]; then - __directory "${destination}" --parents --state "${state}" + __directory "${destination}" --parents --state ${state} fi diff --git a/cdist/conf/type/__cdist/man.rst b/cdist/conf/type/__cdist/man.rst index be082781..9e1c72cb 100644 --- a/cdist/conf/type/__cdist/man.rst +++ b/cdist/conf/type/__cdist/man.rst @@ -30,7 +30,7 @@ username source Select the source from which to clone cdist from. - Defaults to "git@code.ungleich.ch:ungleich-public/cdist.git". + Defaults to "git://github.com/ungleich/cdist.git". branch @@ -47,7 +47,7 @@ EXAMPLES __cdist /home/cdist/cdist # Use alternative source - __cdist --source "git@code.ungleich.ch:ungleich-public/cdist.git" /home/cdist/cdist + __cdist --source "git://github.com/ungleich/cdist" /home/cdist/cdist AUTHORS diff --git a/cdist/conf/type/__cdist/parameter/default/source b/cdist/conf/type/__cdist/parameter/default/source index 1ad3a250..3f8e31ad 100644 --- a/cdist/conf/type/__cdist/parameter/default/source +++ b/cdist/conf/type/__cdist/parameter/default/source @@ -1 +1 @@ -git@code.ungleich.ch:ungleich-public/cdist.git +git://github.com/ungleich/cdist.git diff --git a/cdist/conf/type/__check_messages/gencode-remote b/cdist/conf/type/__check_messages/gencode-remote deleted file mode 100755 index ec36cecc..00000000 --- a/cdist/conf/type/__check_messages/gencode-remote +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -e -# -# 2019 Ander Punnar (ander-at-kvlt-dot-ee) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -if grep -Eq \ - "$( cat "$__object/parameter/pattern" )" \ - "$__messages_in" -then - tee "$__messages_out" < "$__object/parameter/execute" -fi diff --git a/cdist/conf/type/__check_messages/man.rst b/cdist/conf/type/__check_messages/man.rst deleted file mode 100644 index 5c80a0ae..00000000 --- a/cdist/conf/type/__check_messages/man.rst +++ /dev/null @@ -1,52 +0,0 @@ -cdist-type__check_messages(7) -============================= - -NAME ----- -cdist-type__check_messages - Check messages for pattern and execute command on match. - - -DESCRIPTION ------------ -Check messages for pattern and execute command on match. - -This type is useful if you chain together multiple related types using -dependencies and want to restart service if at least one type changes -something. - -For more information about messages see `cdist messaging `_. - -For more information about dependencies and execution order see -`cdist manifest `_ documentation. - - -REQUIRED PARAMETERS -------------------- -pattern - Extended regular expression pattern for search (passed to ``grep -E``). - -execute - Command to execute on pattern match. - - -EXAMPLES --------- - -.. code-block:: sh - - __check_messages munin \ - --pattern '^__(file|link|line)/etc/munin/' \ - --execute 'service munin-node restart' - - -AUTHORS -------- -Ander Punnar - - -COPYING -------- -Copyright \(C) 2019 Ander Punnar. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__check_messages/parameter/required b/cdist/conf/type/__check_messages/parameter/required deleted file mode 100644 index 374363cb..00000000 --- a/cdist/conf/type/__check_messages/parameter/required +++ /dev/null @@ -1,2 +0,0 @@ -pattern -execute diff --git a/cdist/conf/type/__clean_path/explorer/list b/cdist/conf/type/__clean_path/explorer/list deleted file mode 100755 index 07d38127..00000000 --- a/cdist/conf/type/__clean_path/explorer/list +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -e -# -# 2019 Ander Punnar (ander-at-kvlt-dot-ee) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -path="/$__object_id" - -[ ! -d "$path" ] && exit 0 - -pattern="$( cat "$__object/parameter/pattern" )" - -if [ -f "$__object/parameter/exclude" ] -then - exclude="$( cat "$__object/parameter/exclude" )" - - find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern" \ - -and -not -regex "$exclude" -else - find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern" -fi diff --git a/cdist/conf/type/__clean_path/gencode-remote b/cdist/conf/type/__clean_path/gencode-remote deleted file mode 100755 index 998a70d8..00000000 --- a/cdist/conf/type/__clean_path/gencode-remote +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -e -# -# 2019 Ander Punnar (ander-at-kvlt-dot-ee) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -[ ! -s "$__object/explorer/list" ] && exit 0 - -path="/$__object_id" - -pattern="$( cat "$__object/parameter/pattern" )" - -if [ -f "$__object/parameter/exclude" ] -then - exclude="$( cat "$__object/parameter/exclude" )" - - echo "find '$path' -mindepth 1 -maxdepth 1 -regex '$pattern'" \ - "-and -not -regex '$exclude'" \ - '-exec rm -rf {} \;' -else - echo "find '$path' -mindepth 1 -maxdepth 1 -regex '$pattern'" \ - '-exec rm -rf {} \;' -fi - -while read -r f -do - echo "removed '$f'" >> "$__messages_out" -done \ -< "$__object/explorer/list" - -if [ -f "$__object/parameter/onchange" ] -then - cat "$__object/parameter/onchange" -fi diff --git a/cdist/conf/type/__clean_path/man.rst b/cdist/conf/type/__clean_path/man.rst deleted file mode 100644 index 826f4589..00000000 --- a/cdist/conf/type/__clean_path/man.rst +++ /dev/null @@ -1,60 +0,0 @@ -cdist-type__clean_path(7) -========================= - -NAME ----- -cdist-type__clean_path - Remove files and directories which match the pattern. - - -DESCRIPTION ------------ -Remove files and directories which match the pattern. - -Provided path (as __object_id) must be a directory. - -Patterns are passed to ``find``'s ``-regex`` - see ``find(1)`` for more details. - -Look up of files and directories is non-recursive (``-maxdepth 1``). - -Parent directory is excluded (``-mindepth 1``). - -This type is not POSIX compatible (sorry, Solaris users). - - -REQUIRED PARAMETERS -------------------- -pattern - Pattern of files which are removed from path. - - -OPTIONAL PARAMETERS -------------------- -exclude - Pattern of files which are excluded from removal. - -onchange - The code to run if files or directories were removed. - - -EXAMPLES --------- - -.. code-block:: sh - - __clean_path /etc/apache2/conf-enabled \ - --pattern '.+' \ - --exclude '.+\(charset\.conf\|security\.conf\)' \ - --onchange 'service apache2 restart' - - -AUTHORS -------- -Ander Punnar - - -COPYING -------- -Copyright \(C) 2019 Ander Punnar. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__clean_path/parameter/optional b/cdist/conf/type/__clean_path/parameter/optional deleted file mode 100644 index 6f313474..00000000 --- a/cdist/conf/type/__clean_path/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -exclude -onchange diff --git a/cdist/conf/type/__clean_path/parameter/required b/cdist/conf/type/__clean_path/parameter/required deleted file mode 100644 index 54774947..00000000 --- a/cdist/conf/type/__clean_path/parameter/required +++ /dev/null @@ -1 +0,0 @@ -pattern diff --git a/cdist/conf/type/__config_file/manifest b/cdist/conf/type/__config_file/manifest index be8f9f67..3155f79b 100755 --- a/cdist/conf/type/__config_file/manifest +++ b/cdist/conf/type/__config_file/manifest @@ -19,8 +19,7 @@ # set -- "/${__object_id}" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in source) source="$(cat "$__object/parameter/source")" diff --git a/cdist/conf/type/__consul/files/versions/1.2.3/cksum b/cdist/conf/type/__consul/files/versions/1.2.3/cksum deleted file mode 100644 index 6352409e..00000000 --- a/cdist/conf/type/__consul/files/versions/1.2.3/cksum +++ /dev/null @@ -1 +0,0 @@ -191982 110369685 diff --git a/cdist/conf/type/__consul/files/versions/1.2.3/source b/cdist/conf/type/__consul/files/versions/1.2.3/source deleted file mode 100644 index 5e67bc37..00000000 --- a/cdist/conf/type/__consul/files/versions/1.2.3/source +++ /dev/null @@ -1 +0,0 @@ -https://releases.hashicorp.com/consul/1.2.3/consul_1.2.3_linux_amd64.zip diff --git a/cdist/conf/type/__consul/files/versions/1.3.0/cksum b/cdist/conf/type/__consul/files/versions/1.3.0/cksum deleted file mode 100644 index 7a885378..00000000 --- a/cdist/conf/type/__consul/files/versions/1.3.0/cksum +++ /dev/null @@ -1 +0,0 @@ -1714523667 98363467 consul diff --git a/cdist/conf/type/__consul/files/versions/1.3.0/source b/cdist/conf/type/__consul/files/versions/1.3.0/source deleted file mode 100644 index 18a1ba8e..00000000 --- a/cdist/conf/type/__consul/files/versions/1.3.0/source +++ /dev/null @@ -1 +0,0 @@ -https://releases.hashicorp.com/consul/1.3.0/consul_1.3.0_linux_amd64.zip diff --git a/cdist/conf/type/__consul/files/versions/1.5.0/cksum b/cdist/conf/type/__consul/files/versions/1.5.0/cksum deleted file mode 100644 index efca9caa..00000000 --- a/cdist/conf/type/__consul/files/versions/1.5.0/cksum +++ /dev/null @@ -1 +0,0 @@ -886614099 103959898 consul diff --git a/cdist/conf/type/__consul/files/versions/1.5.0/source b/cdist/conf/type/__consul/files/versions/1.5.0/source deleted file mode 100644 index cafa9248..00000000 --- a/cdist/conf/type/__consul/files/versions/1.5.0/source +++ /dev/null @@ -1 +0,0 @@ -https://releases.hashicorp.com/consul/1.5.0/consul_1.5.0_linux_amd64.zip diff --git a/cdist/conf/type/__consul/gencode-remote b/cdist/conf/type/__consul/gencode-remote index 2a21054f..22e9eea1 100755 --- a/cdist/conf/type/__consul/gencode-remote +++ b/cdist/conf/type/__consul/gencode-remote @@ -39,10 +39,10 @@ version_dir="$versions_dir/$version" source=$(cat "$version_dir/source") source_file_name="${source##*/}" -cksum_should=$(cut -d' ' -f1,2 "$version_dir/cksum") +cksum_should=$(cat "$version_dir/cksum" | cut -d' ' -f1,2) cat << eof - tmpdir=\$(mktemp -d -p /tmp "${__type##*/}.XXXXXXXXXX") + tmpdir=\$(mktemp -d --tmpdir="/tmp" "${__type##*/}.XXXXXXXXXX") curl -s -L "$source" > "\$tmpdir/$source_file_name" unzip -p "\$tmpdir/$source_file_name" > "${destination}.tmp" rm -rf "\$tmpdir" diff --git a/cdist/conf/type/__consul/manifest b/cdist/conf/type/__consul/manifest index 156eb667..0dd50f53 100755 --- a/cdist/conf/type/__consul/manifest +++ b/cdist/conf/type/__consul/manifest @@ -24,7 +24,7 @@ os=$(cat "$__global/explorer/os") case "$os" in - alpine|scientific|centos|redhat|ubuntu|debian|devuan|archlinux|gentoo) + scientific|centos|redhat|ubuntu|debian|devuan|archlinux|gentoo) # any linux should work : ;; @@ -47,7 +47,6 @@ fi if [ -f "$__object/parameter/direct" ]; then __package unzip - __package curl else __staged_file /usr/local/bin/consul \ --source "$(cat "$version_dir/source")" \ diff --git a/cdist/conf/type/__consul_agent/files/consul.sys-openrc b/cdist/conf/type/__consul_agent/files/consul.sys-openrc deleted file mode 100644 index 1dbe9375..00000000 --- a/cdist/conf/type/__consul_agent/files/consul.sys-openrc +++ /dev/null @@ -1,38 +0,0 @@ -#!/sbin/openrc-run -# 2019 Nico Schottelius (nico-cdist at schottelius.org) - -description="consul agent" - -pidfile="${CONSUL_PIDFILE:-"/var/run/$RC_SVCNAME/pidfile"}" -command="${CONSUL_BINARY:-"/usr/local/bin/consul"}" - - -checkconfig() { - if [ ! -d /var/run/consul ] ; then - mkdir -p /var/run/consul || return 1 - chown consul:consul /var/run/$NAME || return 1 - chmod 2770 /var/run/$NAME || return 1 - fi -} - -start() { - need net - - start-stop-daemon --start --quiet --oknodo \ - --pidfile "$pidfile" --background \ - --exec $command -- agent -pid-file="$pidfile" -config-dir /etc/consul/conf.d -} -start_pre() { - checkconfig -} - -stop() { - if [ "${RC_CMD}" = "restart" ] ; then - checkconfig || return 1 - fi - - ebegin "Stopping $RC_SVCNAME" - start-stop-daemon --stop --exec "$command" \ - --pidfile "$pidfile" --quiet - eend $? -} diff --git a/cdist/conf/type/__consul_agent/files/consul.sysv-debian b/cdist/conf/type/__consul_agent/files/consul.sysv-debian index 4f43c000..a75c555d 100644 --- a/cdist/conf/type/__consul_agent/files/consul.sysv-debian +++ b/cdist/conf/type/__consul_agent/files/consul.sysv-debian @@ -1,6 +1,6 @@ #!/bin/sh # -# 2015-2018 Nico Schottelius (nico-cdist at schottelius.org) +# 2015 Nico Schottelius (nico-cdist at schottelius.org) # 2015 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. @@ -18,24 +18,11 @@ # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # -### BEGIN INIT INFO -# Provides: consul -# Required-Start: $network $local_fs $remote_fs -# Required-Stop: $local_fs -# Should-Start: -# Should-Stop: -# Short-Description: consul -# Description: consul agent -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -### END INIT INFO if [ -f "/etc/default/consul" ]; then - # shellcheck disable=SC1091 . /etc/default/consul fi -# shellcheck disable=SC1091 . /lib/lsb/init-functions NAME=consul diff --git a/cdist/conf/type/__consul_agent/files/consul.sysv-redhat b/cdist/conf/type/__consul_agent/files/consul.sysv-redhat index 58fc9bd9..13dafd2e 100644 --- a/cdist/conf/type/__consul_agent/files/consul.sysv-redhat +++ b/cdist/conf/type/__consul_agent/files/consul.sysv-redhat @@ -11,52 +11,49 @@ # pidfile: /var/run/consul/pidfile # Source function library. - -# shellcheck disable=SC1091 . /etc/init.d/functions NAME=consul CONSUL=/usr/local/bin/consul -CONFIG="/etc/$NAME/conf.d" -PID_FILE="/var/run/$NAME/pidfile" -LOG_FILE="/var/log/$NAME" +CONFIG=/etc/$NAME/conf.d +PID_FILE=/var/run/$NAME/pidfile +LOG_FILE=/var/log/$NAME -# shellcheck disable=SC1090 -[ -e "/etc/sysconfig/$NAME" ] && . "/etc/sysconfig/$NAME" -export GOMAXPROCS="${GOMAXPROCS:-2}" +[ -e /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME +export GOMAXPROCS=${GOMAXPROCS:-2} -mkdir -p "/var/run/$NAME" -chown consul:consul "/var/run/$NAME" -chmod 2770 "/var/run/$NAME" +mkdir -p /var/run/$NAME +chown consul:consul /var/run/$NAME +chmod 2770 /var/run/$NAME start() { - printf "Starting %s: " "$NAME" + echo -n "Starting $NAME: " daemon --user=consul \ --pidfile="$PID_FILE" \ "$CONSUL" agent -pid-file="$PID_FILE" -config-dir "$CONFIG" >> "$LOG_FILE" & retcode=$? - touch "/var/lock/subsys/$NAME" - return "$retcode" + touch /var/lock/subsys/$NAME + return $retcode } stop() { - printf "Shutting down %s: " "$NAME" - killproc -p "$PID_FILE" "$NAME" + echo -n "Shutting down $NAME: " + killproc -p "$PID_FILE" $NAME retcode=$? - rm -f "/var/lock/subsys/$NAME" - return "$retcode" + rm -f /var/lock/subsys/$NAME + return $retcode } case "$1" in start) - if status -p "$PID_FILE" "$NAME" >/dev/null; then + if $(status -p "$PID_FILE" $NAME >/dev/null); then echo "$NAME already running" else start fi ;; stop) - if status -p "$PID_FILE" "$NAME" >/dev/null; then + if $(status -p "$PID_FILE" $NAME >/dev/null); then stop else echo "$NAME not running" @@ -66,25 +63,25 @@ case "$1" in "$CONSUL" info ;; status) - status -p "$PID_FILE" "$NAME" + status -p "$PID_FILE" $NAME exit $? ;; restart) - if status -p "$PID_FILE" "$NAME" >/dev/null; then + if $(status -p "$PID_FILE" $NAME >/dev/null); then stop fi start ;; reload) - if status -p "$PID_FILE" "$NAME" >/dev/null; then - kill -HUP "$(cat "$PID_FILE")" + if $(status -p "$PID_FILE" $NAME >/dev/null); then + kill -HUP `cat $PID_FILE` else echo "$NAME not running" fi ;; condrestart) - if [ -f "/var/lock/subsys/$NAME" ]; then - if status -p "$PID_FILE" "$NAME" >/dev/null; then + if [ -f /var/lock/subsys/$NAME ]; then + if $(status -p "$PID_FILE" $NAME >/dev/null); then stop fi start diff --git a/cdist/conf/type/__consul_agent/manifest b/cdist/conf/type/__consul_agent/manifest index a88d26ed..820018c9 100755 --- a/cdist/conf/type/__consul_agent/manifest +++ b/cdist/conf/type/__consul_agent/manifest @@ -1,7 +1,7 @@ #!/bin/sh -e # # 2015 Steven Armstrong (steven-cdist at armstrong.cc) -# 2015-2019 Nico Schottelius (nico-cdist at schottelius.org) +# 2015 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -23,7 +23,7 @@ os=$(cat "$__global/explorer/os") case "$os" in - alpine|scientific|centos|debian|devuan|redhat|ubuntu) + scientific|centos|debian|devuan|redhat|ubuntu) # whitelist safeguard : ;; @@ -66,7 +66,7 @@ require="__directory/etc/consul" \ __directory "$conf_dir" \ --owner root --group "$group" --mode 750 --state "$state" -if [ -f "$__object/parameter/ca-file-source" ] || [ -f "$__object/parameter/cert-file-source" ] || [ -f "$__object/parameter/key-file-source" ]; then +if [ -f "$__object/parameter/ca-file-source" -o -f "$__object/parameter/cert-file-source" -o -f "$__object/parameter/key-file-source" ]; then # create directory for ssl certs require="__directory/etc/consul" \ __directory /etc/consul/ssl \ @@ -84,8 +84,7 @@ echo "{" # parameters we define ourself printf ' "data_dir": "%s"\n' "$data_dir" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state|user|group|json-config) continue ;; ca-file-source|cert-file-source|key-file-source) @@ -181,25 +180,22 @@ init_upstart() # Install init script to start on boot case "$os" in - alpine|devuan) - init_sysvinit debian - ;; - centos|redhat) - os_version="$(sed 's/[^0-9.]//g' "$__global/explorer/os_version")" - major_version="${os_version%%.*}" - case "$major_version" in - [456]) - init_sysvinit redhat - ;; - 7) - init_systemd - ;; - *) - echo "Unsupported CentOS/Redhat version: $os_version" >&2 - exit 1 - ;; - esac - ;; + centos|redhat) + os_version="$(sed 's/[^0-9.]//g' "$__global/explorer/os_version")" + major_version="${os_version%%.*}" + case "$major_version" in + [456]) + init_sysvinit redhat + ;; + 7) + init_systemd + ;; + *) + echo "Unsupported CentOS/Redhat version: $os_version" >&2 + exit 1 + ;; + esac + ;; debian) os_version=$(cat "$__global/explorer/os_version") @@ -209,7 +205,7 @@ case "$os" in [567]) init_sysvinit debian ;; - [89]) + 8) init_systemd ;; *) @@ -217,9 +213,13 @@ case "$os" in exit 1 ;; esac - ;; + ;; + + devuan) + init_sysvinit debian + ;; ubuntu) init_upstart - ;; + ;; esac diff --git a/cdist/conf/type/__consul_check/manifest b/cdist/conf/type/__consul_check/manifest index c9f7add9..8149b130 100755 --- a/cdist/conf/type/__consul_check/manifest +++ b/cdist/conf/type/__consul_check/manifest @@ -40,7 +40,7 @@ if [ ! -f "$__object/parameter/interval" ]; then fi done fi -if [ -f "$__object/parameter/docker-container-id" ] && [ ! -f "$__object/parameter/script" ]; then +if [ -f "$__object/parameter/docker-container-id" -a ! -f "$__object/parameter/script" ]; then echo "When using --docker-container-id you must also define --script." >&2 exit 1 fi @@ -50,8 +50,7 @@ fi echo "{" printf ' "check": {\n' printf ' "name": "%s"\n' "$name" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state|name) continue ;; *) diff --git a/cdist/conf/type/__consul_service/manifest b/cdist/conf/type/__consul_service/manifest index 60397db7..d7a1b6e3 100755 --- a/cdist/conf/type/__consul_service/manifest +++ b/cdist/conf/type/__consul_service/manifest @@ -24,15 +24,15 @@ conf_file="service_${name}.json" state="$(cat "$__object/parameter/state")" # Sanity checks -if [ -f "$__object/parameter/check-script" ] && [ -f "$__object/parameter/check-ttl" ]; then +if [ -f "$__object/parameter/check-script" -a -f "$__object/parameter/check-ttl" ]; then echo "Use either --check-script together with --check-interval OR --check-ttl, but not both" >&2 exit 1 fi -if [ -f "$__object/parameter/check-script" ] && [ ! -f "$__object/parameter/check-interval" ]; then +if [ -f "$__object/parameter/check-script" -a ! -f "$__object/parameter/check-interval" ]; then echo "When using --check-script you must also define --check-interval" >&2 exit 1 fi -if [ -f "$__object/parameter/check-http" ] && [ ! -f "$__object/parameter/check-interval" ]; then +if [ -f "$__object/parameter/check-http" -a ! -f "$__object/parameter/check-interval" ]; then echo "When using --check-http you must also define --check-interval" >&2 exit 1 fi @@ -42,8 +42,7 @@ fi echo "{" printf ' "service": {\n' printf ' "name": "%s"\n' "$name" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state|name|check-interval) continue ;; check-script) diff --git a/cdist/conf/type/__consul_template/files/consul-template.sysv b/cdist/conf/type/__consul_template/files/consul-template.sysv index b263915a..0a463020 100644 --- a/cdist/conf/type/__consul_template/files/consul-template.sysv +++ b/cdist/conf/type/__consul_template/files/consul-template.sysv @@ -10,75 +10,72 @@ # pidfile: /var/run/consul-template/pidfile # Source function library. - -# shellcheck disable=SC1091 . /etc/init.d/functions NAME=consul-template CONSUL_TEMPLATE=/usr/local/bin/consul-template -CONFIG="/etc/$NAME/conf.d" -PID_FILE="/var/run/$NAME/pidfile" -LOG_FILE="/var/log/$NAME" +CONFIG=/etc/$NAME/conf.d +PID_FILE=/var/run/$NAME/pidfile +LOG_FILE=/var/log/$NAME -# shellcheck disable=SC1090 -[ -e "/etc/sysconfig/$NAME" ] && . "/etc/sysconfig/$NAME" -export CONSUL_TEMPLATE_LOG="${CONSUL_TEMPLATE_LOG:-info}" -export GOMAXPROCS="${GOMAXPROCS:-2}" +[ -e /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME +export CONSUL_TEMPLATE_LOG=${CONSUL_TEMPLATE_LOG:-info} +export GOMAXPROCS=${GOMAXPROCS:-2} -mkdir -p "/var/run/$NAME" +mkdir -p /var/run/$NAME start() { - printf "Starting %s: " "$NAME" + echo -n "Starting $NAME: " daemon --pidfile="$PID_FILE" \ "$CONSUL_TEMPLATE" -config "$CONFIG" >> "$LOG_FILE" 2>&1 & - echo "$!" > "$PID_FILE" + echo $! > "$PID_FILE" retcode=$? - touch "/var/lock/subsys/$NAME" - return "$retcode" + touch /var/lock/subsys/$NAME + return $retcode } stop() { - printf "Shutting down %s: " "$NAME" - killproc -p "$PID_FILE" "$CONSUL_TEMPLATE" + echo -n "Shutting down $NAME: " + killproc -p $PID_FILE $CONSUL_TEMPLATE retcode=$? - rm -f "/var/lock/subsys/$NAME" - return "$retcode" + rm -f /var/lock/subsys/$NAME + return $retcode } case "$1" in start) - if status -p "$PID_FILE" "$NAME" >/dev/null; then + if $(status -p "$PID_FILE" $NAME >/dev/null); then echo "$NAME already running" else start fi ;; stop) - if status -p "$PID_FILE" "$NAME" >/dev/null; then + if $(status -p "$PID_FILE" $NAME >/dev/null); then stop else echo "$NAME not running" fi ;; status) - status -p "$PID_FILE" "$NAME" + status -p "$PID_FILE" $NAME exit $? ;; restart) - if status -p "$PID_FILE" "$NAME" >/dev/null; then + if $(status -p "$PID_FILE" $NAME >/dev/null); then stop fi start ;; reload) - if status -p "$PID_FILE" "$NAME" >/dev/null; then - kill -HUP "$(cat "$PID_FILE")" + if $(status -p "$PID_FILE" $NAME >/dev/null); then + kill -HUP `cat $PID_FILE` else echo "$NAME not running" fi ;; condrestart) - if [ -f "/var/lock/subsys/$NAME" ]; then - if status -p "$PID_FILE" "$NAME" >/dev/null; then + if [ -f /var/lock/subsys/$NAME ]; then + if $(status -p "$PID_FILE" $NAME >/dev/null); then stop fi start diff --git a/cdist/conf/type/__consul_template/manifest b/cdist/conf/type/__consul_template/manifest index b02fc332..2236e5bd 100755 --- a/cdist/conf/type/__consul_template/manifest +++ b/cdist/conf/type/__consul_template/manifest @@ -75,8 +75,7 @@ require="__directory/etc/consul-template" \ # Generate hcl config file ( -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in auth-password|state|ssl-*|syslog-*|version|vault-token|vault-ssl*) continue ;; auth-username) diff --git a/cdist/conf/type/__consul_template_template/manifest b/cdist/conf/type/__consul_template_template/manifest index 1eae1fad..5fe657d0 100755 --- a/cdist/conf/type/__consul_template_template/manifest +++ b/cdist/conf/type/__consul_template_template/manifest @@ -26,36 +26,32 @@ template_dir="/etc/consul-template/template" require="" # Sanity checks -if [ -f "$__object/parameter/source" ] && [ -f "$__object/parameter/source-file" ]; then +if [ -f "$__object/parameter/source" -a -f "$__object/parameter/source-file" ]; then echo "Use either --source OR --source-file, but not both." >&2 exit 1 fi -if [ ! -f "$__object/parameter/source" ] && [ ! -f "$__object/parameter/source-file" ]; then +if [ ! -f "$__object/parameter/source" -a ! -f "$__object/parameter/source-file" ]; then echo "Either --source OR --source-file must be given." >&2 exit 1 fi -if [ -f "$__object/parameter/source-file" ]; then - destination="${template_dir}/${name}" - require="__file${destination}" -fi - # Generate hcl config file -{ +( printf 'template {\n' -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in source-file) source="$(cat "$__object/parameter/$param")" if [ "$source" = "-" ]; then source="$__object/stdin" fi + destination="${template_dir}/${name}" require="__directory${template_dir}" \ __file "$destination" \ --owner root --group root --mode 640 \ --source "$source" \ --state "$state" + export require="__file${destination}" printf ' source = "%s"\n' "$destination" ;; @@ -69,7 +65,7 @@ for param in *; do esac done printf '}\n' -} | \ +) | \ require="$require __directory${conf_dir}" \ __config_file "${conf_dir}/${conf_file}" \ --owner root --group root --mode 640 \ diff --git a/cdist/conf/type/__consul_watch_checks/manifest b/cdist/conf/type/__consul_watch_checks/manifest index 5fdd7a74..ebb49e2e 100755 --- a/cdist/conf/type/__consul_watch_checks/manifest +++ b/cdist/conf/type/__consul_watch_checks/manifest @@ -25,7 +25,7 @@ conf_file="watch_${watch_type}_${__object_id}.json" state="$(cat "$__object/parameter/state")" # Sanity checks -if [ -f "$__object/parameter/filter-service" ] && [ -f "$__object/parameter/filter-state" ]; then +if [ -f "$__object/parameter/filter-service" -a -f "$__object/parameter/filter-state" ]; then echo "Use either --filter-service or --filter-state but not both." >&2 exit 1 fi @@ -35,8 +35,7 @@ fi echo "{" printf ' "watches": [{\n' printf ' "type": "%s"\n' "$watch_type" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state) continue ;; filter-*) diff --git a/cdist/conf/type/__consul_watch_event/manifest b/cdist/conf/type/__consul_watch_event/manifest index 61934656..099054a5 100755 --- a/cdist/conf/type/__consul_watch_event/manifest +++ b/cdist/conf/type/__consul_watch_event/manifest @@ -29,8 +29,7 @@ state="$(cat "$__object/parameter/state")" echo "{" printf ' "watches": [{\n' printf ' "type": "%s"\n' "$watch_type" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state) continue ;; *) diff --git a/cdist/conf/type/__consul_watch_key/manifest b/cdist/conf/type/__consul_watch_key/manifest index 61934656..099054a5 100755 --- a/cdist/conf/type/__consul_watch_key/manifest +++ b/cdist/conf/type/__consul_watch_key/manifest @@ -29,8 +29,7 @@ state="$(cat "$__object/parameter/state")" echo "{" printf ' "watches": [{\n' printf ' "type": "%s"\n' "$watch_type" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state) continue ;; *) diff --git a/cdist/conf/type/__consul_watch_keyprefix/manifest b/cdist/conf/type/__consul_watch_keyprefix/manifest index 61934656..099054a5 100755 --- a/cdist/conf/type/__consul_watch_keyprefix/manifest +++ b/cdist/conf/type/__consul_watch_keyprefix/manifest @@ -29,8 +29,7 @@ state="$(cat "$__object/parameter/state")" echo "{" printf ' "watches": [{\n' printf ' "type": "%s"\n' "$watch_type" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state) continue ;; *) diff --git a/cdist/conf/type/__consul_watch_nodes/manifest b/cdist/conf/type/__consul_watch_nodes/manifest index 61934656..099054a5 100755 --- a/cdist/conf/type/__consul_watch_nodes/manifest +++ b/cdist/conf/type/__consul_watch_nodes/manifest @@ -29,8 +29,7 @@ state="$(cat "$__object/parameter/state")" echo "{" printf ' "watches": [{\n' printf ' "type": "%s"\n' "$watch_type" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state) continue ;; *) diff --git a/cdist/conf/type/__consul_watch_service/manifest b/cdist/conf/type/__consul_watch_service/manifest index db38eb18..2825c716 100755 --- a/cdist/conf/type/__consul_watch_service/manifest +++ b/cdist/conf/type/__consul_watch_service/manifest @@ -29,8 +29,7 @@ state="$(cat "$__object/parameter/state")" echo "{" printf ' "watches": [{\n' printf ' "type": "%s"\n' "$watch_type" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state) continue ;; passingonly) diff --git a/cdist/conf/type/__consul_watch_services/manifest b/cdist/conf/type/__consul_watch_services/manifest index 61934656..099054a5 100755 --- a/cdist/conf/type/__consul_watch_services/manifest +++ b/cdist/conf/type/__consul_watch_services/manifest @@ -29,8 +29,7 @@ state="$(cat "$__object/parameter/state")" echo "{" printf ' "watches": [{\n' printf ' "type": "%s"\n' "$watch_type" -cd "$__object/parameter/" -for param in *; do +for param in $(ls "$__object/parameter/"); do case "$param" in state) continue ;; *) diff --git a/cdist/conf/type/__cron/explorer/entry b/cdist/conf/type/__cron/explorer/entry index 801861a3..2167e045 100644 --- a/cdist/conf/type/__cron/explorer/entry +++ b/cdist/conf/type/__cron/explorer/entry @@ -24,7 +24,7 @@ user="$(cat "$__object/parameter/user")" if [ -f "$__object/parameter/raw_command" ]; then command="$(cat "$__object/parameter/command")" - crontab -u "$user" -l 2>/dev/null | grep "^$command\$" || true + crontab -u $user -l 2>/dev/null | grep "^$command\$" || true else - crontab -u "$user" -l 2>/dev/null | grep "# $name\$" || true + crontab -u $user -l 2>/dev/null | grep "# $name\$" || true fi diff --git a/cdist/conf/type/__cron/gencode-remote b/cdist/conf/type/__cron/gencode-remote index 59398058..f58896af 100755 --- a/cdist/conf/type/__cron/gencode-remote +++ b/cdist/conf/type/__cron/gencode-remote @@ -58,7 +58,7 @@ state_should="$(cat "$__object/parameter/state" 2>/dev/null || echo "present")" # These are the old markers prefix="#cdist:__cron/$__object_id" suffix="#/cdist:__cron/$__object_id" -filter='^# DO NOT EDIT THIS FILE|^# \(.* installed on |^# \(Cron version V|^# \(Cronie version .\..\)$' +filter="^# DO NOT EDIT THIS FILE|^# \(.* installed on |^# \(Cron version V|^# \(Cronie version .\..\)$" cat << DONE crontab -u $user -l 2>/dev/null | grep -v -E "$filter" | awk -v prefix="$prefix" -v suffix="$suffix" ' { diff --git a/cdist/conf/type/__daemontools/files/init.d-svscan b/cdist/conf/type/__daemontools/files/init.d-svscan index 996eb4e8..127dfdb3 100644 --- a/cdist/conf/type/__daemontools/files/init.d-svscan +++ b/cdist/conf/type/__daemontools/files/init.d-svscan @@ -23,9 +23,9 @@ fi case "$1" in start) - printf "Starting daemontools: " - if ! pidof svscan > /dev/null 2>&1; then - printf "svscan " + echo -n "Starting daemontools: " + if [ ! `pidof svscan` ]; then + echo -n "svscan " env - PATH="$PATH" svscan /service 2>&1 | setuidgid daemon multilog t /var/log/svscan & echo "." else @@ -33,28 +33,23 @@ case "$1" in fi ;; stop) - printf "Stopping daemontools: " - pids="$(pidof svscan)" - if [ -n "${pids}" ] - then - printf "svscan" - while [ -n "${pids}" ] - do - # shellcheck disable=SC2086 - kill ${pids} - printf "." - pids="$(pidof svscan)" + echo -n "Stopping daemontools: " + if [ `pidof svscan` ]; then + echo -n "svscan" + while [ `pidof svscan` ]; do + kill `pidof svscan` + echo -n "." done fi - printf " services" - for i in /service/*; do - svc -dx "$i" - printf "." + echo -n " services" + for i in `ls -d /service/*`; do + svc -dx $i + echo -n "." done - printf " logging " - for i in /service/*/log; do - svc -dx "$i" - printf "." + echo -n " logging " + for i in `ls -d /service/*/log`; do + svc -dx $i + echo -n "." done echo "" ;; diff --git a/cdist/conf/type/__daemontools/manifest b/cdist/conf/type/__daemontools/manifest index b04c7e07..45ce3df6 100755 --- a/cdist/conf/type/__daemontools/manifest +++ b/cdist/conf/type/__daemontools/manifest @@ -3,13 +3,12 @@ pkg=$(cat "$__object/parameter/from-package") servicedir=$(cat "$__object/parameter/servicedir") -__package "$pkg" -__directory "$servicedir" --mode 700 +__package $pkg +__directory $servicedir --mode 700 os=$(cat "$__global/explorer/os") init=$(cat "$__global/explorer/init") -require="" case $os in freebsd) # TODO change to __start_on_boot once it supports freebsd diff --git a/cdist/conf/type/__daemontools_service/explorer/svc b/cdist/conf/type/__daemontools_service/explorer/svc old mode 100755 new mode 100644 index 9ba462f2..d33fcea4 --- a/cdist/conf/type/__daemontools_service/explorer/svc +++ b/cdist/conf/type/__daemontools_service/explorer/svc @@ -1,2 +1 @@ -#!/bin/sh command -v svc || true diff --git a/cdist/conf/type/__daemontools_service/manifest b/cdist/conf/type/__daemontools_service/manifest index 78bae285..9e8e0bee 100755 --- a/cdist/conf/type/__daemontools_service/manifest +++ b/cdist/conf/type/__daemontools_service/manifest @@ -25,14 +25,14 @@ badusage() { [ -z "$run$runfile" ] && badusage [ -n "$run" ] && [ -n "$runfile" ] && badusage -__directory "$servicedir/$name/log/main" --parents +__directory $servicedir/$name/log/main --parents echo "$RUN_PREFIX$run" | require="__directory/$servicedir/$name/log/main" __config_file "$servicedir/$name/run" \ --onchange "svc -t '$servicedir/$name' 2>/dev/null" \ --mode 755 \ --source "${runfile:--}" -echo "$RUN_PREFIX$logrun" | require="__directory/$servicedir/$name/log/main" __config_file "$servicedir/$name/log/run" \ +echo "$RUN_PREFIX$logrun" | require="__directory/$servicedir/$name/log/main" __config_file $servicedir/$name/log/run \ --onchange "svc -t '$servicedir/$name/log' 2>/dev/null" \ --mode 755 \ --source "-" diff --git a/cdist/conf/type/__directory/explorer/stat b/cdist/conf/type/__directory/explorer/stat index 03d466ba..41bc8b04 100755 --- a/cdist/conf/type/__directory/explorer/stat +++ b/cdist/conf/type/__directory/explorer/stat @@ -25,51 +25,23 @@ destination="/$__object_id" os=$("$__explorer/os") case "$os" in - "freebsd"|"netbsd"|"openbsd"|"macosx") - stat -f "type: %HT + "freebsd"|"netbsd"|"openbsd") + # FIXME: should be something like this based on man page, but can not test + stat -f "type: %ST owner: %Du %Su group: %Dg %Sg -mode: %Lp %Sp -" "$destination" | awk '/^type/ { print tolower($0); next; } { print; }' - ;; - alpine) - stat -c "type: %F -owner: %u %U -group: %g %G -mode: %a %A +mode: %Op %Sp " "$destination" - ;; - solaris) - ls1="$( ls -ld "$destination" )" - ls2="$( ls -ldn "$destination" )" - - if [ -f "$__object/parameter/mode" ] - then mode_should="$( cat "$__object/parameter/mode" )" - fi - - # yes, it is ugly hack, but if you know better way... - if [ -z "$( find "$destination" -perm "$mode_should" )" ] - then octets=888 - else octets="$( echo "$mode_should" | sed 's/^0//' )" - fi - - case "$( echo "$ls1" | cut -c1-1 )" in - -) echo 'type: regular file' ;; - d) echo 'type: directory' ;; - esac - - echo "owner: $( echo "$ls2" \ - | awk '{print $3}' ) $( echo "$ls1" \ - | awk '{print $3}' )" - - echo "group: $( echo "$ls2" \ - | awk '{print $4}' ) $( echo "$ls1" \ - | awk '{print $4}' )" - - echo "mode: $octets $( echo "$ls1" | awk '{print $1}' )" + ;; + "macosx") + stat -f "type: %HT + owner: %Du %Su + group: %Dg %Sg + mode: %Lp %Sp + " "$destination" ;; *) - stat --printf="type: %F + stat --printf="type: %F owner: %u %U group: %g %G mode: %a %A diff --git a/cdist/conf/type/__directory/gencode-remote b/cdist/conf/type/__directory/gencode-remote index 374db47a..cced4624 100755 --- a/cdist/conf/type/__directory/gencode-remote +++ b/cdist/conf/type/__directory/gencode-remote @@ -57,18 +57,18 @@ get_current_value() { } set_group() { - echo "chgrp $recursive '$1' '$destination'" - echo "chgrp $recursive '$1'" >> "$__messages_out" + echo chgrp $recursive \"$1\" \"$destination\" + echo chgrp $recursive $1 >> "$__messages_out" } set_owner() { - echo "chown $recursive '$1' '$destination'" - echo "chown $recursive '$1'" >> "$__messages_out" + echo chown $recursive \"$1\" \"$destination\" + echo chown $recursive $1 >> "$__messages_out" } set_mode() { - echo "chmod $recursive '$1' '$destination'" - echo "chmod $recursive '$1'" >> "$__messages_out" + echo chmod $recursive \"$1\" \"$destination\" + echo chmod $recursive $1 >> "$__messages_out" } case "$state_should" in @@ -78,10 +78,10 @@ case "$state_should" in if [ "$type" != "none" ]; then # our destination is not a directory, remove whatever is there # and then create our directory and set all attributes - echo "rm -f '$destination'" + echo rm -f "\"$destination\"" echo "remove non directory" >> "$__messages_out" fi - echo "mkdir $mkdiropt '$destination'" + echo "mkdir $mkdiropt \"$destination\"" echo "create" >> "$__messages_out" fi @@ -94,7 +94,7 @@ case "$state_should" in # change 0xxx format to xxx format => same as stat returns if [ "$attribute" = mode ]; then - value_should="$(echo "$value_should" | sed 's/^0\(...\)/\1/')" + value_should="$(echo $value_should | sed 's/^0\(...\)/\1/')" fi if [ "$set_attributes" = 1 ] || [ "$value_should" != "$value_is" ]; then @@ -105,7 +105,7 @@ case "$state_should" in ;; absent) if [ "$type" = "directory" ]; then - echo "rm -rf '$destination'" + echo rm -rf \"$destination\" echo remove >> "$__messages_out" fi ;; diff --git a/cdist/conf/type/__docker/man.rst b/cdist/conf/type/__docker/man.rst index 718543a8..70b92cc7 100644 --- a/cdist/conf/type/__docker/man.rst +++ b/cdist/conf/type/__docker/man.rst @@ -3,12 +3,12 @@ cdist-type__docker(7) NAME ---- -cdist-type__docker - install Docker CE +cdist-type__docker - install docker-engine DESCRIPTION ----------- -Installs latest Docker Community Edition package. +Installs latest docker-engine package from dockerproject.org. REQUIRED PARAMETERS @@ -18,16 +18,16 @@ None. OPTIONAL PARAMETERS ------------------- -state - 'present' or 'absent', defaults to 'present' -version - The specific version to install. Defaults to the special value 'latest', - meaning the version the package manager will install by default. +None. BOOLEAN PARAMETERS ------------------ -None. +experimental + Install the experimental docker-engine package instead of the latest stable release. + +state + 'present' or 'absent', defaults to 'present' EXAMPLES @@ -38,11 +38,12 @@ EXAMPLES # Install docker __docker + # Install experimental + __docker --experimental + # Remove docker __docker --state absent - # Install specific version - __docker --state present --version 18.03.0.ce AUTHORS ------- diff --git a/cdist/conf/type/__docker/manifest b/cdist/conf/type/__docker/manifest index 6a57d85a..1b1b1fb7 100755 --- a/cdist/conf/type/__docker/manifest +++ b/cdist/conf/type/__docker/manifest @@ -21,84 +21,58 @@ os=$(cat "$__global/explorer/os") state=$(cat "$__object/parameter/state") -version=$(cat "$__object/parameter/version") case "$os" in centos) - # shellcheck source=/dev/null - if (. "$__global/explorer/os_release" && [ "${VERSION_ID}" = "7" ]); then - __yum_repo docker-ce-stable \ - --name 'Docker CE Stable' \ - --baseurl "https://download.docker.com/linux/centos/7/\$basearch/stable" \ - --enabled \ - --gpgcheck 1 \ - --gpgkey 'https://download.docker.com/linux/centos/gpg' \ - --state "${state}" - if [ "$version" != "latest" ]; then - require="__yum_repo/docker-ce-stable" __package docker-ce --version "${version}" --state "${state}" - else - require="__yum_repo/docker-ce-stable" __package docker-ce --state "${state}" - fi - else - echo "CentOS version 7 is required!" >&2 - exit 1 + component="main" + if [ -f "$__object/parameter/experimental" ]; then + component="experimental" fi + __yum_repo docker \ + --name 'Docker Repository' \ + --baseurl "https://yum.dockerproject.org/repo/$component/centos/\$releasever/" \ + --enabled \ + --gpgcheck 1 \ + --gpgkey 'https://yum.dockerproject.org/gpg' \ + --state ${state} + require="__yum_repo/docker" __package docker-engine --state ${state} ;; - ubuntu|debian) - if [ "${state}" = "present" ]; then - __package apt-transport-https - __package ca-certificates - __package gnupg2 - fi - __apt_key_uri docker --name "Docker Release (CE deb) " \ - --uri "https://download.docker.com/linux/${os}/gpg" --state "${state}" - - require="__apt_key_uri/docker" __apt_source docker \ - --uri "https://download.docker.com/linux/${os}" \ - --distribution "$(cat "$__global/explorer/lsb_codename")" \ - --state "${state}" \ - --component "stable" - if [ "$version" != "latest" ]; then - require="__apt_source/docker" __package docker-ce --version "${version}" --state "${state}" - else - require="__apt_source/docker" __package docker-ce --state "${state}" + ubuntu) + component="main" + if [ -f "$__object/parameter/experimental" ]; then + component="experimental" fi + __package apparmor --state ${state} + __package ca-certificates --state ${state} + __package apt-transport-https --state ${state} + __apt_key docker --keyid 58118E89F3A912897C070ADBF76221572C52609D --state ${state} + export CDIST_ORDER_DEPENDENCY=on + __apt_source docker \ + --uri https://apt.dockerproject.org/repo \ + --distribution "ubuntu-$(cat "$__global/explorer/lsb_codename")" \ + --state ${state} \ + --component "$component" + __package docker-engine --state ${state} + unset CDIST_ORDER_DEPENDENCY ;; - devuan) - os_version="$(cat "$__global/explorer/os_version")" - - case "$os_version" in - ascii) - distribution="stretch" - ;; - jessie) - distribution="jessie" - ;; - *) - echo "Your devuan release ($os_version) is currently not supported by this type (${__type##*/}).">&2 - echo "Please contribute an implementation for it if you can." >&2 - exit 1 - ;; - esac - - if [ "${state}" = "present" ]; then - __package apt-transport-https - __package ca-certificates - __package gnupg2 + debian) + component="main" + if [ -f "$__object/parameter/experimental" ]; then + component="experimental" fi - __apt_key_uri docker --name "Docker Release (CE deb) " \ - --uri "https://download.docker.com/linux/${os}/gpg" --state "${state}" - require="__apt_key_uri/docker" __apt_source docker \ - --uri "https://download.docker.com/linux/${os}" \ - --distribution "${distribution}" \ - --state "${state}" \ - --component "stable" - if [ "$version" != "latest" ]; then - require="__apt_source/docker" __package docker-ce --version "${version}" --state "${state}" - else - require="__apt_source/docker" __package docker-ce --state "${state}" - fi + __package apt-transport-https --state ${state} + __package ca-certificates --state ${state} + __package gnupg2 --state ${state} + __apt_key docker --keyid 58118E89F3A912897C070ADBF76221572C52609D --state ${state} + export CDIST_ORDER_DEPENDENCY=on + __apt_source docker \ + --uri https://apt.dockerproject.org/repo \ + --distribution "debian-$(cat "$__global/explorer/lsb_codename")" \ + --state ${state} \ + --component "$component" + __package docker-engine --state ${state} + unset CDIST_ORDER_DEPENDENCY ;; *) diff --git a/cdist/conf/type/__docker/parameter/boolean b/cdist/conf/type/__docker/parameter/boolean new file mode 100644 index 00000000..9839eb20 --- /dev/null +++ b/cdist/conf/type/__docker/parameter/boolean @@ -0,0 +1 @@ +experimental diff --git a/cdist/conf/type/__docker/parameter/default/version b/cdist/conf/type/__docker/parameter/default/version deleted file mode 100644 index a0f9a4b4..00000000 --- a/cdist/conf/type/__docker/parameter/default/version +++ /dev/null @@ -1 +0,0 @@ -latest diff --git a/cdist/conf/type/__docker/parameter/optional b/cdist/conf/type/__docker/parameter/optional index 4d595ed7..ff72b5c7 100644 --- a/cdist/conf/type/__docker/parameter/optional +++ b/cdist/conf/type/__docker/parameter/optional @@ -1,2 +1 @@ state -version diff --git a/cdist/conf/type/__docker_compose/gencode-remote b/cdist/conf/type/__docker_compose/gencode-remote index 77fc2fdf..2b8267a9 100755 --- a/cdist/conf/type/__docker_compose/gencode-remote +++ b/cdist/conf/type/__docker_compose/gencode-remote @@ -22,11 +22,10 @@ version="$(cat "$__object/parameter/version")" state="$(cat "$__object/parameter/state")" -if [ "${state}" = "present" ]; then +if [ ${state} = "present" ]; then # Download docker-compose file - #shellcheck disable=SC2016 - echo 'curl -L "https://github.com/docker/compose/releases/download/'"${version}"'/docker-compose-$(uname -s)-$(uname -m)" -o /tmp/docker-compose' - echo 'mv /tmp/docker-compose /usr/local/bin/docker-compose' + echo 'curl -L "https://github.com/docker/compose/releases/download/'${version}'/docker-compose-$(uname -s)-$(uname -m)" -o /tmp/docker-compose' + echo 'mv /tmp/docker-compose /usr/local/bin/docker-compose' # Change permissions echo 'chmod +x /usr/local/bin/docker-compose' fi diff --git a/cdist/conf/type/__docker_compose/manifest b/cdist/conf/type/__docker_compose/manifest index f7de3a76..c17f0f33 100755 --- a/cdist/conf/type/__docker_compose/manifest +++ b/cdist/conf/type/__docker_compose/manifest @@ -22,10 +22,10 @@ state="$(cat "$__object/parameter/state")" # Needed packages -if [ "${state}" = "present" ]; then +if [ ${state} = "present" ]; then __docker __package curl -elif [ "${state}" = "absent" ]; then +elif [ ${state} = "absent" ]; then __file /usr/local/bin/docker-compose --state absent else echo "Unknown state: ${state}" >&2 diff --git a/cdist/conf/type/__docker_config/explorer/config-data b/cdist/conf/type/__docker_config/explorer/config-data deleted file mode 100755 index b4bb0e11..00000000 --- a/cdist/conf/type/__docker_config/explorer/config-data +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -e -# -# 2018 Ľubomír Kučera -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -docker config inspect "${__object_id:?}" --format '{{json .Spec.Data}}' \ - 2>/dev/null | tr -d '"' | base64 -d diff --git a/cdist/conf/type/__docker_config/gencode-remote b/cdist/conf/type/__docker_config/gencode-remote deleted file mode 100755 index 65497b7e..00000000 --- a/cdist/conf/type/__docker_config/gencode-remote +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/sh -e -# -# 2018 Ľubomír Kučera -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -config="${__object_id:?}" -config_exists=$(cat "${__object:?}/explorer/config-exists") -state=$(cat "${__object:?}/parameter/state") - -case "${state}" in - absent) - if [ "${config_exists}" != "yes" ]; then - exit 0 - fi - - echo "docker config rm \"${config}\"" - ;; - present) - source=$(cat "${__object}/parameter/source") - - if [ -z "${source}" ]; then - exit 0 - fi - - if [ "${source}" = "-" ]; then - source="${__object}/stdin" - fi - - if [ "${config_exists}" = "yes" ]; then - if cmp -s "${source}" "${__object}/explorer/config-data"; then - exit 0 - else - echo "docker config rm \"${config}\"" - fi - fi - - cat <<-EOF - source_file="\$(mktemp cdist.XXXXXXXXXX)" - - base64 -d > "\${source_file}" << eof - $(base64 "${source}") - eof - - docker config create "${config}" "\${source_file}" - - rm "\${source_file}" - EOF - ;; - *) - echo "Unsupported state: ${state}" >&2 - - exit 1 - ;; -esac diff --git a/cdist/conf/type/__docker_config/man.rst b/cdist/conf/type/__docker_config/man.rst deleted file mode 100644 index 7c74c8af..00000000 --- a/cdist/conf/type/__docker_config/man.rst +++ /dev/null @@ -1,55 +0,0 @@ -cdist-type__docker_config(7) -============================ - -NAME ----- - -cdist-type__docker_config - Manage Docker configs - -DESCRIPTION ------------ - -This type manages Docker configs. - -OPTIONAL PARAMETERS -------------------- - -source - Path to the source file. If it is '-' (dash), read standard input. - -state - 'present' or 'absent', defaults to 'present' where: - - present - if the config does not exist, it is created - absent - the config is removed - -CAVEATS -------- - -Since Docker configs cannot be updated once created, this type tries removing -and recreating the config if it changes. If the config is used by a service at -the time of removing, then this type will fail. - -EXAMPLES --------- - -.. code-block:: sh - - # Creates "foo" config from "bar" source file - __docker_config foo --source bar - - -AUTHORS -------- - -Ľubomír Kučera - -COPYING -------- - -Copyright \(C) 2018 Ľubomír Kučera. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__docker_config/parameter/default/source b/cdist/conf/type/__docker_config/parameter/default/source deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__docker_config/parameter/default/state b/cdist/conf/type/__docker_config/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__docker_config/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__docker_config/parameter/optional b/cdist/conf/type/__docker_config/parameter/optional deleted file mode 100644 index d77f3048..00000000 --- a/cdist/conf/type/__docker_config/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -source -state diff --git a/cdist/conf/type/__docker_secret/gencode-remote b/cdist/conf/type/__docker_secret/gencode-remote deleted file mode 100755 index c75e91d9..00000000 --- a/cdist/conf/type/__docker_secret/gencode-remote +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh -e -# -# 2018 Ľubomír Kučera -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -secret="${__object_id:?}" -secret_exists=$(cat "${__object:?}/explorer/secret-exists") -state=$(cat "${__object:?}/parameter/state") - -case "${state}" in - absent) - if [ "${secret_exists}" != "yes" ]; then - exit 0 - fi - - echo "docker secret rm ${secret}" - ;; - present) - if [ "${secret_exists}" = "yes" ]; then - exit 0 - fi - - source=$(cat "${__object}/parameter/source") - - if [ -z "${source}" ]; then - exit 0 - fi - - if [ "${source}" = "-" ]; then - source="${__object}/stdin" - fi - - cat <<-EOF - source_file="\$(mktemp cdist.XXXXXXXXXX)" - - base64 -d > "\${source_file}" << eof - $(base64 "${source}") - eof - - docker secret create "${secret}" "\${source_file}" - - rm "\${source_file}" - EOF - ;; - *) - echo "Unsupported state: ${state}" >&2 - - exit 1 - ;; -esac diff --git a/cdist/conf/type/__docker_secret/man.rst b/cdist/conf/type/__docker_secret/man.rst deleted file mode 100644 index 7fe69623..00000000 --- a/cdist/conf/type/__docker_secret/man.rst +++ /dev/null @@ -1,54 +0,0 @@ -cdist-type__docker_secret(7) -============================ - -NAME ----- - -cdist-type__docker_secret - Manage Docker secrets - -DESCRIPTION ------------ - -This type manages Docker secrets. - -OPTIONAL PARAMETERS -------------------- - -source - Path to the source file. If it is '-' (dash), read standard input. - -state - 'present' or 'absent', defaults to 'present' where: - - present - if the secret does not exist, it is created - absent - the secret is removed - -CAVEATS -------- - -Since Docker secrets cannot be updated once created, this type takes no action -if the specified secret already exists. - -EXAMPLES --------- - -.. code-block:: sh - - # Creates "foo" secret from "bar" source file - __docker_secret foo --source bar - - -AUTHORS -------- - -Ľubomír Kučera - -COPYING -------- - -Copyright \(C) 2018 Ľubomír Kučera. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__docker_secret/parameter/default/source b/cdist/conf/type/__docker_secret/parameter/default/source deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__docker_secret/parameter/default/state b/cdist/conf/type/__docker_secret/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__docker_secret/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__docker_secret/parameter/optional b/cdist/conf/type/__docker_secret/parameter/optional deleted file mode 100644 index d77f3048..00000000 --- a/cdist/conf/type/__docker_secret/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -source -state diff --git a/cdist/conf/type/__docker_stack/gencode-remote b/cdist/conf/type/__docker_stack/gencode-remote index 586271d0..0d47dc52 100755 --- a/cdist/conf/type/__docker_stack/gencode-remote +++ b/cdist/conf/type/__docker_stack/gencode-remote @@ -50,7 +50,7 @@ case "${state}" in eof docker stack deploy --compose-file "\${compose_file}" \ - --prune --with-registry-auth ${stack} + --prune ${stack} rm "\${compose_file}" EOF diff --git a/cdist/conf/type/__docker_swarm/explorer/swarm-state b/cdist/conf/type/__docker_swarm/explorer/swarm-state index 2c9fd598..9c1bc32d 100755 --- a/cdist/conf/type/__docker_swarm/explorer/swarm-state +++ b/cdist/conf/type/__docker_swarm/explorer/swarm-state @@ -18,4 +18,4 @@ # along with cdist. If not, see . # -docker info 2>/dev/null | grep '^ *Swarm: ' | awk '{print $2}' +docker info 2>/dev/null | grep "^Swarm: " | cut -d " " -f 2- diff --git a/cdist/conf/type/__dot_file/explorer/home b/cdist/conf/type/__dot_file/explorer/home index 08d941bf..132cfc71 100755 --- a/cdist/conf/type/__dot_file/explorer/home +++ b/cdist/conf/type/__dot_file/explorer/home @@ -19,7 +19,7 @@ set -eu user="$(cat "${__object}/parameter/user")" -if command -v getent >/dev/null 2>&1; then +if which getent >/dev/null 2>&1; then line=$(getent passwd "${user}") else line=$(grep "^${user}:" /etc/passwd) diff --git a/cdist/conf/type/__file/explorer/stat b/cdist/conf/type/__file/explorer/stat index 13c1c208..8a917556 100755 --- a/cdist/conf/type/__file/explorer/stat +++ b/cdist/conf/type/__file/explorer/stat @@ -1,7 +1,6 @@ #!/bin/sh # # 2013 Steven Armstrong (steven-cdist armstrong.cc) -# 2019 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -26,56 +25,25 @@ destination="/$__object_id" os=$("$__explorer/os") case "$os" in - "freebsd"|"netbsd"|"openbsd"|"macosx") - stat -f "type: %HT + "freebsd"|"netbsd"|"openbsd") + # FIXME: should be something like this based on man page, but can not test + stat -f "type: %ST +owner: %Du %Su +group: %Dg %Sg +mode: %Op %Sp +size: %Dz +links: %Dl +" "$destination" + ;; + "macosx") + stat -f "type: %HT owner: %Du %Su group: %Dg %Sg mode: %Lp %Sp size: %Dz links: %Dl -" "$destination" | awk '/^type/ { print tolower($0); next; } { print; }' - ;; - alpine) - # busybox stat - stat -c "type: %F -owner: %u %U -group: %g %G -mode: %a %A -size: %s -links: %h " "$destination" - ;; - solaris) - ls1="$( ls -ld "$destination" )" - ls2="$( ls -ldn "$destination" )" - - if [ -f "$__object/parameter/mode" ] - then mode_should="$( cat "$__object/parameter/mode" )" - fi - - # yes, it is ugly hack, but if you know better way... - if [ -z "$( find "$destination" -perm "$mode_should" )" ] - then octets=888 - else octets="$( echo "$mode_should" | sed 's/^0//' )" - fi - - case "$( echo "$ls1" | cut -c1-1 )" in - -) echo 'type: regular file' ;; - d) echo 'type: directory' ;; - esac - - echo "owner: $( echo "$ls2" \ - | awk '{print $3}' ) $( echo "$ls1" \ - | awk '{print $3}' )" - - echo "group: $( echo "$ls2" \ - | awk '{print $4}' ) $( echo "$ls1" \ - | awk '{print $4}' )" - - echo "mode: $octets $( echo "$ls1" | awk '{print $1}' )" - echo "size: $( echo "$ls1" | awk '{print $5}' )" - echo "links: $( echo "$ls1" | awk '{print $2}' )" - ;; + ;; *) stat --printf="type: %F owner: %u %U @@ -84,5 +52,5 @@ mode: %a %A size: %s links: %h " "$destination" - ;; + ;; esac diff --git a/cdist/conf/type/__file/gencode-local b/cdist/conf/type/__file/gencode-local index fb9f9a92..15a9ee0e 100755 --- a/cdist/conf/type/__file/gencode-local +++ b/cdist/conf/type/__file/gencode-local @@ -23,7 +23,7 @@ destination="/$__object_id" state_should="$(cat "$__object/parameter/state")" type="$(cat "$__object/explorer/type")" -[ "$state_should" = "exists" ] && [ "$type" = "file" ] && exit 0 # nothing to do +[ "$state_should" = "exists" -a "$type" = "file" ] && exit 0 # nothing to do if [ "$state_should" = "pre-exists" ]; then if [ -f "$__object/parameter/source" ]; then @@ -41,7 +41,7 @@ fi upload_file= create_file= -if [ "$state_should" = "present" ] || [ "$state_should" = "exists" ]; then +if [ "$state_should" = "present" -o "$state_should" = "exists" ]; then if [ ! -f "$__object/parameter/source" ]; then remote_stat="$(cat "$__object/explorer/stat")" if [ -z "$remote_stat" ]; then @@ -70,7 +70,7 @@ if [ "$state_should" = "present" ] || [ "$state_should" = "exists" ]; then fi fi fi - if [ "$create_file" ] || [ "$upload_file" ]; then + if [ "$create_file" -o "$upload_file" ]; then # tell gencode-remote that we created or uploaded a file and that it must # set all attributes no matter what the explorer retreived mkdir "$__object/files" @@ -84,7 +84,7 @@ DONE if [ "$upload_file" ]; then echo upload >> "$__messages_out" # IPv6 fix - if echo "${__target_host}" | grep -q -E '^[0-9a-fA-F:]+$' + if $(echo "${__target_host}" | grep -q -E '^[0-9a-fA-F:]+$') then my_target_host="[${__target_host}]" else diff --git a/cdist/conf/type/__file/gencode-remote b/cdist/conf/type/__file/gencode-remote index b04c471e..c90be0be 100755 --- a/cdist/conf/type/__file/gencode-remote +++ b/cdist/conf/type/__file/gencode-remote @@ -23,7 +23,7 @@ destination="/$__object_id" state_should="$(cat "$__object/parameter/state")" type="$(cat "$__object/explorer/type")" stat_file="$__object/explorer/stat" -fire_onchange='' + get_current_value() { if [ -s "$stat_file" ]; then @@ -43,23 +43,21 @@ get_current_value() { } set_group() { - echo "chgrp '$1' '$destination'" - echo "chgrp '$1'" >> "$__messages_out" - fire_onchange=1 + echo chgrp \"$1\" \"$destination\" + echo chgrp $1 >> "$__messages_out" } set_owner() { - echo "chown '$1' '$destination'" - echo "chown '$1'" >> "$__messages_out" - fire_onchange=1 + echo chown \"$1\" \"$destination\" + echo chown $1 >> "$__messages_out" } set_mode() { - echo "chmod '$1' '$destination'" - echo "chmod '$1'" >> "$__messages_out" - fire_onchange=1 + echo chmod \"$1\" \"$destination\" + echo chmod $1 >> "$__messages_out" } +set_attributes= case "$state_should" in present|exists|pre-exists) # Note: Mode - needs to happen last as a chown/chgrp can alter mode by @@ -70,27 +68,22 @@ case "$state_should" in # change 0xxx format to xxx format => same as stat returns if [ "$attribute" = mode ]; then - value_should="$(echo "$value_should" | sed 's/^0\(...\)/\1/')" + value_should="$(echo $value_should | sed 's/^0\(...\)/\1/')" fi value_is="$(get_current_value "$attribute" "$value_should")" - if [ -f "$__object/files/set-attributes" ] || [ "$value_should" != "$value_is" ]; then + if [ -f "$__object/files/set-attributes" -o "$value_should" != "$value_is" ]; then "set_$attribute" "$value_should" fi fi done - if [ -f "$__object/files/set-attributes" ]; then - # set-attributes is created if file is created or uploaded in gencode-local - fire_onchange=1 - fi ;; absent) if [ "$type" = "file" ]; then - echo "rm -f '$destination'" + echo rm -f \"$destination\" echo remove >> "$__messages_out" - fire_onchange=1 fi ;; @@ -99,9 +92,3 @@ case "$state_should" in exit 1 ;; esac - -if [ -f "$__object/parameter/onchange" ]; then - if [ -n "$fire_onchange" ]; then - cat "$__object/parameter/onchange" - fi -fi diff --git a/cdist/conf/type/__file/man.rst b/cdist/conf/type/__file/man.rst index 7a0603bb..a141d70b 100644 --- a/cdist/conf/type/__file/man.rst +++ b/cdist/conf/type/__file/man.rst @@ -63,9 +63,6 @@ source If not supplied, an empty file or directory will be created. If source is '-' (dash), take what was written to stdin as the file content. -onchange - The code to run if file is modified. - MESSAGES -------- chgrp diff --git a/cdist/conf/type/__file/parameter/optional b/cdist/conf/type/__file/parameter/optional index 9b98352c..c696d592 100644 --- a/cdist/conf/type/__file/parameter/optional +++ b/cdist/conf/type/__file/parameter/optional @@ -3,4 +3,3 @@ group mode owner source -onchange diff --git a/cdist/conf/type/__firewalld_rule/explorer/rule b/cdist/conf/type/__firewalld_rule/explorer/rule index 0234e5b6..5a0e0265 100644 --- a/cdist/conf/type/__firewalld_rule/explorer/rule +++ b/cdist/conf/type/__firewalld_rule/explorer/rule @@ -25,7 +25,7 @@ chain="$(cat "$__object/parameter/chain")" priority="$(cat "$__object/parameter/priority")" rule="$(cat "$__object/parameter/rule")" -if firewall-cmd --permanent --direct --query-rule "$protocol" "$table" "$chain" "$priority" "$rule" >/dev/null; then +if firewall-cmd --permanent --direct --query-rule "$protocol" "$table" "$chain" "$priority" $rule >/dev/null; then echo present else echo absent diff --git a/cdist/conf/type/__firewalld_rule/gencode-remote b/cdist/conf/type/__firewalld_rule/gencode-remote index bd6d13e5..4c824d39 100755 --- a/cdist/conf/type/__firewalld_rule/gencode-remote +++ b/cdist/conf/type/__firewalld_rule/gencode-remote @@ -19,6 +19,7 @@ # # +name="$__object_id" state_should="$(cat "$__object/parameter/state")" state_is="$(cat "$__object/explorer/rule")" @@ -32,13 +33,13 @@ rule="$(cat "$__object/parameter/rule")" case "$state_should" in present) - echo "firewall-cmd --quiet --permanent --direct --add-rule '$protocol' '$table' '$chain' '$priority' $rule" - echo "firewall-cmd --quiet --direct --add-rule '$protocol' '$table' '$chain' '$priority' $rule" + echo firewall-cmd --quiet --permanent --direct --add-rule \"$protocol\" \"$table\" \"$chain\" \"$priority\" $rule + echo firewall-cmd --quiet --direct --add-rule \"$protocol\" \"$table\" \"$chain\" \"$priority\" $rule ;; absent) - echo "firewall-cmd --quiet --permanent --direct --remove-rule '$protocol' '$table' '$chain' '$priority' $rule" - echo "firewall-cmd --quiet --direct --remove-rule '$protocol' '$table' '$chain' '$priority' $rule" + echo firewall-cmd --quiet --permanent --direct --remove-rule \"$protocol\" \"$table\" \"$chain\" \"$priority\" $rule + echo firewall-cmd --quiet --direct --remove-rule \"$protocol\" \"$table\" \"$chain\" \"$priority\" $rule ;; *) echo "Unknown state $state_should" >&2 diff --git a/cdist/conf/type/__git/explorer/group b/cdist/conf/type/__git/explorer/group index 3ddf9656..1308c710 100644 --- a/cdist/conf/type/__git/explorer/group +++ b/cdist/conf/type/__git/explorer/group @@ -2,4 +2,4 @@ destination="/$__object_id/.git" -stat --print "%G" "${destination}" 2>/dev/null || exit 0 +stat --print "%G" ${destination} 2>/dev/null || exit 0 diff --git a/cdist/conf/type/__git/explorer/owner b/cdist/conf/type/__git/explorer/owner index 4c3cd431..8c36b035 100644 --- a/cdist/conf/type/__git/explorer/owner +++ b/cdist/conf/type/__git/explorer/owner @@ -2,4 +2,4 @@ destination="/$__object_id/.git" -stat --print "%U" "${destination}" 2>/dev/null || exit 0 +stat --print "%U" ${destination} 2>/dev/null || exit 0 diff --git a/cdist/conf/type/__git/gencode-remote b/cdist/conf/type/__git/gencode-remote index ab22655f..d0d0d4ed 100755 --- a/cdist/conf/type/__git/gencode-remote +++ b/cdist/conf/type/__git/gencode-remote @@ -19,46 +19,43 @@ # # -state_is=$(cat "$__object/explorer/state") -owner_is=$(cat "$__object/explorer/owner") -group_is=$(cat "$__object/explorer/group") +state_is="$(cat "$__object/explorer/state")" +owner_is="$(cat "$__object/explorer/owner")" +group_is="$(cat "$__object/explorer/group")" -state_should=$(cat "$__object/parameter/state") +state_should="$(cat "$__object/parameter/state")" -branch=$(cat "$__object/parameter/branch") +branch="$(cat "$__object/parameter/branch")" -source=$(cat "$__object/parameter/source") +source="$(cat "$__object/parameter/source")" destination="/$__object_id" -owner=$(cat "$__object/parameter/owner") -group=$(cat "$__object/parameter/group") -mode=$(cat "$__object/parameter/mode") +owner="$(cat "$__object/parameter/owner")" +group="$(cat "$__object/parameter/group")" +mode="$(cat "$__object/parameter/mode")" -[ -f "$__object/parameter/recursive" ] && recursive='--recurse-submodules' || recursive='' -[ -f "$__object/parameter/shallow" ] && shallow='--depth 1 --shallow-submodules' || shallow='' - -[ "$state_should" = "$state_is" ] \ - && [ "$owner" = "$owner_is" ] \ - && [ "$group" = "$group_is" ] \ - && [ -n "$mode" ] && exit 0 +[ "$state_should" = "$state_is" -a \ + "$owner" = "$owner_is" -a \ + "$group" = "$group_is" -a \ + -n "$mode" ] && exit 0 case $state_should in present) + if [ "$state_should" != "$state_is" ]; then - echo git clone --quiet "$recursive" "$shallow" --branch "$branch" "$source" "$destination" + echo git clone --quiet --branch "$branch" "$source" "$destination" fi - if { [ -n "$owner" ] && [ "$owner_is" != "$owner" ]; } || \ - { [ -n "$group" ] && [ "$group_is" != "$group" ]; }; then + if [ \( -n "$owner" -a "$owner_is" != "$owner" \) -o \ + \( -n "$group" -a "$group_is" != "$group" \) ]; then echo chown -R "${owner}:${group}" "$destination" fi if [ -n "$mode" ]; then echo chmod -R "$mode" "$destination" fi ;; - + # Handled in manifest absent) - # Handled in manifest ;; *) diff --git a/cdist/conf/type/__git/man.rst b/cdist/conf/type/__git/man.rst index d3e15f25..17e9c623 100644 --- a/cdist/conf/type/__git/man.rst +++ b/cdist/conf/type/__git/man.rst @@ -35,12 +35,6 @@ mode owner User to chown to. -recursive - Passes the --recurse-submodules flag to git when cloning the repository. - -shallow - Sets --depth=1 and --shallow-submodules for cloning repositories with big history. - EXAMPLES -------- @@ -50,7 +44,7 @@ EXAMPLES __git /home/services/dokuwiki --source git://github.com/splitbrain/dokuwiki.git # Checkout cdist, stay on branch 2.1 - __git /home/nico/cdist --source git@code.ungleich.ch:ungleich-public/cdist.git --branch 2.1 + __git /home/nico/cdist --source git://github.com/ungleich/cdist.git --branch 2.1 AUTHORS diff --git a/cdist/conf/type/__git/parameter/boolean b/cdist/conf/type/__git/parameter/boolean deleted file mode 100644 index d600d4ca..00000000 --- a/cdist/conf/type/__git/parameter/boolean +++ /dev/null @@ -1,2 +0,0 @@ -recursive -shallow diff --git a/cdist/conf/type/__go_get/explorer/go-executable b/cdist/conf/type/__go_get/explorer/go-executable old mode 100755 new mode 100644 index 87182282..4c84ce07 --- a/cdist/conf/type/__go_get/explorer/go-executable +++ b/cdist/conf/type/__go_get/explorer/go-executable @@ -1,6 +1,3 @@ -#!/bin/sh -# shellcheck disable=SC1091 [ -f /etc/environment ] && . /etc/environment -# shellcheck disable=SC1091 [ -f /etc/profile ] && . /etc/profile go version 2>/dev/null || true diff --git a/cdist/conf/type/__golang_from_vendor/gencode-remote b/cdist/conf/type/__golang_from_vendor/gencode-remote index 5200e9e3..1654978b 100755 --- a/cdist/conf/type/__golang_from_vendor/gencode-remote +++ b/cdist/conf/type/__golang_from_vendor/gencode-remote @@ -2,7 +2,7 @@ version=$(cat "$__object/parameter/version") -kernel_name=$(tr '[:upper:]' '[:lower:]' < "$__global/explorer/kernel_name") +kernel_name=$(cat "$__global/explorer/kernel_name" | tr '[:upper:]' '[:lower:]') machine=$(cat "$__global/explorer/machine") case $machine in x86_64|amd64) diff --git a/cdist/conf/type/__golang_from_vendor/manifest b/cdist/conf/type/__golang_from_vendor/manifest index ad39ddfb..cf164524 100755 --- a/cdist/conf/type/__golang_from_vendor/manifest +++ b/cdist/conf/type/__golang_from_vendor/manifest @@ -1,4 +1,3 @@ #!/bin/sh -e -# shellcheck disable=SC2016 __line go_in_path --line 'export PATH=/usr/local/go/bin:$PATH' --file /etc/profile diff --git a/cdist/conf/type/__grafana_dashboard/manifest b/cdist/conf/type/__grafana_dashboard/manifest index d145c4c3..e62bd15f 100755 --- a/cdist/conf/type/__grafana_dashboard/manifest +++ b/cdist/conf/type/__grafana_dashboard/manifest @@ -1,23 +1,16 @@ #!/bin/sh -e -os=$(cat "$__global/explorer/os") -os_version=$(cat "$__global/explorer/os_version") +os=$(cat $__global/explorer/os) +os_version=$(cat $__global/explorer/os_version) -require="" case $os in debian|devuan) case $os_version in 8*|jessie) - # Differntation not needed anymore - apt_source_distribution=stable + apt_source_distribution=jessie ;; - 9*|ascii/ceres|ascii) - # Differntation not needed anymore - apt_source_distribution=stable - ;; - 10*) - # Differntation not needed anymore - apt_source_distribution=stable + 9*|ascii/ceres) + apt_source_distribution=stretch ;; *) echo "Don't know how to install Grafana on $os $os_version. Send us a pull request!" >&2 @@ -27,15 +20,16 @@ case $os in __apt_key_uri grafana \ --name 'Grafana Release Signing Key' \ - --uri https://packages.grafana.com/gpg.key + --uri https://packagecloud.io/gpg.key require="$require __apt_key_uri/grafana" __apt_source grafana \ - --uri https://packages.grafana.com/oss/deb \ + --uri https://packagecloud.io/grafana/stable/debian/ \ --distribution $apt_source_distribution \ --component main + __package apt-transport-https - require="$require __apt_source/grafana" __apt_update_index - require="$require __package/apt-transport-https __apt_update_index" __package grafana + + require="$require __apt_source/grafana __package/apt-transport-https" __package grafana require="$require __package/grafana" __start_on_boot grafana-server require="$require __start_on_boot/grafana-server" __process grafana-server --start "service grafana-server start" ;; diff --git a/cdist/conf/type/__group/explorer/group b/cdist/conf/type/__group/explorer/group index dc673f61..07f73a91 100755 --- a/cdist/conf/type/__group/explorer/group +++ b/cdist/conf/type/__group/explorer/group @@ -1,7 +1,6 @@ #!/bin/sh # # 2011-2015 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # @@ -22,21 +21,7 @@ # Get an existing groups group entry. # -not_supported() { - echo "Your operating system ($("$__explorer/os")) is currently not supported." >&2 - echo "Cannot extract group information." >&2 - echo "Please contribute an implementation for it if you can." >&2 - exit 1 -} - name=$__object_id -if command -v getent >/dev/null -then - getent group "$name" || true -elif [ -f /etc/group ] -then - grep "^${name}:" /etc/group || true -else - not_supported -fi +getent group "$name" || true + diff --git a/cdist/conf/type/__group/explorer/gshadow b/cdist/conf/type/__group/explorer/gshadow index 05841d69..2e2ab29d 100755 --- a/cdist/conf/type/__group/explorer/gshadow +++ b/cdist/conf/type/__group/explorer/gshadow @@ -1,7 +1,6 @@ #!/bin/sh # # 2011-2015 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # @@ -23,28 +22,13 @@ # name=$__object_id -os=$("$__explorer/os") +os="$($__explorer/os)" -not_supported() { - echo "Your operating system ($os) is currently not supported." >&2 - echo "Cannot extract group information." >&2 - echo "Please contribute an implementation for it if you can." >&2 - exit 1 -} - -case $os in - "freebsd"|"netbsd") - echo "$os does not have getent gshadow" >&2 - exit 0 - ;; +case "$os" in + "freebsd"|"netbsd") + echo "$os does not have getent gshadow" + exit 0 + ;; esac -if command -v getent >/dev/null -then - getent gshadow "$name" || true -elif [ -f /etc/gshadow ] -then - grep "^${name}:" /etc/gshadow || true -else - not_supported -fi +getent gshadow "$name" || true diff --git a/cdist/conf/type/__group/gencode-remote b/cdist/conf/type/__group/gencode-remote index 6091c548..5847cb66 100755 --- a/cdist/conf/type/__group/gencode-remote +++ b/cdist/conf/type/__group/gencode-remote @@ -30,9 +30,9 @@ state="$(cat "$__object/parameter/state")" # Use short option names for portability shorten_property() { case "$1" in - gid) echo " -g";; - password) echo " -p";; - system) echo " -r";; + gid) echo "-g";; + password) echo "-p";; + system) echo "-r";; esac } @@ -40,9 +40,11 @@ shorten_property() { if [ "$state" = "present" ]; then case "$os" in freebsd) + supported_add_properties="gid" supported_change_properties="gid" ;; *) + supported_add_properties="gid password system" supported_change_properties="gid password" ;; esac @@ -61,8 +63,8 @@ if [ "$state" = "present" ]; then ;; esac if [ "$new_value" != "$current_value" ]; then - set -- "$@" "$(shorten_property "$property")" \'"$new_value"\' - echo "change $property $new_value $current_value" >> "$__messages_out" + set -- "$@" "$(shorten_property $property)" \'$new_value\' + echo change $property $new_value $current_value >> "$__messages_out" fi fi done @@ -81,9 +83,9 @@ if [ "$state" = "present" ]; then new_value="$(cat "$__object/parameter/$property")" if [ -z "$new_value" ]; then # Boolean parameters have no value - set -- "$@" "$(shorten_property "$property")" + set -- "$@" "$(shorten_property $property)" else - set -- "$@" "$(shorten_property "$property")" \'"$new_value"\' + set -- "$@" "$(shorten_property $property)" \'$new_value\' fi fi done diff --git a/cdist/conf/type/__hostname/explorer/has_hostnamectl b/cdist/conf/type/__hostname/explorer/has_hostnamectl index 2f531f30..9040023d 100755 --- a/cdist/conf/type/__hostname/explorer/has_hostnamectl +++ b/cdist/conf/type/__hostname/explorer/has_hostnamectl @@ -21,4 +21,4 @@ # Check whether system has hostnamectl # -command -v hostnamectl 2>/dev/null || true +command -v hostnamectl || true diff --git a/cdist/conf/explorer/os_release b/cdist/conf/type/__hostname/explorer/hostname_file old mode 100644 new mode 100755 similarity index 73% rename from cdist/conf/explorer/os_release rename to cdist/conf/type/__hostname/explorer/hostname_file index cfc01004..6a00aa9f --- a/cdist/conf/explorer/os_release +++ b/cdist/conf/type/__hostname/explorer/hostname_file @@ -1,6 +1,6 @@ #!/bin/sh # -# 2018 Adam Dej (dejko.a at gmail.com) +# 2014 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -18,9 +18,13 @@ # along with cdist. If not, see . # # +# Retrieve the contents of /etc/hostname +# -# See os-release(5) and http://0pointer.de/blog/projects/os-release - -set +e - -cat /etc/os-release || cat /usr/lib/os-release || true +# Almost any distribution +if [ -f /etc/hostname ]; then + cat /etc/hostname +# SuSE +elif [ -f /etc/HOSTNAME ]; then + cat /etc/HOSTNAME +fi diff --git a/cdist/conf/type/__sysctl/explorer/conf-path b/cdist/conf/type/__hostname/explorer/hostname_sysconfig similarity index 76% rename from cdist/conf/type/__sysctl/explorer/conf-path rename to cdist/conf/type/__hostname/explorer/hostname_sysconfig index ba35c4c6..d0d7b4e7 100755 --- a/cdist/conf/type/__sysctl/explorer/conf-path +++ b/cdist/conf/type/__hostname/explorer/hostname_sysconfig @@ -1,6 +1,6 @@ #!/bin/sh # -# 2018 Darko Poljak (darko.poljak at gmail.com) +# 2014 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -17,9 +17,10 @@ # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # +# +# Retrieve the contents of /etc/hostname +# -if [ -d "/etc/sysctl.d" ]; then - echo "/etc/sysctl.d/99-Z-sysctl-cdist.conf"; -else - echo "/etc/sysctl.conf"; +if [ -f /etc/sysconfig/network ]; then + awk -F= '/^HOSTNAME=/ { print $2 }' /etc/sysconfig/network fi diff --git a/cdist/conf/type/__hostname/explorer/max_len b/cdist/conf/type/__hostname/explorer/max_len deleted file mode 100644 index fb863949..00000000 --- a/cdist/conf/type/__hostname/explorer/max_len +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -e - -command -v getconf >/dev/null || exit 0 - -val=$(getconf HOST_NAME_MAX 2>/dev/null) || exit 0 - -if test -n "${val}" -a "${val}" != 'undefined' -then - echo "${val}" -fi diff --git a/cdist/conf/type/__hostname/gencode-remote b/cdist/conf/type/__hostname/gencode-remote index ae224611..89bf7b3f 100755 --- a/cdist/conf/type/__hostname/gencode-remote +++ b/cdist/conf/type/__hostname/gencode-remote @@ -2,7 +2,6 @@ # # 2014-2017 Steven Armstrong (steven-cdist at armstrong.cc) # 2014 Nico Schottelius (nico-cdist at schottelius.org) -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # @@ -20,81 +19,60 @@ # along with cdist. If not, see . # -os=$(cat "$__global/explorer/os") -name_running=$(cat "$__global/explorer/hostname") -has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl") - - -if test -s "$__object/parameter/name" -then - name_should=$(cat "$__object/parameter/name") +if [ -f "$__object/parameter/name" ]; then + name_should="$(cat "$__object/parameter/name")" else - case $os - in - # RedHat-derivatives and BSDs - centos|fedora|redhat|scientific|freebsd|macosx|netbsd|openbsd) - # Hostname is FQDN - name_should="${__target_host}" - ;; - *) - # Hostname is only first component of FQDN - name_should="${__target_host%%.*}" - ;; - esac + name_should="$(echo "${__target_host%%.*}")" fi +os=$(cat "$__global/explorer/os") +name_running=$(cat "$__global/explorer/hostname") +name_config=$(cat "$__object/explorer/hostname_file") +name_sysconfig=$(cat "$__object/explorer/hostname_sysconfig") +has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl") ################################################################################ -# Check if the (running) hostname is already correct +# If everything is ok -> exit # -test "$name_running" != "$name_should" || exit 0 - +case "$os" in + archlinux|debian|suse|ubuntu|devuan|coreos) + if [ "$name_config" = "$name_should" -a "$name_running" = "$name_should" ]; then + exit 0 + fi + ;; + scientific|centos|freebsd|openbsd) + if [ "$name_sysconfig" = "$name_should" -a "$name_running" = "$name_should" ]; then + exit 0 + fi + ;; + *) + echo "Unsupported os: $os" >&2 + exit 1 + ;; +esac ################################################################################ # Setup hostname # -echo 'changed' >>"$__messages_out" +echo changed >> "$__messages_out" -# Use the good old way to set the hostname. -case $os -in - alpine|debian|devuan|ubuntu) - echo 'hostname -F /etc/hostname' +# Use the good old way to set the hostname even on machines running systemd. +case "$os" in + archlinux|debian|ubuntu|devuan|centos|coreos) + echo "printf '%s\n' '$name_should' > /etc/hostname" + echo "hostname -F /etc/hostname" ;; - archlinux) - echo 'command -v hostnamectl >/dev/null 2>&1' \ - "&& hostnamectl set-hostname '$name_should'" \ - "|| hostname '$name_should'" - ;; - centos|fedora|redhat|scientific|freebsd|netbsd|openbsd|gentoo|void) + freebsd|openbsd) echo "hostname '$name_should'" ;; - macosx) - echo "scutil --set HostName '$name_should'" - ;; - solaris) - echo "uname -S '$name_should'" - ;; - slackware|suse|opensuse-leap) - # We do not read from /etc/HOSTNAME, because the running - # hostname is the first component only while the file contains - # the FQDN. + suse) echo "hostname '$name_should'" - ;; - *) - # Fall back to set the hostname using hostnamectl, if available. - if test -n "$has_hostnamectl" - then - # Don't use hostnamectl as the primary means to set the hostname for - # systemd systems, because it cannot be trusted to work reliably and - # exit with non-zero when it fails (e.g. hostname too long, - # D-Bus failure, etc.). - - echo "hostnamectl set-hostname \"\$(cat /etc/hostname)\"" - echo "test \"\$(hostname)\" = \"\$(cat /etc/hostname)\"" \ - " || hostname -F /etc/hostname" - else - printf "echo 'Unsupported OS: %s' >&2\nexit 1\n" "$os" - fi + echo "printf '%s\n' '$name_should' > /etc/HOSTNAME" ;; esac + +if [ "$has_hostnamectl" ]; then + # Allow hostnamectl set-hostname to fail silently. + # Who the fuck invented a tool that needs dbus to set the hostname anyway ... + echo "hostnamectl set-hostname '$name_should' || true" +fi diff --git a/cdist/conf/type/__hostname/man.rst b/cdist/conf/type/__hostname/man.rst index 72aefbab..d23a3b8a 100644 --- a/cdist/conf/type/__hostname/man.rst +++ b/cdist/conf/type/__hostname/man.rst @@ -8,10 +8,7 @@ cdist-type__hostname - Set the hostname DESCRIPTION ----------- -Sets the hostname on various operating systems. - -**Tip:** For advice on choosing a hostname, see -`RFC 1178 `_. +Set's the hostname on various operating systems. REQUIRED PARAMETERS @@ -21,7 +18,7 @@ None. OPTIONAL PARAMETERS ------------------- name - The hostname to set. Defaults to the first segment of __target_host + The hostname to set. Defaults to the first segment of __target_host (${__target_host%%.*}) diff --git a/cdist/conf/type/__hostname/manifest b/cdist/conf/type/__hostname/manifest index 75a90027..74664aa7 100755 --- a/cdist/conf/type/__hostname/manifest +++ b/cdist/conf/type/__hostname/manifest @@ -2,7 +2,6 @@ # # 2012 Steven Armstrong (steven-cdist at armstrong.cc) # 2014 Nico Schottelius (nico-cdist at schottelius.org) -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # @@ -20,170 +19,50 @@ # along with cdist. If not, see . # -not_supported() { - echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 - echo "Please contribute an implementation for it if you can." >&2 - exit 1 -} - -set_hostname_systemd() { - echo "$1" | __file /etc/hostname --source - -} - os=$(cat "$__global/explorer/os") -os_version=$(cat "$__global/explorer/os_version") -os_major=$(echo "$os_version" | grep -o '^[0-9][0-9]*') - -max_len=$(cat "$__object/explorer/max_len") -has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl") - -if test -s "$__object/parameter/name" -then - name_should=$(cat "$__object/parameter/name") +if [ -f "$__object/parameter/name" ]; then + name_should="$(cat "$__object/parameter/name")" else - case $os - in - # RedHat-derivatives and BSDs - centos|fedora|redhat|scientific|freebsd|netbsd|openbsd|slackware) - # Hostname is FQDN - name_should="${__target_host}" - ;; - suse|opensuse-leap) - # Classic SuSE stores the FQDN in /etc/HOSTNAME, while - # systemd does not. The running hostname is the first - # component in both cases. - # In versions before 15.x, the FQDN is stored in /etc/hostname. - if test -n "$has_hostnamectl" && test "$os_major" -ge 15 \ - && test "$os_major" -ne 42 - then - name_should="${__target_host%%.*}" - else - name_should="${__target_host}" - fi - ;; - *) - # Hostname is only first component of FQDN on all other systems. - name_should="${__target_host%%.*}" - ;; + case "$os" in + openbsd) + name_should="$(echo "${__target_host}")" + ;; + *) + name_should="$(echo "${__target_host%%.*}")" + ;; esac fi -if test -n "$max_len" && test "$(printf '%s' "$name_should" | wc -c)" -gt "$max_len" -then - printf "Host name too long. Up to %u characters allowed.\n" "${max_len}" >&2 - exit 1 -fi -case $os -in - alpine|debian|devuan|ubuntu|void) - echo "$name_should" | __file /etc/hostname --source - - ;; - archlinux) - if test -n "$has_hostnamectl" - then - set_hostname_systemd "$name_should" - else - echo 'Ancient ArchLinux variants without hostnamectl are not supported.' >&2 - exit 1 - # Only for ancient ArchLinux, write to /etc/rc.conf on pre-systemd - # versions. There are some versions which use /etc/hostname but not - # systemd. It is unclear which ones these are. +not_supported() { + echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 + echo "Please contribute an implementation for it if you can." >&2 + exit 1 +} - # __key_value '/etc/rc.conf:HOSTNAME' \ - # --file /etc/rc.conf \ - # --delimiter '=' --exact_delimiter \ - # --key 'HOSTNAME' \ - # --value "\"$name_should\"" - fi - ;; - centos|fedora|redhat|scientific) - if test -z "$has_hostnamectl" - then - # Only write to /etc/sysconfig/network on non-systemd versions. - # On systemd-based versions this entry is ignored. - __key_value '/etc/sysconfig/network:HOSTNAME' \ - --file /etc/sysconfig/network \ - --delimiter '=' --exact_delimiter \ - --key HOSTNAME \ - --value "\"$name_should\"" - else - set_hostname_systemd "$name_should" - fi - ;; - gentoo) - # Only write to /etc/conf.d/hostname on OpenRC-based installations. - # On systemd use hostnamectl(1) in gencode-remote. - if test -z "$has_hostnamectl" - then - __key_value '/etc/conf.d/hostname:hostname' \ - --file /etc/conf.d/hostname \ - --delimiter '=' --exact_delimiter \ - --key 'hostname' \ - --value "\"$name_should\"" - else - set_hostname_systemd "$name_should" - fi - ;; - freebsd) - __key_value '/etc/rc.conf:hostname' \ - --file /etc/rc.conf \ - --delimiter '=' --exact_delimiter \ - --key 'hostname' \ - --value "\"$name_should\"" - ;; - macosx) +case "$os" in + archlinux|debian|suse|ubuntu|devuan|coreos) # handled in gencode-remote : ;; - netbsd) - __key_value '/etc/rc.conf:hostname' \ + scientific|centos) + __key_value sysconfig-hostname \ + --file /etc/sysconfig/network \ + --delimiter '=' \ + --key HOSTNAME \ + --value "$name_should" --exact_delimiter + ;; + freebsd) + __key_value rcconf-hostname \ --file /etc/rc.conf \ - --delimiter '=' --exact_delimiter \ + --delimiter '=' \ --key 'hostname' \ - --value "\"$name_should\"" - - # To avoid confusion, ensure that the hostname is only stored once. - __file /etc/myname --state absent + --value "$name_should" ;; openbsd) echo "$name_should" | __file /etc/myname --source - ;; - slackware) - # We write the FQDN into /etc/HOSTNAME. But /etc/rc.d/rc.M will only - # read the first component from this file and set it as the running - # hostname on boot. - echo "$name_should" | __file /etc/HOSTNAME --source - - ;; - solaris) - echo "$name_should" | __file /etc/nodename --source - - ;; - suse|opensuse-leap) - # Modern SuSE provides /etc/HOSTNAME as a symlink for - # backwards-compatibility. Unfortunately it cannot be used - # here as __file does not follow the symlink. - # Therefore, we use the presence of the hostnamectl binary as - # an indication of which file to use. This unfortunately does - # not work correctly on openSUSE 12.x which provides - # hostnamectl but not /etc/hostname. - - if test -n "$has_hostnamectl" -a "$os_major" -gt 12 - then - hostname_file='/etc/hostname' - else - hostname_file='/etc/HOSTNAME' - fi - - echo "$name_should" | __file "$hostname_file" --source - - ;; *) - # On other operating systems we fall back to systemd's - # hostnamectl if available… - if test -n "$has_hostnamectl" - then - set_hostname_systemd "$name_should" - else - not_supported - fi + not_supported ;; esac diff --git a/cdist/conf/type/__install_bootloader_grub/gencode-remote b/cdist/conf/type/__install_bootloader_grub/gencode-remote index 1caebbbf..6e6e5e85 100755 --- a/cdist/conf/type/__install_bootloader_grub/gencode-remote +++ b/cdist/conf/type/__install_bootloader_grub/gencode-remote @@ -28,7 +28,7 @@ install_script="$__object/files/install_script" # Link file descriptor #6 with stdout exec 6>&1 # Link stdout with $install_script -exec > "$install_script" +exec > $install_script # Generate script to install bootloader on distro printf '#!/bin/sh -l\n' diff --git a/cdist/conf/type/__install_config/files/remote/copy b/cdist/conf/type/__install_config/files/remote/copy index fa7fa9b7..15c901f9 100755 --- a/cdist/conf/type/__install_config/files/remote/copy +++ b/cdist/conf/type/__install_config/files/remote/copy @@ -37,12 +37,10 @@ code="$(echo "$@" | sed "s|$target_host:|$target_host:$chroot|g")" log "target_host: $target_host" log "chroot: $chroot" -log "@: $*" +log "@: $@" log "code: $code" # copy files into chroot -# __default_remote_copy and code should be split -# shellcheck disable=SC2086 $__default_remote_copy $code log "-----" diff --git a/cdist/conf/type/__install_config/files/remote/exec b/cdist/conf/type/__install_config/files/remote/exec index c2057ebf..5b25e41e 100755 --- a/cdist/conf/type/__install_config/files/remote/exec +++ b/cdist/conf/type/__install_config/files/remote/exec @@ -36,17 +36,14 @@ shift # escape ' with '"'"' code="$(echo "$@" | sed -e "s/'/'\"'\"'/g")" -# shellcheck disable=SC2089 code="chroot $chroot sh -e -c '$code'" log "target_host: $target_host" log "chroot: $chroot" -log "@: $*" +log "@: $@" log "code: $code" # Run the code -# __default_remote_exec and code should be split -# shellcheck disable=SC2086,SC2090 -$__default_remote_exec "$target_host" $code +$__default_remote_exec $target_host $code log "-----" diff --git a/cdist/conf/type/__install_config/gencode-local b/cdist/conf/type/__install_config/gencode-local index dd4f2a78..8f24cf2e 100755 --- a/cdist/conf/type/__install_config/gencode-local +++ b/cdist/conf/type/__install_config/gencode-local @@ -1,6 +1,6 @@ #!/bin/sh -e # -# 2011-2018 Steven Armstrong (steven-cdist at armstrong.cc) +# 2011-2017 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # @@ -23,7 +23,6 @@ remote_exec="$__type/files/remote/exec" remote_copy="$__type/files/remote/copy" cat << DONE -export __cdist_install_config=yes export __cdist_log_level=$__cdist_log_level export __default_remote_exec="$__remote_exec" export __default_remote_copy="$__remote_copy" diff --git a/cdist/conf/type/__install_coreos/gencode-remote b/cdist/conf/type/__install_coreos/gencode-remote deleted file mode 100755 index f550b5a5..00000000 --- a/cdist/conf/type/__install_coreos/gencode-remote +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -e - -device=$(cat "${__object:?}/parameter/device") -ignition=$(cat "${__object}/parameter/ignition") - -cat < "\${ignition_file}" << eof -$(base64 "${ignition}") -eof - -coreos-install -d "${device}" \ - \$(if [ -s "\${ignition_file}" ]; then - printf -- "-i \${ignition_file}\\n" - fi) - -rm "\${ignition_file}" -EOF diff --git a/cdist/conf/type/__install_coreos/install b/cdist/conf/type/__install_coreos/install deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__install_coreos/man.rst b/cdist/conf/type/__install_coreos/man.rst deleted file mode 100644 index 314f9f2a..00000000 --- a/cdist/conf/type/__install_coreos/man.rst +++ /dev/null @@ -1,50 +0,0 @@ -cdist-type__install_coreos(7) -============================= - -NAME ----- - -cdist-type__install_coreos - Install CoreOS - -DESCRIPTION ------------ - -This type installs CoreOS to a given device using coreos-install_, which is -present in CoreOS ISO by default. - -.. _coreos-install: https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install - -REQUIRED PARAMETERS -------------------- - -device - A device CoreOS will be installed to. - -OPTIONAL PARAMETERS -------------------- - -ignition - Path to ignition config. - -EXAMPLES --------- - -.. code-block:: sh - - __install_coreos \ - --device /dev/sda \ - --ignition ignition.json - - -AUTHORS -------- - -Ľubomír Kučera - -COPYING -------- - -Copyright \(C) 2018 Ľubomír Kučera. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__install_coreos/parameter/default/ignition b/cdist/conf/type/__install_coreos/parameter/default/ignition deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__install_coreos/parameter/optional b/cdist/conf/type/__install_coreos/parameter/optional deleted file mode 100644 index df284caa..00000000 --- a/cdist/conf/type/__install_coreos/parameter/optional +++ /dev/null @@ -1 +0,0 @@ -ignition diff --git a/cdist/conf/type/__install_coreos/parameter/required b/cdist/conf/type/__install_coreos/parameter/required deleted file mode 100644 index f89ee6a8..00000000 --- a/cdist/conf/type/__install_coreos/parameter/required +++ /dev/null @@ -1 +0,0 @@ -device diff --git a/cdist/conf/type/__install_coreos/singleton b/cdist/conf/type/__install_coreos/singleton deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__install_generate_fstab/gencode-local b/cdist/conf/type/__install_generate_fstab/gencode-local index 80455aaa..5cc7d877 100755 --- a/cdist/conf/type/__install_generate_fstab/gencode-local +++ b/cdist/conf/type/__install_generate_fstab/gencode-local @@ -23,13 +23,12 @@ cat "$__type/files/fstab.header" > "$destination" mkdir "$__object/files" # get current UUID's from target_host -$__remote_exec "$__target_host" blkid > "$__object/files/blkid" +$__remote_exec $__target_host blkid > "$__object/files/blkid" -find "$__global/object/__install_mount" -type d -name "$__cdist_object_marker" | -while IFS= read -r object -do +for object in $(find "$__global/object/__install_mount" -type d -name "$__cdist_object_marker"); do device="$(cat "$object/parameter/device")" dir="$(cat "$object/parameter/dir")" + prefix="$(cat "$object/parameter/prefix")" type="$(cat "$object/parameter/type")" if [ -f "$object/parameter/options" ]; then options="$(cat "$object/parameter/options")" @@ -55,7 +54,7 @@ do ;; esac if [ -f "$__object/parameter/uuid" ]; then - uuid="$(grep -w "$device" "$__object/files/blkid" | awk '{print $2}')" + uuid="$(grep -w $device "$__object/files/blkid" | awk '{print $2}')" if [ -n "$uuid" ]; then echo "# $dir was on $device during installation" >> "$destination" device="$uuid" diff --git a/cdist/conf/type/__install_mkfs/manifest b/cdist/conf/type/__install_mkfs/manifest index b0a21dae..eb65757f 100755 --- a/cdist/conf/type/__install_mkfs/manifest +++ b/cdist/conf/type/__install_mkfs/manifest @@ -19,7 +19,13 @@ # # set defaults -if [ ! -f "$__object/parameter/device" ]; then +if [ -f "$__object/parameter/device" ]; then + device="(cat "$__object/parameter/device")" +else device="/$__object_id" echo "$device" > "$__object/parameter/device" fi + +type="(cat "$__object/parameter/type")" + +options="(cat "$__object/parameter/options")" diff --git a/cdist/conf/type/__install_mount/gencode-remote b/cdist/conf/type/__install_mount/gencode-remote index 4415f0ff..ce96279a 100755 --- a/cdist/conf/type/__install_mount/gencode-remote +++ b/cdist/conf/type/__install_mount/gencode-remote @@ -20,9 +20,7 @@ get_type_from_mkfs() { _device="$1" - find "$__global/object/__install_mkfs" -type d -name "$__cdist_object_marker" | - while IFS= read -r mkfs_object - do + for mkfs_object in $(find "$__global/object/__install_mkfs" -type d -name "$__cdist_object_marker"); do mkfs_device="$(cat "$mkfs_object/parameter/device")" if [ "$_device" = "$mkfs_device" ]; then cat "$mkfs_object/parameter/type" diff --git a/cdist/conf/type/__install_partition_msdos_apply/files/lib.sh b/cdist/conf/type/__install_partition_msdos_apply/files/lib.sh index 2db9a441..cddc575d 100644 --- a/cdist/conf/type/__install_partition_msdos_apply/files/lib.sh +++ b/cdist/conf/type/__install_partition_msdos_apply/files/lib.sh @@ -1,20 +1,18 @@ -#!/bin/sh - die() { - echo "[__install_partition_msdos_apply] $*" >&2 + echo "[__install_partition_msdos_apply] $@" >&2 exit 1 } debug() { - #echo "[__install_partition_msdos_apply] $*" >&2 + #echo "[__install_partition_msdos_apply] $@" >&2 : } fdisk_command() { - device="$1" - cmd="$2" + local device="$1" + local cmd="$2" debug fdisk_command "running fdisk command '${cmd}' on device ${device}" - printf '%s\nw\n' "${cmd}" | fdisk -c -u "$device" + printf "${cmd}\nw\n" | fdisk -c -u "$device" ret=$? # give disk some time sleep 1 @@ -22,49 +20,49 @@ fdisk_command() { } create_disklabel() { - device=$1 + local device=$1 debug create_disklabel "creating new msdos disklabel" - fdisk_command "${device}" "o" + fdisk_command ${device} "o" return $? } toggle_bootable() { - device="$1" - minor="$2" - fdisk_command "${device}" "a\\n${minor}\\n" + local device="$1" + local minor="$2" + fdisk_command ${device} "a\n${minor}\n" return $? } create_partition() { - device="$1" - minor="$2" - size="$3" - type="$4" - primary_count="$5" + local device="$1" + local minor="$2" + local size="$3" + local type="$4" + local primary_count="$5" - if [ "$type" = "extended" ] || [ "$type" = "5" ]; then + if [ "$type" = "extended" -o "$type" = "5" ]; then # Extended partition - primary_extended='e\n' - first_minor="${minor}\\n" + primary_extended="e\n" + first_minor="${minor}\n" [ "${minor}" = "4" ] && first_minor="" - type_minor="${minor}\\n" + type_minor="${minor}\n" [ "${minor}" = "1" ] && type_minor="" type="5" elif [ "${minor}" -lt "5" ]; then - primary_extended='p\n' - first_minor="${minor}\\n" + primary_extended="p\n" + first_minor="${minor}\n" [ "${minor}" = "4" ] && first_minor="" - type_minor="${minor}\\n" + type_minor="${minor}\n" [ "${minor}" = "1" ] && type_minor="" else # Logical partitions - first_minor="${minor}\\n" - type_minor="${minor}\\n" - primary_extended='l\n' + first_minor="${minor}\n" + type_minor="${minor}\n" + primary_extended="l\n" [ "$primary_count" -gt "3" ] && primary_extended="" fi [ -n "${size}" ] && size="+${size}M" - fdisk_command "${device}" "n\\n${primary_extended}${first_minor}\\n${size}\\nt\\n${type_minor}${type}\\n" + fdisk_command ${device} "n\n${primary_extended}${first_minor}\n${size}\nt\n${type_minor}${type}\n" return $? } diff --git a/cdist/conf/type/__install_partition_msdos_apply/gencode-remote b/cdist/conf/type/__install_partition_msdos_apply/gencode-remote index a0b46b2d..090a5d86 100755 --- a/cdist/conf/type/__install_partition_msdos_apply/gencode-remote +++ b/cdist/conf/type/__install_partition_msdos_apply/gencode-remote @@ -21,35 +21,35 @@ #set -x die() { - echo "[__install_partition_msdos_apply] $*" >&2 + echo "[__install_partition_msdos_apply] $@" >&2 exit 1 } debug() { - #echo "[__install_partition_msdos_apply] $*" >&2 + #echo "[__install_partition_msdos_apply] $@" >&2 : } # Convert a size specifier 1G 100M or 50% into the corresponding numeric MB. size_to_mb() { - size=$1 - available_size="$2" + local size=$1 + local available_size="$2" - number_suffix="$(echo "${size}" | sed -e 's:\.[0-9]\+::' -e 's:\([0-9]\+\)\([KkMmGg%]\)[Bb]\?:\1|\2:')" - number="$(echo "${number_suffix}" | cut -d '|' -f1)" - suffix="$(echo "${number_suffix}" | cut -d '|' -f2)" + local number_suffix="$(echo ${size} | sed -e 's:\.[0-9]\+::' -e 's:\([0-9]\+\)\([KkMmGg%]\)[Bb]\?:\1|\2:')" + local number="$(echo ${number_suffix} | cut -d '|' -f1)" + local suffix="$(echo ${number_suffix} | cut -d '|' -f2)" case "$suffix" in K|k) - size="$(( number / 1024 ))" + size="$(( $number / 1024 ))" ;; M|m) size="$number" ;; G|g) - size="$(( number * 1024 ))" + size="$(( $number * 1024 ))" ;; %) - size="$(( available_size * number / 100 ))" + size="$(( $available_size * $number / 100 ))" ;; *) size="-1" @@ -59,15 +59,13 @@ size_to_mb() { get_objects() { objects_file=$(mktemp) - find "$__global/object/__install_partition_msdos" -type d -name "$__cdist_object_marker" | - while IFS= read -r object - do + for object in $(find "$__global/object/__install_partition_msdos" -type d -name "$__cdist_object_marker"); do object_device="$(cat "$object/parameter/device")" object_minor="$(cat "$object/parameter/minor")" - echo "$object_device $object_minor $object" >> "$objects_file" + echo "$object_device $object_minor $object" >> $objects_file done - sort -k 1,2 "$objects_file" | cut -d' ' -f 3 - rm "$objects_file" + sort -k 1,2 $objects_file | cut -d' ' -f 3 + rm $objects_file unset objects_file unset object unset object_device @@ -87,9 +85,9 @@ primary_count=0 for object in $objects; do device="$(cat "$object/parameter/device")" if [ "$current_device" != "$device" ]; then - echo "create_disklabel '$device' || die 'Failed to create disklabel for $device'" + echo "create_disklabel \"$device\" || die 'Failed to create disklabel for $device'" current_device="$device" - device_name=$(echo "${device}" | sed -e 's:^/dev/::;s:/:\\/:g') + device_name=$(echo ${device} | sed -e 's:^/dev/::;s:/:\\/:g') available_device_size=$(( $(awk "/${device_name}\$/ { print \$3; }" "$partitions") / 1024)) # make sure we don't go past the end of the drive available_device_size=$((available_device_size - 2)) @@ -110,7 +108,7 @@ for object in $objects; do if [ "${minor}" -lt "5" ]; then # Primary partitions - primary_count=$(( primary_count + 1 )) + primary_count=$(( $primary_count + 1 )) available_size=$available_device_size else # Logical partitions @@ -123,13 +121,13 @@ for object in $objects; do available_size=0 else partition_size=$(size_to_mb "$size" "$available_size") - available_size="$(( available_size - partition_size ))" + available_size="$(( $available_size - $partition_size ))" fi if [ "${minor}" -lt "5" ]; then # Primary partitions available_device_size=$available_size - if [ "$type" = "extended" ] || [ "$type" = "5" ]; then + if [ "$type" = "extended" -o "$type" = "5" ]; then # Extended partition available_extended_size=$partition_size fi diff --git a/cdist/conf/type/__install_reboot/gencode-remote b/cdist/conf/type/__install_reboot/gencode-remote index 9a6322c1..00c04523 100755 --- a/cdist/conf/type/__install_reboot/gencode-remote +++ b/cdist/conf/type/__install_reboot/gencode-remote @@ -18,6 +18,8 @@ # along with cdist. If not, see . # +options="$(cat "$__object/parameter/options")" + #echo "reboot $options" cat << DONE echo 1 > /proc/sys/kernel/sysrq diff --git a/cdist/conf/type/__install_reboot/man.rst b/cdist/conf/type/__install_reboot/man.rst index 9a53b37a..ecf78ca7 100644 --- a/cdist/conf/type/__install_reboot/man.rst +++ b/cdist/conf/type/__install_reboot/man.rst @@ -18,7 +18,8 @@ None OPTIONAL PARAMETERS ------------------- -None +options + options to pass to the reboot command. e.g. -f EXAMPLES diff --git a/cdist/conf/type/__docker_config/explorer/config-exists b/cdist/conf/type/__install_reboot/manifest similarity index 78% rename from cdist/conf/type/__docker_config/explorer/config-exists rename to cdist/conf/type/__install_reboot/manifest index 58c207d4..02689d82 100755 --- a/cdist/conf/type/__docker_config/explorer/config-exists +++ b/cdist/conf/type/__install_reboot/manifest @@ -1,6 +1,6 @@ #!/bin/sh -e # -# 2018 Ľubomír Kučera +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # @@ -18,8 +18,6 @@ # along with cdist. If not, see . # -if docker config ls | grep -q " ${__object_id:?} "; then - echo yes -else - echo no -fi +# set defaults +options="$(cat "$__object/parameter/options" 2>/dev/null \ + || echo "" | tee "$__object/parameter/options")" diff --git a/cdist/conf/type/__install_reset_disk/gencode-remote b/cdist/conf/type/__install_reset_disk/gencode-remote index ac9ae6cf..947dd472 100755 --- a/cdist/conf/type/__install_reset_disk/gencode-remote +++ b/cdist/conf/type/__install_reset_disk/gencode-remote @@ -67,5 +67,5 @@ fi # erase partition table dd if=/dev/zero of=$disk bs=512 count=1 -printf 'w\\n' | fdisk -u -c $disk || true +printf 'w\n' | fdisk -u -c $disk || true DONE diff --git a/cdist/conf/type/__docker_secret/explorer/secret-exists b/cdist/conf/type/__install_umount/manifest similarity index 78% rename from cdist/conf/type/__docker_secret/explorer/secret-exists rename to cdist/conf/type/__install_umount/manifest index 1405f8bc..42cd19bf 100755 --- a/cdist/conf/type/__docker_secret/explorer/secret-exists +++ b/cdist/conf/type/__install_umount/manifest @@ -1,6 +1,6 @@ #!/bin/sh -e # -# 2018 Ľubomír Kučera +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # @@ -18,8 +18,6 @@ # along with cdist. If not, see . # -if docker secret ls | grep -q " ${__object_id:?} "; then - echo yes -else - echo no -fi +# set defaults +target="$(cat "$__object/parameter/target" 2>/dev/null \ + || echo "/target" | tee "$__object/parameter/target")" diff --git a/cdist/conf/type/__install_umount/parameter/default/target b/cdist/conf/type/__install_umount/parameter/default/target deleted file mode 100644 index ea8c4bf7..00000000 --- a/cdist/conf/type/__install_umount/parameter/default/target +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/cdist/conf/type/__install_umount/parameter/optional b/cdist/conf/type/__install_umount/parameter/optional deleted file mode 100644 index eb5a316c..00000000 --- a/cdist/conf/type/__install_umount/parameter/optional +++ /dev/null @@ -1 +0,0 @@ -target diff --git a/cdist/conf/type/__iptables_apply/files/init-script b/cdist/conf/type/__iptables_apply/files/init-script index d9c79ef7..2247dcf5 100644 --- a/cdist/conf/type/__iptables_apply/files/init-script +++ b/cdist/conf/type/__iptables_apply/files/init-script @@ -24,15 +24,13 @@ case $1 in iptables-save > "$status" # Apply our ruleset - cd "$basedir" || exit - count="$(find . ! -name . -prune | wc -l)" + cd "$basedir" + count="$(ls -1 | wc -l)" # Only do something if there are rules if [ "$count" -ge 1 ]; then for rule in *; do echo "Applying iptables rule $rule ..." - # Rule should be split. - # shellcheck disable=SC2046 iptables $(cat "$rule") done fi diff --git a/cdist/conf/type/__jail/manifest b/cdist/conf/type/__jail/manifest index fad6a3a1..c3d9dfbe 100755 --- a/cdist/conf/type/__jail/manifest +++ b/cdist/conf/type/__jail/manifest @@ -35,15 +35,16 @@ fi jaildir="$(cat "$__object/parameter/jaildir")" -__directory "${jaildir}" --parents +__directory ${jaildir} --parents -set -- "$@" "$__object_id" +set -- "$@" "$__object_id" "--state" "$state" cd "$__object/parameter" -for property in *; do +for property in $(ls .); do set -- "$@" "--$property" "$(cat "$property")" done -if grep -q '^10\.' "$(cat "$__global/explorer/os_version")" ; then # Version is 10.x +ver="$(cat "$__global/explorer/os_version")" +if [ -n "$(echo "$ver" | grep '^10\.' )" ]; then # Version is 10.x __jail_freebsd10 "$@" else __jail_freebsd9 "$@" diff --git a/cdist/conf/type/__jail_freebsd10/explorer/status b/cdist/conf/type/__jail_freebsd10/explorer/status index c8039f21..1ceba212 100755 --- a/cdist/conf/type/__jail_freebsd10/explorer/status +++ b/cdist/conf/type/__jail_freebsd10/explorer/status @@ -39,7 +39,7 @@ fi # backslash-escaped $jaildir sjaildir="$(echo ${jaildir} | sed 's#/#\\/#g')" -jls_output="$(jls | grep "[ ]${sjaildir}\\/${name}\$")" || true +jls_output="$(jls | grep "[ ]${sjaildir}\/${name}\$")" || true if [ -n "${jls_output}" ]; then echo "STARTED" diff --git a/cdist/conf/type/__jail_freebsd10/gencode-local b/cdist/conf/type/__jail_freebsd10/gencode-local index f163cad3..b2016f86 100755 --- a/cdist/conf/type/__jail_freebsd10/gencode-local +++ b/cdist/conf/type/__jail_freebsd10/gencode-local @@ -44,7 +44,7 @@ basepresent="$(cat "$__object/explorer/basepresent")" if [ "$state" = "present" ]; then if [ "$basepresent" = "NONE" ]; then # IPv6 fix - if echo "${__target_host}" | grep -q -E '^[0-9a-fA-F:]+$' + if $(echo "${__target_host}" | grep -q -E '^[0-9a-fA-F:]+$') then my_target_host="[${__target_host}]" else diff --git a/cdist/conf/type/__jail_freebsd10/gencode-remote b/cdist/conf/type/__jail_freebsd10/gencode-remote index 4f376c25..76241e0e 100755 --- a/cdist/conf/type/__jail_freebsd10/gencode-remote +++ b/cdist/conf/type/__jail_freebsd10/gencode-remote @@ -36,7 +36,7 @@ state="$(cat "$__object/parameter/state")" started="true" # If the user wants the jail gone, it implies it shouldn't be started. -{ [ -f "$__object/parameter/stopped" ] || [ "$state" = "absent" ]; } && started="false" +[ -f "$__object/parameter/stopped" -o "$state" = "absent" ] && started="false" if [ -f "$__object/parameter/ip" ]; then ip="$(cat "$__object/parameter/ip")" @@ -45,7 +45,7 @@ else # when $state=present, it's required. Enforce this. if [ "$state" = "present" ]; then exec >&2 - printf 'If --state is "present", --ip must be given\!\n' + echo "If --state is 'present,' --ip must be given\!" exit 1 fi fi @@ -66,7 +66,7 @@ devfsruleset="$(cat "$__object/parameter/devfs-ruleset")" # devfs_ruleset being defined without devfs_enable being true # is pointless. Treat this as an error. -if [ -n "$devfsruleset" ] && [ "$devfsenable" = "false" ]; then +if [ -n "$devfsruleset" -a "$devfsenable" = "false" ]; then exec >&2 echo "Can't have --devfs-ruleset defined with --devfs-disable" exit 1 @@ -83,12 +83,12 @@ present="$(cat "$__object/explorer/present")" status="$(cat "$__object/explorer/status")" # Handle ip="addr, addr" format -if [ "$(expr "${ip}" : ".*, .*")" -gt "0" ]; then +if [ $(expr "${ip}" : ".*, .*") -gt "0" ]; then SAVE_IFS="$IFS" IFS=", " for cur_ip in ${ip}; do # Just get the last IP address for SSH to listen on - mgmt_ip=$(echo "${cur_ip}" | cut '-d ' -f1) # In case using "ip netmask" format rather than CIDR + mgmt_ip=$(echo "${ip}" | cut '-d ' -f1) # In case using "ip netmask" format rather than CIDR done IFS="$SAVE_IFS" else @@ -114,19 +114,19 @@ startJail() { deleteJail() { # Unmount the jail's mountpoints if necessary cat <=1 rw mount is mounted still - for DIR in "\${output}"; do - umount -F "/etc/fstab.${name}" "\$(echo "${DIR}" | awk '{print \$3}')" + for DIR in "${output}"; do + umount -F "/etc/fstab.${name}" "\$(echo "${DIR}" | awk '{print $3}')" done fi - output="\$(mount | grep "\\/${name} (")" || true + output="\$(mount | grep "\/${name} (")" || true if [ -n "\${output}" ]; then # ro mount is mounted still - umount -F "/etc/fstab.${name}" "\$(echo "\${output}" | awk '{print \$3}')" + umount -F "/etc/fstab.${name}" "\$(echo "${output}" | awk '{print $3}')" fi EOF # Remove the jail's rw mountpoints @@ -275,9 +275,9 @@ cat <&1 >/dev/null # Close the FD==fail... @@ -290,7 +290,7 @@ add include \\\$devfsrules_unhide_basic add include \\\$devfsrules_unhide_login END fi - devfsruleset_num=\$(grep "\\[${devfsruleset}=" /etc/devfs.rules | sed -n 's/\\[.*=\\([0-9]*\\)\\]/\\1/pg') + devfsruleset_num=\$(grep "\[${devfsruleset}=" /etc/devfs.rules | sed -n 's/\[.*=\([0-9]*\)\]/\1/pg') if [ -n "\$devfsruleset_num" ]; then jaildata="\$jaildata devfs_ruleset=\"\${devfsruleset_num}\";" @@ -298,8 +298,8 @@ END fi EOF - # shellcheck disable=SC2028 - echo "printf \"%s\\n%s\\n%s\\n\" \"\$jailheader\" \"\$jaildata\" \"\$jailtrailer\" >>\"\$jailfile\"" + + echo "printf \"%s\\n%s\n%s\n\" \"\$jailheader\" \"\$jaildata\" \"\$jailtrailer\" >>\"\$jailfile\"" # Add $name to jail_list if $onboot=yes if [ "$onboot" = "yes" ]; then diff --git a/cdist/conf/type/__jail_freebsd9/explorer/status b/cdist/conf/type/__jail_freebsd9/explorer/status index c8039f21..1ceba212 100755 --- a/cdist/conf/type/__jail_freebsd9/explorer/status +++ b/cdist/conf/type/__jail_freebsd9/explorer/status @@ -39,7 +39,7 @@ fi # backslash-escaped $jaildir sjaildir="$(echo ${jaildir} | sed 's#/#\\/#g')" -jls_output="$(jls | grep "[ ]${sjaildir}\\/${name}\$")" || true +jls_output="$(jls | grep "[ ]${sjaildir}\/${name}\$")" || true if [ -n "${jls_output}" ]; then echo "STARTED" diff --git a/cdist/conf/type/__jail_freebsd9/gencode-local b/cdist/conf/type/__jail_freebsd9/gencode-local index bbdc9fcc..1ab7ff1a 100755 --- a/cdist/conf/type/__jail_freebsd9/gencode-local +++ b/cdist/conf/type/__jail_freebsd9/gencode-local @@ -40,7 +40,7 @@ basepresent="$(cat "$__object/explorer/basepresent")" if [ "$state" = "present" ]; then if [ "$basepresent" = "NONE" ]; then # IPv6 fix - if echo "${__target_host}" | grep -q -E '^[0-9a-fA-F:]+$' + if $(echo "${__target_host}" | grep -q -E '^[0-9a-fA-F:]+$') then my_target_host="[${__target_host}]" else diff --git a/cdist/conf/type/__jail_freebsd9/gencode-remote b/cdist/conf/type/__jail_freebsd9/gencode-remote index 68229d3e..63b48e5c 100755 --- a/cdist/conf/type/__jail_freebsd9/gencode-remote +++ b/cdist/conf/type/__jail_freebsd9/gencode-remote @@ -36,7 +36,7 @@ state="$(cat "$__object/parameter/state")" started="true" # If the user wants the jail gone, it implies it shouldn't be started. -{ [ -f "$__object/parameter/stopped" ] || [ "$state" = "absent" ]; } && started="false" +[ -f "$__object/parameter/stopped" -o "$state" = "absent" ] && started="false" if [ -f "$__object/parameter/ip" ]; then ip="$(cat "$__object/parameter/ip")" @@ -45,7 +45,7 @@ else # when $state=present, it's required. Enforce this. if [ "$state" = "present" ]; then exec >&2 - printf 'If --state is "present", --ip must be given\!\n' + echo "If --state is 'present,' --ip must be given\!" exit 1 fi fi @@ -70,7 +70,7 @@ devfsruleset="$(cat "$__object/parameter/devfs-ruleset")" # devfs_ruleset being defined without devfs_enable being true # is pointless. Treat this as an error. -if [ -n "$devfsruleset" ] && [ "$devfsenable" = "false" ]; then +if [ -n "$devfsruleset" -a "$devfsenable" = "false" ]; then exec >&2 echo "Can't have --devfs-ruleset defined with --devfs-disable" exit 1 @@ -86,14 +86,14 @@ present="$(cat "$__object/explorer/present")" status="$(cat "$__object/explorer/status")" # Handle ip="iface|addr, iface|addr" format -if [ "$(expr "${ip}" : ".*|.*")" -gt "0" ]; then +if [ $(expr "${ip}" : ".*|.*") -gt "0" ]; then # If we have multiple IPs defined, $interface doesn't make sense because ip="iface|addr, iface|addr" implies it interface="" SAVE_IFS="$IFS" IFS=", " for cur_ip in ${ip}; do # Just get the last IP address for SSH to listen on - mgmt_ip=$(echo "${cur_ip}" | sed -E -e 's/^.*\|(.*)\/[0-9]+$/\1/') + mgmt_ip=$(echo "${ip}" | sed -E -e 's/^.*\|(.*)\/[0-9]+$/\1/') done IFS="$SAVE_IFS" else @@ -119,19 +119,19 @@ startJail() { deleteJail() { # Unmount the jail's mountpoints if necessary cat <=1 rw mount is mounted still - for DIR in "\${output}"; do - umount -F "/etc/fstab.${name}" "\$(echo "${DIR}" | awk '{print \$3}')" + for DIR in "${output}"; do + umount -F "/etc/fstab.${name}" "\$(echo "${DIR}" | awk '{print $3}')" done fi - output="\$(mount | grep "\\/${name} (")" || true + output="\$(mount | grep "\/${name} (")" || true if [ -n "\${output}" ]; then # ro mount is mounted still - umount -F "/etc/fstab.${name}" "\$(echo "\${output}" | awk '{print \$3}')" + umount -F "/etc/fstab.${name}" "\$(echo "${output}" | awk '{print $3}')" fi EOF # Remove the jail's rw mountpoints @@ -279,9 +279,9 @@ END if [ ! -f /etc/devfs.rules ]; then touch /etc/devfs.rules fi - if [ -z "\$(grep '\\[jailrules=' /etc/devfs.rules)" ]; then # The default ruleset doesn't exist + if [ -z "\$(grep '\[jailrules=' /etc/devfs.rules)" ]; then # The default ruleset doesn't exist # Get the highest-numbered ruleset - highest="\$(sed -n 's/\\[.*=\\([0-9]*\\)\\]/\\1/pg' /etc/devfs.rules | sort -u | tail -n 1)" || true + highest="\$(sed -n 's/\[.*=\([0-9]*\)\]/\1/pg' /etc/devfs.rules | sort -u | tail -n 1)" || true # increment by 1 let num="\${highest}+1" 2>&- >&- # add default ruleset diff --git a/cdist/conf/type/__key_value/explorer/state b/cdist/conf/type/__key_value/explorer/state index 7b2de1df..b990733d 100755 --- a/cdist/conf/type/__key_value/explorer/state +++ b/cdist/conf/type/__key_value/explorer/state @@ -19,9 +19,9 @@ # along with cdist. If not, see . # -key="$(cat "$__object/parameter/key" 2>/dev/null \ +export key="$(cat "$__object/parameter/key" 2>/dev/null \ || echo "$__object_id")" -state="$(cat "$__object/parameter/state")" +export state="$(cat "$__object/parameter/state")" file="$(cat "$__object/parameter/file")" @@ -30,15 +30,14 @@ if [ ! -f "$file" ]; then exit fi -delimiter="$(cat "$__object/parameter/delimiter")" -value="$(cat "$__object/parameter/value" 2>/dev/null \ +export delimiter="$(cat "$__object/parameter/delimiter")" +export value="$(cat "$__object/parameter/value" 2>/dev/null \ || echo "__CDIST_NOTSET__")" if [ -f "$__object/parameter/exact_delimiter" ]; then - exact_delimiter=1 + export exact_delimiter=1 else - exact_delimiter=0 + export exact_delimiter=0 fi -export key state delimiter value exact_delimiter awk -f - "$file" <<"AWK_EOF" BEGIN { diff --git a/cdist/conf/type/__key_value/files/remote_script.sh b/cdist/conf/type/__key_value/files/remote_script.sh index f7a1add5..52b3f2de 100644 --- a/cdist/conf/type/__key_value/files/remote_script.sh +++ b/cdist/conf/type/__key_value/files/remote_script.sh @@ -1,21 +1,19 @@ #!/bin/sh -key="$(cat "$__object/parameter/key" 2>/dev/null \ +export key="$(cat "$__object/parameter/key" 2>/dev/null \ || echo "$__object_id")" -state="$(cat "$__object/parameter/state")" +export state="$(cat "$__object/parameter/state")" file="$(cat "$__object/parameter/file")" -delimiter="$(cat "$__object/parameter/delimiter")" -value="$(cat "$__object/parameter/value" 2>/dev/null \ +export delimiter="$(cat "$__object/parameter/delimiter")" +export value="$(cat "$__object/parameter/value" 2>/dev/null \ || echo "__CDIST_NOTSET__")" -export key state delimiter value if [ -f "$__object/parameter/exact_delimiter" ]; then - exact_delimiter=1 + export exact_delimiter=1 else - exact_delimiter=0 + export exact_delimiter=0 fi -export exact_delimiter tmpfile=$(mktemp "${file}.cdist.XXXXXXXXXX") # preserve ownership and permissions by copying existing file over tmpfile diff --git a/cdist/conf/type/__key_value/manifest b/cdist/conf/type/__key_value/manifest index 5a91f60c..c7801c89 100755 --- a/cdist/conf/type/__key_value/manifest +++ b/cdist/conf/type/__key_value/manifest @@ -21,7 +21,7 @@ state_should="$(cat "$__object/parameter/state")" -if [ "$state_should" = "present" ] && [ ! -f "$__object/parameter/value" ]; then +if [ "$state_should" = "present" -a ! -f "$__object/parameter/value" ]; then echo "Missing required parameter 'value'" >&2 exit 1 fi diff --git a/cdist/conf/type/__letsencrypt_cert/explorer/certbot-path b/cdist/conf/type/__letsencrypt_cert/explorer/certbot-path deleted file mode 100755 index 3c6076df..00000000 --- a/cdist/conf/type/__letsencrypt_cert/explorer/certbot-path +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -e - -command -v certbot 2>/dev/null || true diff --git a/cdist/conf/type/__letsencrypt_cert/explorer/certificate-domains b/cdist/conf/type/__letsencrypt_cert/explorer/certificate-domains deleted file mode 100755 index db605b63..00000000 --- a/cdist/conf/type/__letsencrypt_cert/explorer/certificate-domains +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -e - -certbot_path=$("${__type_explorer}/certbot-path") -if [ -n "${certbot_path}" ] -then - certbot certificates --cert-name "${__object_id:?}" | grep ' Domains: ' | \ - cut -d ' ' -f 6- | tr ' ' '\n' -fi diff --git a/cdist/conf/type/__letsencrypt_cert/explorer/certificate-exists b/cdist/conf/type/__letsencrypt_cert/explorer/certificate-exists deleted file mode 100755 index 4e6f44db..00000000 --- a/cdist/conf/type/__letsencrypt_cert/explorer/certificate-exists +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -e - -certbot_path=$("${__type_explorer}/certbot-path") -if [ -n "${certbot_path}" ] -then - if certbot certificates | grep -q " Certificate Name: ${__object_id:?}$"; then - echo yes - else - echo no - fi -else - echo no -fi diff --git a/cdist/conf/type/__letsencrypt_cert/explorer/certificate-is-test b/cdist/conf/type/__letsencrypt_cert/explorer/certificate-is-test deleted file mode 100755 index 9b445059..00000000 --- a/cdist/conf/type/__letsencrypt_cert/explorer/certificate-is-test +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -e - -certbot_path=$("${__type_explorer}/certbot-path") -if [ -n "${certbot_path}" ] -then - if certbot certificates --cert-name "${__object_id:?}" | \ - grep -q 'INVALID: TEST_CERT'; then - echo yes - else - echo no - fi -else - echo no -fi diff --git a/cdist/conf/type/__letsencrypt_cert/explorer/exists b/cdist/conf/type/__letsencrypt_cert/explorer/exists new file mode 100644 index 00000000..cb967663 --- /dev/null +++ b/cdist/conf/type/__letsencrypt_cert/explorer/exists @@ -0,0 +1,5 @@ +domain=$__object_id + +if [ -f "/etc/letsencrypt/live/$domain/fullchain.pem" ]; then + echo yes +fi diff --git a/cdist/conf/type/__letsencrypt_cert/gencode-remote b/cdist/conf/type/__letsencrypt_cert/gencode-remote old mode 100755 new mode 100644 index 375570a4..62ada241 --- a/cdist/conf/type/__letsencrypt_cert/gencode-remote +++ b/cdist/conf/type/__letsencrypt_cert/gencode-remote @@ -1,82 +1,18 @@ -#!/bin/sh -e +domain="$__object_id" -certificate_exists=$(cat "${__object:?}/explorer/certificate-exists") -name="${__object_id:?}" -state=$(cat "${__object}/parameter/state") +exists=$(cat "$__object/explorer/exists") +webroot="$(cat "$__object/parameter/webroot")" +admin_email="$(cat "$__object/parameter/admin-email")" -case "${state}" in - absent) - if [ "${certificate_exists}" = "no" ]; then - exit 0 - fi +if [ -n "$exists" ]; then + exit 0 +fi - echo "certbot delete --cert-name '${name}' --quiet" +cat <> "${__messages_out:?}" - ;; - present) - domain_param_file="${__object}/parameter/domain" - requested_domains=$(mktemp "${TMPDIR:-/tmp}/domain.cdist.XXXXXXXXXX") - if [ -f "${domain_param_file}" ]; then - cp "${domain_param_file}" "${requested_domains}" - else - echo "$__object_id" >> "${requested_domains}" - fi - - staging=no - if [ -f "${__object}/parameter/staging" ]; then - staging=yes - fi - - if [ "${certificate_exists}" = "yes" ]; then - existing_domains="${__object}/explorer/certificate-domains" - certificate_is_test=$(cat "${__object}/explorer/certificate-is-test") - - sort -uo "${requested_domains}" "${requested_domains}" - sort -uo "${existing_domains}" "${existing_domains}" - - if [ -z "$(comm -23 "${requested_domains}" "${existing_domains}")" ] && \ - [ "${certificate_is_test}" = "${staging}" ]; then - exit 0 - fi - fi - - admin_email="$(cat "$__object/parameter/admin-email")" - webroot="$(cat "$__object/parameter/webroot")" - - cat <<-EOF - certbot certonly \ - --agree-tos \ - --cert-name '${name}' \ - --email '${admin_email}' \ - --expand \ - --non-interactive \ - --quiet \ - $(if [ "${staging}" = "yes" ]; then - echo "--staging" - elif [ "${certificate_is_test}" != "${staging}" ]; then - echo "--force-renewal" - fi) \ - $(if [ -z "${webroot}" ]; then - echo "--standalone" - else - echo "--webroot --webroot-path '${webroot}'" - fi) \ - $(while read -r domain; do - echo "--domain '${domain}' \\" - done < "${requested_domains}") - EOF - rm -f "${requested_domains}" - - if [ "${certificate_exists}" = "no" ]; then - echo create >> "${__messages_out}" - else - echo change >> "${__messages_out}" - fi - ;; - *) - echo "Unsupported state: ${state}" >&2 - - exit 1 - ;; -esac +certbot certonly -n --agree-tos --email '$admin_email' --quiet --webroot \ + -w '$webroot' -d '$domain' +EOF diff --git a/cdist/conf/type/__letsencrypt_cert/man.rst b/cdist/conf/type/__letsencrypt_cert/man.rst index c4ffc6bc..bb1e5d05 100644 --- a/cdist/conf/type/__letsencrypt_cert/man.rst +++ b/cdist/conf/type/__letsencrypt_cert/man.rst @@ -3,107 +3,54 @@ cdist-type__letsencrypt_cert(7) NAME ---- - cdist-type__letsencrypt_cert - Get an SSL certificate from Let's Encrypt + DESCRIPTION ----------- +Automatically obtain a Let's Encrypt SSL certificate. Uses certbot's webroot +method. You must set up your web server to work with webroot. -Automatically obtain a Let's Encrypt SSL certificate using Certbot. REQUIRED PARAMETERS ------------------- - -object id - A cert name. If domain parameter is not specified then it is used - as a domain to be included in the certificate. +webroot + The path to your webroot, as set up in your webserver config. admin-email - Where to send Let's Encrypt emails like "certificate needs renewal". + Where to send Let's Encrypt emails like "certificate needs renewal". + OPTIONAL PARAMETERS ------------------- +None. -state - 'present' or 'absent', defaults to 'present' where: - - present - if the certificate does not exist, it will be obtained - absent - the certificate will be removed - -webroot - The path to your webroot, as set up in your webserver config. If this - parameter is not present, Certbot will be run in standalone mode. OPTIONAL MULTIPLE PARAMETERS ---------------------------- - renew-hook - Renew hook command directly passed to Certbot in cron job. - -domain - Domains to be included in the certificate. When specified then object id - is not used as a domain. - -BOOLEAN PARAMETERS ------------------- - -automatic-renewal - Install a cron job, which attempts to renew certificates daily. - -staging - Obtain a test certificate from a staging server. - -MESSAGES --------- - -change - Certificte was changed. - -create - Certificte was created. - -remove - Certificte was removed. + Renew hook command directly passed to certbot in cron job. EXAMPLES -------- .. code-block:: sh - # use object id as domain - __letsencrypt_cert example.com \ - --admin-email root@example.com \ - --automatic-renewal \ - --renew-hook "service nginx reload" \ - --webroot /data/letsencrypt/root + __letsencrypt_cert example.com --admin-email root@example.com --webroot /data/letsencrypt/root -.. code-block:: sh + __letsencrypt_cert example.com --admin-email root@example.com --webroot /data/letsencrypt/root --renew-hook "service nginx reload" - # domain parameter is specified so object id is not used as domain - # and example.com needs to be included again with domain parameter - __letsencrypt_cert example.com \ - --admin-email root@example.com \ - --automatic-renewal \ - --domain example.com \ - --domain foo.example.com \ - --domain bar.example.com \ - --renew-hook "service nginx reload" \ - --webroot /data/letsencrypt/root AUTHORS ------- - | Nico Schottelius | Kamila Součková | Darko Poljak -| Ľubomír Kučera + COPYING ------- - -Copyright \(C) 2017-2018 Nico Schottelius, Kamila Součková, Darko Poljak and -Ľubomír Kučera. You can redistribute it and/or modify it under the terms of -the GNU General Public License as published by the Free Software Foundation, -either version 3 of the License, or (at your option) any later version. +Copyright \(C) 2017 Nico Schottelius, Kamila Součková, Darko Poljak. You can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. diff --git a/cdist/conf/type/__letsencrypt_cert/manifest b/cdist/conf/type/__letsencrypt_cert/manifest old mode 100755 new mode 100644 index 68ecf9d4..800e5e18 --- a/cdist/conf/type/__letsencrypt_cert/manifest +++ b/cdist/conf/type/__letsencrypt_cert/manifest @@ -1,115 +1,79 @@ -#!/bin/sh +os=$(cat "$__global/explorer/os") +os_version=$(cat "$__global/explorer/os_version") -certbot_fullpath="$(cat "${__object:?}/explorer/certbot-path")" +case "$os" in + debian) + case "$os_version" in + 8*) + __apt_source jessie-backports \ + --uri http://http.debian.net/debian \ + --distribution jessie-backports \ + --component main -if [ -z "${certbot_fullpath}" ]; then - os="$(cat "${__global:?}/explorer/os")" - os_version="$(cat "${__global}/explorer/os_version")" + require="__apt_source/jessie-backports" __package_apt python-certbot --target-release jessie-backports + require="__apt_source/jessie-backports" __package_apt certbot --target-release jessie-backports + # Seems to be a missing dependency on debian 8 + __package python-ndg-httpsclient + ;; + 9*) + __apt_source stretch-backports \ + --uri http://http.debian.net/debian \ + --distribution stretch-backports \ + --component main - case "$os" in - archlinux) - __package certbot - ;; - alpine) - __package certbot - ;; - debian) - case "$os_version" in - 8*) - __apt_source jessie-backports \ - --uri http://http.debian.net/debian \ - --distribution jessie-backports \ - --component main + require="__apt_source/stretch-backports" __package_apt python-certbot --target-release stretch-backports + require="__apt_source/stretch-backports" __package_apt certbot --target-release stretch-backports + ;; + *) + echo "Unsupported OS version: $os_version" >&2 + exit 1 + ;; + esac - require="__apt_source/jessie-backports" __package_apt python-certbot \ - --target-release jessie-backports - require="__apt_source/jessie-backports" __package_apt certbot \ - --target-release jessie-backports - # Seems to be a missing dependency on debian 8 - __package python-ndg-httpsclient - ;; - 9*) - __apt_source stretch-backports \ - --uri http://http.debian.net/debian \ - --distribution stretch-backports \ - --component main + certbot_fullpath=/usr/bin/certbot + ;; + devuan) + case "$os_version" in + jessie) + __apt_source jessie-backports \ + --uri http://auto.mirror.devuan.org/merged \ + --distribution jessie-backports \ + --component main - require="__apt_source/stretch-backports" __package_apt python-certbot \ - --target-release stretch-backports - require="__apt_source/stretch-backports" __package_apt certbot \ - --target-release stretch-backports - ;; - 10*) - __package_apt certbot - ;; + require="__apt_source/jessie-backports" __package_apt python-certbot --target-release jessie-backports + require="__apt_source/jessie-backports" __package_apt certbot --target-release jessie-backports + # Seems to be a missing dependency on debian 8 + __package python-ndg-httpsclient + ;; + *) + echo "Unsupported OS version: $os_version" >&2 + exit 1 + ;; + esac - *) - echo "Unsupported OS version: $os_version" >&2 - exit 1 - ;; - esac + certbot_fullpath=/usr/bin/certbot + ;; + freebsd) + __package py27-certbot - certbot_fullpath=/usr/bin/certbot - ;; - devuan) - case "$os_version" in - jessie) - __apt_source jessie-backports \ - --uri http://auto.mirror.devuan.org/merged \ - --distribution jessie-backports \ - --component main + certbot_fullpath=/usr/local/bin/certbot + ;; + *) + echo "Unsupported os: $os" >&2 + exit 1 + ;; +esac - require="__apt_source/jessie-backports" __package_apt python-certbot \ - --target-release jessie-backports - require="__apt_source/jessie-backports" __package_apt certbot \ - --target-release jessie-backports - # Seems to be a missing dependency on debian 8 - __package python-ndg-httpsclient - ;; - ascii*) - __apt_source ascii-backports \ - --uri http://auto.mirror.devuan.org/merged \ - --distribution ascii-backports \ - --component main - - require="__apt_source/ascii-backports" __package_apt certbot \ - --target-release ascii-backports - ;; - beowulf*) - __package_apt certbot - ;; - *) - echo "Unsupported OS version: $os_version" >&2 - exit 1 - ;; - esac - - certbot_fullpath=/usr/bin/certbot - ;; - freebsd) - __package py27-certbot - - certbot_fullpath=/usr/local/bin/certbot - ;; - *) - echo "Unsupported os: $os" >&2 - exit 1 - ;; - esac +renew_hook_param="$__object/parameter/renew-hook" +renew_hook="" +if [ -f "$renew_hook_param" ]; then + while read hook; do + renew_hook="$renew_hook --renew-hook \"$hook\"" + done < "$renew_hook_param" fi -if [ -f "${__object}/parameter/automatic-renewal" ]; then - renew_hook_param="${__object}/parameter/renew-hook" - renew_hook="" - if [ -f "${renew_hook_param}" ]; then - while read -r hook; do - renew_hook="${renew_hook} --renew-hook \"${hook}\"" - done < "${renew_hook_param}" - fi - - __cron letsencrypt-certbot \ - --user root \ - --command "${certbot_fullpath} renew -q ${renew_hook}" \ - --hour 0 \ - --minute 47 -fi +__cron letsencrypt-certbot \ + --user root \ + --command "$certbot_fullpath renew -q $renew_hook" \ + --hour 0 \ + --minute 47 diff --git a/cdist/conf/type/__letsencrypt_cert/parameter/boolean b/cdist/conf/type/__letsencrypt_cert/parameter/boolean deleted file mode 100644 index d5b8be99..00000000 --- a/cdist/conf/type/__letsencrypt_cert/parameter/boolean +++ /dev/null @@ -1,2 +0,0 @@ -automatic-renewal -staging diff --git a/cdist/conf/type/__letsencrypt_cert/parameter/default/state b/cdist/conf/type/__letsencrypt_cert/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__letsencrypt_cert/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__letsencrypt_cert/parameter/default/webroot b/cdist/conf/type/__letsencrypt_cert/parameter/default/webroot deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__letsencrypt_cert/parameter/optional b/cdist/conf/type/__letsencrypt_cert/parameter/optional deleted file mode 100644 index 0a63b11e..00000000 --- a/cdist/conf/type/__letsencrypt_cert/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -state -webroot diff --git a/cdist/conf/type/__letsencrypt_cert/parameter/optional_multiple b/cdist/conf/type/__letsencrypt_cert/parameter/optional_multiple index 0e866d45..3384c74f 100644 --- a/cdist/conf/type/__letsencrypt_cert/parameter/optional_multiple +++ b/cdist/conf/type/__letsencrypt_cert/parameter/optional_multiple @@ -1,2 +1 @@ -domain renew-hook diff --git a/cdist/conf/type/__letsencrypt_cert/parameter/required b/cdist/conf/type/__letsencrypt_cert/parameter/required index bfe77226..45fe4ea6 100644 --- a/cdist/conf/type/__letsencrypt_cert/parameter/required +++ b/cdist/conf/type/__letsencrypt_cert/parameter/required @@ -1 +1,2 @@ admin-email +webroot diff --git a/cdist/conf/type/__line/explorer/state b/cdist/conf/type/__line/explorer/state index 2ef252c8..08056c86 100755 --- a/cdist/conf/type/__line/explorer/state +++ b/cdist/conf/type/__line/explorer/state @@ -1,6 +1,6 @@ -#!/bin/sh -e +#!/bin/sh # -# 2018 Steven Armstrong (steven-cdist at armstrong.cc) +# 2012-2013 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -17,79 +17,26 @@ # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # +# -if [ -f "$__object/parameter/before" ]; then - position="before" -elif [ -f "$__object/parameter/after" ]; then - position="after" -else - # By default we append to the end of the file. - position="end" -fi +file="/$__object_id" +[ -f "$__object/parameter/file" ] && file=$(cat "$__object/parameter/file") if [ -f "$__object/parameter/regex" ]; then - needle="regex" + regex=$(cat "$__object/parameter/regex") + greparg="" else - needle="line" + if [ ! -f "$__object/parameter/line" ]; then + echo "Parameter line and regex missing - cannot explore" >&2 + exit 1 + fi + regex="$(cat "$__object/parameter/line")" + greparg="-F -x" fi -if [ -f "$__object/parameter/file" ]; then - file="$(cat "$__object/parameter/file")" +# Allow missing file - thus 2>/dev/null +if grep -q $greparg -- "$regex" "$file" 2>/dev/null; then + echo present else - file="/$__object_id" + echo absent fi - -if [ ! -f "$file" ]; then - echo "file_missing" - exit 0 -fi - -awk -v position="$position" -v needle="$needle" ' -function _find(_text, _pattern) { - if (needle == "regex") { - return match(_text, _pattern) - } else { - return index(_text, _pattern) - } -} -BEGIN { - getline anchor < (ENVIRON["__object"] "/parameter/" position) - getline pattern < (ENVIRON["__object"] "/parameter/" needle) - state = "absent" -} -{ - if (position == "after") { - if (match($0, anchor)) { - getline - if (_find($0, pattern)) { - state = "present" - } - else { - state = "wrongposition" - } - exit 0 - } - } - else if (position == "before") { - if (_find($0, pattern)) { - getline - if (match($0, anchor)) { - state = "present" - } - else { - state = "wrongposition" - } - exit 0 - } - } - else { - if (_find($0, pattern)) { - state = "present" - exit 0 - } - } -} -END { - print state -} -' "$file" diff --git a/cdist/conf/type/__line/gencode-remote b/cdist/conf/type/__line/gencode-remote index 03e90c1b..4a75b4c5 100755 --- a/cdist/conf/type/__line/gencode-remote +++ b/cdist/conf/type/__line/gencode-remote @@ -1,6 +1,7 @@ #!/bin/sh -e # -# 2018 Steven Armstrong (steven-cdist at armstrong.cc) +# 2012 Nico Schottelius (nico-cdist at schottelius.org) +# 2014 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # @@ -17,112 +18,76 @@ # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # +# -if [ -f "$__object/parameter/before" ] && [ -f "$__object/parameter/after" ]; then - echo "Use either --before OR --after but not both." >&2 - exit 1 -fi +file="/$__object_id" +regex="" +state_should="present" +[ -f "$__object/parameter/file" ] && file=$(cat "$__object/parameter/file") +[ -f "$__object/parameter/regex" ] && regex=$(cat "$__object/parameter/regex") +[ -f "$__object/parameter/state" ] && state_should=$(cat "$__object/parameter/state") +[ -f "$__object/parameter/line" ] && line=$(cat "$__object/parameter/line") -state_should="$(cat "$__object/parameter/state")" state_is="$(cat "$__object/explorer/state")" -if [ "$state_should" = "$state_is" ]; then - # nothing to do - exit 0 -fi +[ "$state_should" = "$state_is" ] && exit 0 -if [ -f "$__object/parameter/before" ]; then - position="before" -elif [ -f "$__object/parameter/after" ]; then - position="after" -else - # By default we append to the end of the file. - position="end" -fi - -if [ -f "$__object/parameter/regex" ]; then - needle="regex" -else - needle="line" -fi - -if [ -f "$__object/parameter/file" ]; then - file="$(cat "$__object/parameter/file")" -else - file="/$__object_id" -fi - -add=0 -remove=0 case "$state_should" in - present) - if [ "$state_is" = "wrongposition" ]; then - echo updated >> "$__messages_out" - remove=1 - else - echo added >> "$__messages_out" - fi - add=1 - ;; - absent) - echo removed >> "$__messages_out" - remove=1 - ;; -esac + present) + if [ ! "$line" ]; then + echo "Required parameter \"line\" is missing" >&2 + exit 1 + fi -cat << DONE + #echo "echo \"$line\" >> $file" + #line_sanitised=$(cat "$__object/parameter/line" | sed 's/"/\"/g') + # Idea: replace ' in the string: + # '"'"' + # |------> ': end the string + # |-|---> "'": create ' in the output string + # |--> ': continue the string + # + # Replace all \ so \t and other combinations are not interpreted + # + + + # line_sanitised=$(cat "$__object/parameter/line" | sed -e "s/'/'\"'\"'/g" -e 's/\\/\\\\/g') + # The one above does not work: + # --line "PS1='[\t] \[\033[1m\]\h\[\033[0m\]:\w\\$ '" + # becomes + # PS1='[\\t] \\[\\033[1m\\]\\h\\[\\033[0m\\]:\\w\\$ ' + + # Only replace ' with '"'"' and keep \ as they are + line_sanitised=$(cat "$__object/parameter/line" | sed -e "s/'/'\"'\"'/g") + printf '%s' "printf '%s\n' '$line_sanitised' >> $file" + echo "added" >> "$__messages_out" + + ;; + absent) + if [ "$regex" -a "$line" ]; then + echo "Mutally exclusive parameters regex and line given for state absent" >&2 + exit 1 + fi + + greparg="" + if [ "$line" ]; then + regex="$line" + greparg="-F -x" + fi + + cat << eof tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX) # preserve ownership and permissions of existing file if [ -f "$file" ]; then cp -p "$file" "\$tmpfile" fi - -awk -v position="$position" -v needle="$needle" -v remove=$remove -v add=$add ' -function _find(_text, _pattern) { - if (needle == "regex") { - return match(_text, _pattern) - } else { - return index(_text, _pattern) - } -} -BEGIN { - line_file = ENVIRON["__object"] "/parameter/line" - getline line < line_file - # Need to close line file as it may be re-read as pattern below. - close(line_file) - getline pattern < (ENVIRON["__object"] "/parameter/" needle) - getline anchor < (ENVIRON["__object"] "/parameter/" position) -} -{ - if (remove) { - if (_find(\$0, pattern)) { - # skip over this line -> remove it - next - } - } - if (add) { - if (anchor && match(\$0, anchor)) { - if (position == "before") { - print line - print - } else if (position == "after") { - print - print line - } - next - } - } - print -} -END { - if (add && position == "end") { - print line - } -} -' "$file" > "\$tmpfile" +grep -v $greparg "$regex" '$file' > \$tmpfile || true mv -f "\$tmpfile" "$file" -DONE - -if [ -f "$__object/parameter/onchange" ]; then - cat "$__object/parameter/onchange" -fi +eof + echo "removed" >> "$__messages_out" + ;; + *) + echo "Unknown state: $state_should" >&2 + exit 1 + ;; +esac diff --git a/cdist/conf/type/__line/man.rst b/cdist/conf/type/__line/man.rst index f76cab64..b63ea2b3 100644 --- a/cdist/conf/type/__line/man.rst +++ b/cdist/conf/type/__line/man.rst @@ -13,104 +13,72 @@ This cdist type allows you to add lines and remove lines from files. REQUIRED PARAMETERS ------------------- -None. - OPTIONAL PARAMETERS ------------------- -after - Insert the given line after this pattern. +state + 'present' or 'absent', defaults to 'present' -before - Insert the given line before this pattern. +line + Specifies the line which should be absent or present + + Must be present, if state is present. + Must not be combined with regex, if state is absent. + +regex + If state is present, search for this pattern and add + given line, if the given regular expression does not match. + + In case of absent, ensure all lines matching the + regular expression are absent. + + The regular expression is interpreted by grep. + + Must not be combined with line, if state is absent. file If supplied, use this as the destination file. Otherwise the object_id is used. -line - Specifies the line which should be absent or present. - - Must be present, if state is 'present'. - Ignored if regex is given and state is 'absent'. - -regex - If state is 'present', search for this pattern and if it matches add - the given line. - - If state is 'absent', ensure all lines matching the regular expression - are absent. - - The regular expression is interpreted by awk's match function. - -state - 'present' or 'absent', defaults to 'present' - -onchange - The code to run if line is added, removed or updated. - - -BOOLEAN PARAMETERS ------------------- -None. - - MESSAGES -------- added - The line was added. - -updated - The line or its position was changed. + The line was added. removed - The line was removed. - + The line was removed. EXAMPLES -------- .. code-block:: sh - # Manage a hosts entry for www.example.com. - __line /etc/hosts \ - --line '127.0.0.2 www.example.com' + # Manage the DAEMONS line in rc.conf + __line daemons --file /etc/rc.conf --line 'DAEMONS=(hwclock !network sshd crond postfix)' - # Manage another hosts entry for test.example.com. - __line hosts:test.example.com \ - --file /etc/hosts \ - --line '127.0.0.3 test.example.com' + # Ensure the home mount is present in /etc/fstab - explicitly make it present + __line home-fstab \ + --file /etc/fstab \ + --line 'filer.fs:/vol/home /home nfs defaults 0 0' \ + --state present - # Remove the line starting with TIMEZONE from the /etc/rc.conf file. - __line legacy_timezone \ - --file /etc/rc.conf \ - --regex 'TIMEZONE=.*' \ - --state absent - - # Insert a line before another one. - __line password-auth-local:classify \ - --file /etc/pam.d/password-auth-local \ - --line '-session required pam_exec.so debug log=/tmp/classify.log /usr/local/libexec/classify' \ - --before '^session[[:space:]]+include[[:space:]]+password-auth-ac$' - - # Insert a line after another one. - __line password-auth-local:classify \ - --file /etc/pam.d/password-auth-local \ - --line '-session required pam_exec.so debug log=/tmp/classify.log /usr/local/libexec/classify' \ - --after '^session[[:space:]]+include[[:space:]]+password-auth-ac$' + # Removes the line specifiend in "include_www" from the file "lighttpd.conf" + __line legacy_timezone --file /etc/rc.conf --regex 'TIMEZONE=.*' --state absent SEE ALSO -------- -:strong:`cdist-type`\ (7) +:strong:`grep`\ (1) AUTHORS ------- -Steven Armstrong +Nico Schottelius COPYING ------- -Copyright \(C) 2018 Steven Armstrong. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). +Copyright \(C) 2012-2013 Nico Schottelius. You can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. diff --git a/cdist/conf/type/__line/parameter/default/state b/cdist/conf/type/__line/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__line/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__line/parameter/optional b/cdist/conf/type/__line/parameter/optional index 1c34c699..604a203e 100644 --- a/cdist/conf/type/__line/parameter/optional +++ b/cdist/conf/type/__line/parameter/optional @@ -1,7 +1,4 @@ -after -before +state +regex file line -regex -state -onchange diff --git a/cdist/conf/type/__link/explorer/state b/cdist/conf/type/__link/explorer/state index 7150df25..b8d8fc2b 100755 --- a/cdist/conf/type/__link/explorer/state +++ b/cdist/conf/type/__link/explorer/state @@ -32,9 +32,9 @@ destination_dir="${destination%/*}" case "$type" in symbolic) - cd "$destination_dir" || exit 1 + cd "$destination_dir" + source_is=$(ls -l "$destination" | sed 's/.*-> //g') if [ -h "$destination" ]; then - source_is=$(readlink "$destination") # ignore trailing slashes for comparison if [ "${source_is%/}" = "${source%/}" ]; then echo present @@ -46,19 +46,13 @@ case "$type" in fi ;; hard) - cd "$destination_dir" || exit 1 + cd "$destination_dir" # check source relative to destination_dir if [ ! -e "$source" ]; then echo sourcemissing exit 0 fi - # Currently not worth the effor to change it, stat is not defined by POSIX - # and different OSes has different implementations for it. - # shellcheck disable=SC2012 destination_inode=$(ls -i "$destination" | awk '{print $1}') - # Currently not worth the effor to change it, stat is not defined by POSIX - # and different OSes has different implementations for it. - # shellcheck disable=SC2012 source_inode=$(ls -i "$source" | awk '{print $1}') if [ "$destination_inode" -eq "$source_inode" ]; then echo present diff --git a/cdist/conf/type/__link/explorer/type b/cdist/conf/type/__link/explorer/type index b322bf42..579fd081 100755 --- a/cdist/conf/type/__link/explorer/type +++ b/cdist/conf/type/__link/explorer/type @@ -24,26 +24,23 @@ destination="/$__object_id" if [ ! -e "$destination" ]; then - echo none + echo none elif [ -h "$destination" ]; then - echo symlink + echo symlink elif [ -f "$destination" ]; then - type="$(cat "$__object/parameter/type")" - case "$type" in - hard) - # Currently not worth the effor to change it, stat is not defined by POSIX - # and different OSes has different implementations for it. - # shellcheck disable=SC2012 - link_count=$(ls -l "$destination" | awk '{ print $2 }') - if [ "$link_count" -gt 1 ]; then - echo hardlink - exit 0 - fi - ;; - esac - echo file + type="$(cat "$__object/parameter/type")" + case "$type" in + hard) + link_count=$(ls -l "$destination" | awk '{ print $2 }') + if [ $link_count -gt 1 ]; then + echo hardlink + exit 0 + fi + ;; + esac + echo file elif [ -d "$destination" ]; then - echo directory + echo directory else - echo unknown + echo unknown fi diff --git a/cdist/conf/type/__link/gencode-remote b/cdist/conf/type/__link/gencode-remote index 45c22fcc..4467fb8e 100755 --- a/cdist/conf/type/__link/gencode-remote +++ b/cdist/conf/type/__link/gencode-remote @@ -48,25 +48,21 @@ case "$state_should" in if [ "$file_type" = "directory" ]; then # our destination is currently a directory, delete it printf 'rm -rf "%s" &&\n' "$destination" - echo "removed '$destination' (directory)" >> "$__messages_out" else if [ "$state_is" = "wrongsource" ]; then # our destination is a symlink but points to the wrong source, # delete it printf 'rm -f "%s" &&\n' "$destination" - echo "removed '$destination' (wrongsource)" >> "$__messages_out" fi fi # create our link printf 'ln %s -f "%s" "%s"\n' "$lnopt" "$source" "$destination" - echo "created '$destination'" >> "$__messages_out" ;; absent) # only delete if it is a sym/hard link - if [ "$file_type" = "symlink" ] || [ "$file_type" = "hardlink" ]; then + if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then printf 'rm -f "%s"\n' "$destination" - echo "removed '$destination'" >> "$__messages_out" fi ;; *) diff --git a/cdist/conf/type/__link/man.rst b/cdist/conf/type/__link/man.rst index fe0ce425..9dc4665f 100644 --- a/cdist/conf/type/__link/man.rst +++ b/cdist/conf/type/__link/man.rst @@ -27,22 +27,6 @@ state 'present' or 'absent', defaults to 'present' -MESSAGES --------- - -created - Link to destination was created. - -removed - Link to destination was removed. - -removed (directory) - Destination was removed because state is ``present`` and destination was directory. - -removed (wrongsource) - Destination was removed because state is ``present`` and destination link source was wrong. - - EXAMPLES -------- diff --git a/cdist/conf/type/__locale/gencode-remote b/cdist/conf/type/__locale/gencode-remote index 1feb9884..04e48712 100755 --- a/cdist/conf/type/__locale/gencode-remote +++ b/cdist/conf/type/__locale/gencode-remote @@ -1,6 +1,6 @@ #!/bin/sh -e # -# 2013-2019 Nico Schottelius (nico-cdist at schottelius.org) +# 2013 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -37,15 +37,6 @@ locale_remove=$(echo "$locale" | sed 's/UTF-8/utf8/') state=$(cat "$__object/parameter/state") -os=$(cat "$__global/explorer/os") - -# Nothing to be done on alpine -case "$os" in - alpine) - exit 0 - ;; -esac - case "$state" in present) echo localedef -A "$alias" -f "$charmap" -i "$input" "$locale" diff --git a/cdist/conf/type/__locale/man.rst b/cdist/conf/type/__locale/man.rst index e36ab061..60a4eacc 100644 --- a/cdist/conf/type/__locale/man.rst +++ b/cdist/conf/type/__locale/man.rst @@ -8,8 +8,7 @@ cdist-type__locale - Configure locales DESCRIPTION ----------- -This cdist type allows you to setup locales. On systems that don't -support locale setting like alpine/musl libc, it is a no-op. +This cdist type allows you to setup locales. OPTIONAL PARAMETERS @@ -45,6 +44,6 @@ Nico Schottelius COPYING ------- -Copyright \(C) 2013-2019 Nico Schottelius. Free use of this software is +Copyright \(C) 2013-2016 Nico Schottelius. Free use of this software is granted under the terms of the GNU General Public License version 3 or later (GPLv3+). diff --git a/cdist/conf/type/__locale/manifest b/cdist/conf/type/__locale/manifest index 9f1e17ac..cacd0b42 100755 --- a/cdist/conf/type/__locale/manifest +++ b/cdist/conf/type/__locale/manifest @@ -1,6 +1,6 @@ #!/bin/sh -e # -# 2013-2019 Nico Schottelius (nico-cdist at schottelius.org) +# 2013-2015 Nico Schottelius (nico-cdist at schottelius.org) # 2015 David Hürlimann (david at ungleich.ch) # # This file is part of cdist. @@ -19,7 +19,7 @@ # along with cdist. If not, see . # # -# Install required packages +# Install required packages # os=$(cat "$__global/explorer/os") @@ -30,7 +30,7 @@ case "$os" in # Debian needs a seperate package __package locales --state present ;; - archlinux|suse|ubuntu|scientific|centos|alpine) + archlinux|suse|ubuntu|scientific|centos) : ;; *) diff --git a/cdist/conf/type/__mount/gencode-remote b/cdist/conf/type/__mount/gencode-remote index b2096764..66d85f88 100755 --- a/cdist/conf/type/__mount/gencode-remote +++ b/cdist/conf/type/__mount/gencode-remote @@ -39,7 +39,7 @@ case "$state_should" in printf ' -o %s' "$(cat "$__object/parameter/options")" fi printf ' %s' "$(cat "$__object/parameter/device")" - printf ' %s\n' "$path" + printf " %s\n" "$path" else # mount using existing fstab entry printf 'mount "%s"\n' "$path" diff --git a/cdist/conf/type/__mount/manifest b/cdist/conf/type/__mount/manifest index 999d806c..73937899 100755 --- a/cdist/conf/type/__mount/manifest +++ b/cdist/conf/type/__mount/manifest @@ -31,7 +31,7 @@ printf " %s" "$type" options="$(cat "$__object/parameter/options")" printf " %s" "$options" printf " %s" "$(cat "$__object/parameter/dump")" -printf ' %s\n' "$(cat "$__object/parameter/pass")" +printf " %s\n" "$(cat "$__object/parameter/pass")" ) | \ __block "$__object_name" \ --file "/etc/fstab" \ diff --git a/cdist/conf/type/__package/explorer/pkgng_exists b/cdist/conf/type/__package/explorer/pkgng_exists index 6d69ba14..355c5d65 100755 --- a/cdist/conf/type/__package/explorer/pkgng_exists +++ b/cdist/conf/type/__package/explorer/pkgng_exists @@ -21,7 +21,7 @@ # Retrieve the status of a package - parsed dpkg output # -if [ "$("$__explorer/os")" = "freebsd" ]; then +if [ "$($__explorer/os)" = "freebsd" ]; then command -v pkg fi diff --git a/cdist/conf/type/__package/manifest b/cdist/conf/type/__package/manifest index a453c32b..fe7abedc 100755 --- a/cdist/conf/type/__package/manifest +++ b/cdist/conf/type/__package/manifest @@ -1,7 +1,6 @@ #!/bin/sh -e # # 2011-2013 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -45,7 +44,6 @@ else suse) type="zypper" ;; openwrt) type="opkg" ;; openbsd) type="pkg_openbsd" ;; - alpine) type="apk" ;; *) echo "Don't know how to manage packages on: $os" >&2 exit 1 @@ -57,8 +55,8 @@ state="$(cat "$__object/parameter/state")" set -- "$@" "$__object_id" "--state" "$state" cd "$__object/parameter" -for property in *; do - if [ "$property" != "type" ] && [ "$property" != "state" ]; then +for property in $(ls .); do + if [ "$property" != "type" -a "$property" != "state" ]; then set -- "$@" "--$property" "$(cat "$property")" fi done diff --git a/cdist/conf/type/__package_apk/gencode-remote b/cdist/conf/type/__package_apk/gencode-remote deleted file mode 100755 index 79e3d2b6..00000000 --- a/cdist/conf/type/__package_apk/gencode-remote +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -e -# -# 2019 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Manage packages on Debian and co. -# - -if [ -f "$__object/parameter/name" ]; then - name="$(cat "$__object/parameter/name")" -else - name="$__object_id" -fi - -state_should="$(cat "$__object/parameter/state")" -state_is="$(cat "$__object/explorer/state")" - -# Nothing to be done -[ "$state_is" = "$state_should" ] && exit 0 - -case "$state_should" in - present) - echo "apk add -q '$name'" - echo "installed" >> "$__messages_out" - ;; - absent) - echo "apk del -q '$name'" - echo "removed" >> "$__messages_out" - ;; - *) - echo "Unknown state: $state_should" >&2 - exit 1 - ;; -esac diff --git a/cdist/conf/type/__package_apk/man.rst b/cdist/conf/type/__package_apk/man.rst deleted file mode 100644 index bc2408b4..00000000 --- a/cdist/conf/type/__package_apk/man.rst +++ /dev/null @@ -1,55 +0,0 @@ -cdist-type__package_akp(7) -========================== - -NAME ----- -cdist-type__package_akp - Manage packages with akp - - -DESCRIPTION ------------ -apk is usually used on Alpine to manage packages. - - -REQUIRED PARAMETERS -------------------- -None - - -OPTIONAL PARAMETERS -------------------- -name - If supplied, use the name and not the object id as the package name. - -state - Either "present" or "absent", defaults to "present" - - -EXAMPLES --------- - -.. code-block:: sh - - # Ensure zsh in installed - __package_apk zsh --state present - - # Remove package - __package_apk apache2 --state absent - - -SEE ALSO --------- -:strong:`cdist-type__package`\ (7) - - -AUTHORS -------- -Nico Schottelius - - -COPYING -------- -Copyright \(C) 2019 Nico Schottelius. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__package_apk/nonparallel b/cdist/conf/type/__package_apk/nonparallel deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__package_apk/parameter/default/state b/cdist/conf/type/__package_apk/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__package_apk/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__package_apk/parameter/optional b/cdist/conf/type/__package_apk/parameter/optional deleted file mode 100644 index 1b423dc4..00000000 --- a/cdist/conf/type/__package_apk/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -name -state diff --git a/cdist/conf/type/__package_apt/explorer/state b/cdist/conf/type/__package_apt/explorer/state index 7ccd6fce..658429ac 100755 --- a/cdist/conf/type/__package_apt/explorer/state +++ b/cdist/conf/type/__package_apt/explorer/state @@ -30,7 +30,7 @@ fi # Except dpkg failing, if package is not known / installed packages="$(apt-cache showpkg "$name" | sed -e "1,/Reverse Provides:/d" | cut -d ' ' -f 1) $name" for p in $packages; do - if dpkg -s "$p" 2>/dev/null | grep --quiet "^Status: install ok installed$" ; then + if [ -n "$(dpkg -s "$p" 2>/dev/null | grep "^Status: install ok installed$")" ]; then version=$(dpkg -s "$p" 2>/dev/null | grep "^Version:" | cut -d ' ' -f 2) echo "present $p $version" exit 0 diff --git a/cdist/conf/type/__package_apt/gencode-remote b/cdist/conf/type/__package_apt/gencode-remote index 699eb0c9..d9cc52b7 100755 --- a/cdist/conf/type/__package_apt/gencode-remote +++ b/cdist/conf/type/__package_apt/gencode-remote @@ -77,12 +77,10 @@ case "$state_should" in if [ -n "$version" ]; then name="${name}=${version}" fi - echo "$aptget install $target_release '$name'" - echo "installed" >> "$__messages_out" + echo $aptget install $target_release \"$name\" ;; absent) - echo "$aptget remove $purgeparam '$name'" - echo "removed" >> "$__messages_out" + echo $aptget remove $purgeparam \"$name\" ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__package_emerge/explorer/pkg_version b/cdist/conf/type/__package_emerge/explorer/pkg_version index d02b9d6b..7053eaff 100644 --- a/cdist/conf/type/__package_emerge/explorer/pkg_version +++ b/cdist/conf/type/__package_emerge/explorer/pkg_version @@ -32,5 +32,4 @@ else name="$__object_id" fi -# shellcheck disable=SC2016 equery -q l -F '$cp $fullversion' "$name" || true diff --git a/cdist/conf/type/__package_emerge/gencode-remote b/cdist/conf/type/__package_emerge/gencode-remote index e1b85ebb..6abe2d61 100755 --- a/cdist/conf/type/__package_emerge/gencode-remote +++ b/cdist/conf/type/__package_emerge/gencode-remote @@ -38,13 +38,13 @@ fi pkg_version="$(cat "$__object/explorer/pkg_version")" if [ -z "$pkg_version" ]; then state_is="absent" -elif [ -z "$version" ] && [ "$(echo "$pkg_version" | wc -l)" -gt 1 ]; then - echo "Package name is not unique! The following packages are installed:" >&2 - echo "$pkg_version" >&2 +elif [ -z "$version" -a $(echo "$pkg_version" | wc -l) -gt 1 ]; then + echo "Package name is not unique! The following packages are installed:" + echo "$pkg_version" exit 1 -elif [ -n "$version" ] && [ "$(echo "$pkg_version" | cut -d " " -f 1 | sort | uniq | wc -l)" -gt 1 ]; then - echo "Package name is not unique! The following packages are installed:" >&2 - echo "$pkg_version" >&2 +elif [ -n "$version" -a $(echo "$pkg_version" | cut -d " " -f 1 | sort | uniq | wc -l) -gt 1 ]; then + echo "Package name is not unique! The following packages are installed:" + echo "$pkg_version" exit 1 else state_is="present" @@ -57,18 +57,16 @@ fi # Exit if nothing is needed to be done -[ "$state_is" = "$state_should" ] && { [ -z "$version" ] || [ "$installed_version" = "$version" ]; } && exit 0 -[ "$state_should" = "absent" ] && [ -n "$version" ] && [ "$installed_version" != "$version" ] && exit 0 +[ "$state_is" = "$state_should" ] && ( [ -z "$version" ] || [ "$installed_version" = "$version" ] ) && exit 0 +[ "$state_should" = "absent" ] && [ ! -z "$version" ] && [ "$installed_version" != "$version" ] && exit 0 case "$state_should" in present) - echo "emerge '$name' &>/dev/null || exit 1" - echo "installed" >> "$__messages_out" + echo "emerge \"$name\" &>/dev/null || exit 1" ;; absent) - echo "emerge -C '$name' &>/dev/null || exit 1" - echo "removed" >> "$__messages_out" + echo "emerge -C \"$name\" &>/dev/null || exit 1" ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__package_emerge_dependencies/gencode-remote b/cdist/conf/type/__package_emerge_dependencies/gencode-remote index f3e6f76e..face898a 100755 --- a/cdist/conf/type/__package_emerge_dependencies/gencode-remote +++ b/cdist/conf/type/__package_emerge_dependencies/gencode-remote @@ -6,11 +6,10 @@ flaggie_installed="$(cat "$__object/explorer/flaggie_installed")" if [ "${gentoolkit_installed}" != "true" ]; then # emerge app-portage/gentoolkit echo "emerge app-portage/gentoolkit &> /dev/null || exit 1" - echo "installed app-portage/gentoolkit" >> "$__messages_out" fi if [ "${flaggie_installed}" != "true" ]; then # emerge app-portage/flaggie echo "emerge app-portage/flaggie &> /dev/null || exit 1" - echo "installed app-portage/flaggie" >> "$__messages_out" fi + diff --git a/cdist/conf/type/__package_luarocks/explorer/pkg_status b/cdist/conf/type/__package_luarocks/explorer/pkg_status index e83e8ce6..3eb73298 100755 --- a/cdist/conf/type/__package_luarocks/explorer/pkg_status +++ b/cdist/conf/type/__package_luarocks/explorer/pkg_status @@ -28,4 +28,4 @@ else fi # Accept luarocks failing if package is not known/installed -luarocks list "$name" | grep -E -A1 "^$name$" || exit 0 +luarocks list "$name" | egrep -A1 "^$name$" || exit 0 diff --git a/cdist/conf/type/__package_luarocks/gencode-remote b/cdist/conf/type/__package_luarocks/gencode-remote index d83b3c3a..cae06b22 100755 --- a/cdist/conf/type/__package_luarocks/gencode-remote +++ b/cdist/conf/type/__package_luarocks/gencode-remote @@ -42,12 +42,10 @@ fi case "$state_should" in present) - echo "luarocks install '$name'" - echo "installed" >> "$__messages_out" + echo luarocks install \"$name\" ;; absent) - echo "luarocks remove '$name'" - echo "removed" >> "$__messages_out" + echo luarocks remove \"$name\" ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__package_opkg/gencode-remote b/cdist/conf/type/__package_opkg/gencode-remote index 269d5f49..09fe69a4 100755 --- a/cdist/conf/type/__package_opkg/gencode-remote +++ b/cdist/conf/type/__package_opkg/gencode-remote @@ -43,17 +43,15 @@ esac case "$state_should" in present) if [ "$present" = "notpresent" ]; then - echo "opkg --verbosity=0 update" + echo opkg --verbosity=0 update fi - echo "opkg --verbosity=0 install '$name'" - echo "installed" >> "$__messages_out" + echo opkg --verbosity=0 install \"$name\" ;; absent) - echo "opkg --verbosity=0 remove '$name'" - echo "removed" >> "$__messages_out" + echo opkg --verbosity=0 remove \"$name\" ;; *) - echo "Unknown state: ${state_should}" >&2 + echo "Unknown state: $state" >&2 exit 1 ;; esac diff --git a/cdist/conf/type/__package_pacman/gencode-remote b/cdist/conf/type/__package_pacman/gencode-remote index 2e076ec3..69a5d62a 100755 --- a/cdist/conf/type/__package_pacman/gencode-remote +++ b/cdist/conf/type/__package_pacman/gencode-remote @@ -45,12 +45,10 @@ fi case "$state_should" in present) - echo "pacman --needed --noconfirm --noprogressbar -S '$name'" - echo "installed" >> "$__messages_out" + echo pacman --needed --noconfirm --noprogressbar -S \"$name\" ;; absent) - echo "pacman --noconfirm --noprogressbar -R '$name'" - echo "removed" >> "$__messages_out" + echo pacman --noconfirm --noprogressbar -R \"$name\" ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__package_pip/gencode-remote b/cdist/conf/type/__package_pip/gencode-remote index dcc4fdf9..933406f2 100755 --- a/cdist/conf/type/__package_pip/gencode-remote +++ b/cdist/conf/type/__package_pip/gencode-remote @@ -53,20 +53,18 @@ case "$state_should" in present) if [ "$runas" ] then - echo "su -c '$pip install -q $name' $runas" + echo "su -c \"$pip install -q $name\" $runas" else echo $pip install -q "$name" fi - echo "installed" >> "$__messages_out" ;; absent) if [ "$runas" ] then - echo "su -c '$pip uninstall -q -y $name' $runas" + echo "su -c \"$pip uninstall -q -y $name\" $runas" else echo $pip uninstall -q -y "$name" fi - echo "removed" >> "$__messages_out" ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__package_pkg_freebsd/explorer/pkg_version b/cdist/conf/type/__package_pkg_freebsd/explorer/pkg_version index 0a1ab75c..1335ba79 100755 --- a/cdist/conf/type/__package_pkg_freebsd/explorer/pkg_version +++ b/cdist/conf/type/__package_pkg_freebsd/explorer/pkg_version @@ -30,7 +30,7 @@ fi # Don't produce "no pkgs installed" output -- breaks things PKG_OUTPUT=$(pkg_info 2>&1) if [ ! "$PKG_OUTPUT" = "pkg_info: no packages installed" ]; then - printf "%s" "$(echo "$PKG_OUTPUT" \ + echo -n "$(echo "$PKG_OUTPUT" \ | awk '{print $1}' \ | sed 's/^\(.*\)-\([^-]*\)$/name:\1 ver:\2/g' \ | grep "name:$name ver:" \ diff --git a/cdist/conf/type/__package_pkg_freebsd/gencode-remote b/cdist/conf/type/__package_pkg_freebsd/gencode-remote index 3f88f6bc..b51c3153 100755 --- a/cdist/conf/type/__package_pkg_freebsd/gencode-remote +++ b/cdist/conf/type/__package_pkg_freebsd/gencode-remote @@ -33,13 +33,12 @@ assert () # If condition false, lineno=$2 - if [ ! "$1" ] + if [ ! $1 ] then echo "Assertion failed: \"$1\"" - # shellcheck disable=SC2039 echo "File \"$0\", line $lineno, called by $(caller 0)" exit $E_ASSERT_FAILED - fi + fi } # Debug @@ -67,7 +66,7 @@ cmd="" # FIXME: This is ugly. execcmd(){ # Set the PACKAGESITE if we're ADDing a new package - if [ "$1" = "add" ] && [ -n "$pkgsite" ]; then + if [ "$1" = "add" -a -n "$pkgsite" ]; then # Use http.../All/ if we know the exact version we want, use .../Latest/ otherwise pkgsite="export PACKAGESITE=${pkgsite}" [ -n "$version" ] && pkgsite="${pkgsite}/All/" || pkgsite="${pkgsite}/Latest/" @@ -89,7 +88,6 @@ if [ -n "$curr_version" ]; then # PKG *is* installed cmd="${rm_cmd} ${name}-${curr_version}" fi execcmd "remove" "${cmd}" - echo "removed" >> "$__messages_out" exit 0 else # Should be installed if [ -n "$version" ]; then # Want a specific version @@ -97,13 +95,11 @@ if [ -n "$curr_version" ]; then # PKG *is* installed exit 0 else # Current version is wrong, fix #updatepkg "$name" "$version" - # shellcheck disable=SC2039 assert "! ${version} = ${curr_version}" $LINENO cmd="${rm_cmd} ${name}-${curr_version}" execcmd "remove" "${cmd}" cmd="${add_cmd} -r ${name}-${version}" execcmd "add" "${cmd}" - echo "installed" >> "$__messages_out" fi else # Don't care what version to use exit 0 @@ -122,7 +118,6 @@ else # PKG *isn't* installed cmd="${cmd}-${version}" fi execcmd "add" "${cmd}" - echo "installed" >> "$__messages_out" exit 0 fi fi diff --git a/cdist/conf/type/__package_pkg_openbsd/explorer/pkg_state b/cdist/conf/type/__package_pkg_openbsd/explorer/pkg_state deleted file mode 100755 index 9cd17787..00000000 --- a/cdist/conf/type/__package_pkg_openbsd/explorer/pkg_state +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# Copyright 2018, Takashi Yoshi -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Retrieve the status of a package - parsed pkg_info output -# - -if [ -f "${__object}/parameter/name" ] -then - pkgid="$(cat "${__object}/parameter/name")" -else - pkgid="${__object_id}" -fi - -if [ -f "${__object}/parameter/version" ] -then - pkgid="${pkgid}-$(cat "${__object}/parameter/version")" -fi - -if [ -f "${__object}/parameter/flavor" ] -then - # If a flavor but no version is given we need to add another -, - # otherwise pkg_info confuses the flavor with the version. - [ -f "${__object}/parameter/version" ] || pkgid="${pkgid}-" - - pkgid="${pkgid}-$(cat "${__object}/parameter/flavor")" -fi - - -pkg_info -q -I "inst:${pkgid}" >/dev/null 2>&1 \ - && echo 'present' || echo 'absent' - -exit 0 diff --git a/cdist/conf/type/__package_apk/explorer/state b/cdist/conf/type/__package_pkg_openbsd/explorer/pkg_version similarity index 70% rename from cdist/conf/type/__package_apk/explorer/state rename to cdist/conf/type/__package_pkg_openbsd/explorer/pkg_version index b477ca7c..212f0d96 100755 --- a/cdist/conf/type/__package_apk/explorer/state +++ b/cdist/conf/type/__package_pkg_openbsd/explorer/pkg_version @@ -1,6 +1,7 @@ #!/bin/sh # -# 2019 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Andi Brönnimann (andi-cdist at v-net.ch) +# Copyright 2017, Philippe Gregoire # # This file is part of cdist. # @@ -18,7 +19,7 @@ # along with cdist. If not, see . # # -# Retrieve the status of a package - parsed apk output +# Retrieve the status of a package - parsed dpkg output # if [ -f "$__object/parameter/name" ]; then @@ -27,12 +28,5 @@ else name="$__object_id" fi -# Remove the @.. repo tag for finding out whether it is installed -# f.i. pass@testing => pass -name="$(echo "$name" | sed 's/@.*//')" - -if [ "$(apk list -I "$name")" ]; then - echo present -else - echo absent -fi +#TODO: Is there a better way? +pkg_info | grep "^$name-[0-9]" | sed 's|.*\(-[0-9][0-9.]*\).*|\1|' | sed 's/-//' diff --git a/cdist/conf/type/__package_pkg_openbsd/gencode-remote b/cdist/conf/type/__package_pkg_openbsd/gencode-remote index 5a21ce12..4a6763cd 100755 --- a/cdist/conf/type/__package_pkg_openbsd/gencode-remote +++ b/cdist/conf/type/__package_pkg_openbsd/gencode-remote @@ -2,7 +2,6 @@ # # 2011 Andi Brönnimann (andi-cdist at v-net.ch) # 2012 Nico Schottelius (nico-cdist at schottelius.org) -# 2018 Takashi Yoshi # # This file is part of cdist. # @@ -23,96 +22,105 @@ # Manage packages with pkg on OpenBSD # -os_version=$(cat "${__global}/explorer/os_version") -machine=$(cat "${__global}/explorer/machine") +# Debug +# exec >&2 +# set -x -if [ -f "${__object}/parameter/version" ]; then - version=$(cat "${__object}/parameter/version") +os_version="$(cat "$__global/explorer/os_version")" +machine="$(cat "$__global/explorer/machine")" + +if [ -f "$__object/parameter/version" ]; then + version="$(cat "$__object/parameter/version")" fi -if [ -f "${__object}/parameter/flavor" ]; then - flavor=$(cat "${__object}/parameter/flavor") +if [ -f "$__object/parameter/flavor" ]; then + flavor="$(cat "$__object/parameter/flavor")" fi -# Do not show progress bar -pkgopts='-x' +# do not show progress bar +pkgopts="-x" -name="${__object_id}" -if [ -f "${__object}/parameter/name" ]; then - name=$(cat "${__object}/parameter/name") -fi - -if [ -n "${version}" ] && [ -n "${flavor}" ]; then - pkgid="${name}-${version}-${flavor}" -elif [ -n "${version}" ]; then - pkgid="${name}-${version}" -elif [ -f "${__object}/parameter/flavor" ]; then - pkgid="${name}--${flavor}" +if [ -f "$__object/parameter/name" ]; then + name=$(cat "$__object/parameter/name") else - pkgid="${name}" + name="$__object_id" fi -state_should=$(cat "${__object}/parameter/state") - -if [ -f "${__object}/parameter/pkg_path" ]; then - pkg_path=$(cat "${__object}/parameter/pkg_path") +if [ -n "$version" -a -n "$flavor" ]; then + pkgid="$name-$version-$flavor" +elif [ -n "$version" ]; then + pkgid="$name-$version" +elif [ -n "$flavor" ]; then + pkgid="$name--$flavor" +elif [ -f "$__object/parameter/flavor" ]; then + pkgid="$name--" else - has_installurl=$(cat "${__object}/explorer/has_installurl") - if [ 'yes' != "${has_installurl}" ]; then - # There is no default PKG_PATH, try to provide one - pkg_path="ftp://ftp.openbsd.org/pub/OpenBSD/${os_version}/packages/${machine}/" - fi + pkgid="$name" fi -state_is=$(cat "${__object}/explorer/pkg_state") -[ "${state_is}" = "${state_should}" ] && exit 0 +state_should="$(cat "$__object/parameter/state")" -case "${state_should}" in - present) - if [ -n "${pkg_path}" ]; then - echo "export PKG_PATH='${pkg_path}'" - fi +pkg_version="$(cat "$__object/explorer/pkg_version")" - # Use this because pkg_add doesn't properly handle errors - cat <&1 || true) +if [ -f "$__object/parameter/pkg_path" ]; then + pkg_path="$(cat "$__object/parameter/pkg_path")" +else + has_installurl=$(cat "${__object}/explorer/has_installurl") + if [ Xyes != X"${has_installurl}" ]; then + # there is no default PKG_PATH, try to provide one + pkg_path="ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$machine/" + fi +fi -if ! pkg_info -q -I 'inst:${pkgid}' | grep -q '^${name}-${version}.*${flavor}$' 2>/dev/null -then - # We didn't find the package in the list of 'installed packages', so it failed. - # This is necessary because pkg_add doesn't return properly - - if [ -z "\${status}" ]; then - status='Failed to add package, uncaught exception.' - fi - echo "Error: \${status}" >&2 - exit 1 +if [ "$pkg_version" ]; then + state_is="present" +else + state_is="absent" fi -EOF - echo 'installed' >> "${__messages_out}" - ;; - absent) - # Use this because pkg_delete doesn't properly handle errors - cat <&1 || true) +[ "$state_is" = "$state_should" ] && exit 0 -if pkg_info -q -I 'inst:${pkgid}' | grep -q '^${name}-${version}.*${flavor}' 2>/dev/null -then - # We found the package in the list of 'installed packages'. - # This would indicate that pkg_delete failed, send the output of pkg_delete - - if [ -z "\${status}" ]; then - status='Failed to remove package, uncaught exception.' - fi - echo "Error: \${status}" >&2 - exit 1 +case "$state_should" in + present) + # use this because pkg_add doesn't properly handle errors + cat << eof +if [ X != X"${pkg_path}" ]; then + PKG_PATH="${pkg_path}"; export PKG_PATH fi -EOF - echo 'removed' >> "${__messages_out}" - ;; - *) - echo "Unknown state: ${state_should}" >&2 +status=\$(pkg_add "$pkgopts" "$pkgid" 2>&1) +pkg_info | grep "^${name}.*${version}.*${flavor}" > /dev/null 2>&1 + +# We didn't find the package in the list of 'installed packages', so it failed +# This is necessary because pkg_add doesn't return properly +if [ \$? -ne 0 ]; then + if [ -z "\${status}" ]; then + status="Failed to add package, uncaught exception." + fi + echo "Error: \$status" + exit 1 +fi +eof + ;; + + absent) + # use this because pkg_add doesn't properly handle errors + cat << eof +status=\$(pkg_delete "$pkgopts" "$pkgid") +pkg_info | grep "^${name}.*${version}.*${flavor}" > /dev/null 2>&1 + +# We found the package in the list of 'installed packages' +# This would indicate that pkg_delete failed, send the output of pkg_delete +if [ \$? -eq 0 ]; then + if [ -z "\${status}" ]; then + status="Failed to remove package, uncaught exception." + fi + echo "Error: \$status" + exit 1 +fi +eof + ;; + *) + echo "Unknown state: $state_should" >&2 exit 1 - ;; + ;; esac diff --git a/cdist/conf/type/__package_pkgng_freebsd/explorer/pkg_version b/cdist/conf/type/__package_pkgng_freebsd/explorer/pkg_version index 92ce0623..947857b9 100755 --- a/cdist/conf/type/__package_pkgng_freebsd/explorer/pkg_version +++ b/cdist/conf/type/__package_pkgng_freebsd/explorer/pkg_version @@ -29,7 +29,7 @@ fi # Don't produce "no pkgs installed" output -- breaks things PKG_OUTPUT=$(pkg info 2>&1) -printf "%s" "$(echo "$PKG_OUTPUT" \ +echo -n "$(echo "$PKG_OUTPUT" \ | awk '{print $1}' \ | sed 's/^\(.*\)-\([^-]*\)$/name:\1 ver:\2/g' \ | grep "name:$name ver:" \ diff --git a/cdist/conf/type/__package_pkgng_freebsd/gencode-remote b/cdist/conf/type/__package_pkgng_freebsd/gencode-remote index dd36efda..d21e9e2a 100755 --- a/cdist/conf/type/__package_pkgng_freebsd/gencode-remote +++ b/cdist/conf/type/__package_pkgng_freebsd/gencode-remote @@ -52,20 +52,17 @@ cmd="" # Parms: $1 -- mode, "rm", "add", or "upg" # $2 -- the command to be echoed execcmd(){ - _cmd="" + local _cmd="" case "$1" in add) _cmd="${add_cmd} $2" - echo "installed" >> "$__messages_out" ;; rm) _cmd="${rm_cmd} $2" - echo "removed" >> "$__messages_out" ;; upg) _cmd="${upg_cmd} $2" - echo "installed" >> "$__messages_out" ;; *) printf "Error. Don't understand command: %s" "$1" >&2 @@ -98,7 +95,7 @@ if [ -n "$curr_version" ]; then # PKG *is* installed if [ "$upgrade" = "true" ]; then execcmd "upg" "${cmd}" else - printf 'Version %s is already installed and pkg-ng cannot upgrade directly to version %s.\nTo upgrade to the latest version, use the --upgrade flag.\n' "$curr_version" "$version" >&2 + printf "Version %s is already installed and pkg-ng can't upgrade directly to version %s.\nTo upgrade to the latest version, use the --upgrade flag.\n" "$curr_version" "$version" >&2 exit 1 fi # PKG is supposed to be installed to the latest version diff --git a/cdist/conf/type/__package_rubygem/gencode-remote b/cdist/conf/type/__package_rubygem/gencode-remote index abb40653..6d793ac0 100755 --- a/cdist/conf/type/__package_rubygem/gencode-remote +++ b/cdist/conf/type/__package_rubygem/gencode-remote @@ -39,12 +39,10 @@ fi case "$state_should" in present) - echo "gem install '$name' --no-ri --no-rdoc" - echo "installed" >> "$__messages_out" + echo gem install \"$name\" --no-ri --no-rdoc ;; absent) - echo "gem uninstall '$name'" - echo "removed" >> "$__messages_out" + echo gem uninstall \"$name\" ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__package_update_index/explorer/currage b/cdist/conf/type/__package_update_index/explorer/currage index cfb778d5..cd042bd5 100644 --- a/cdist/conf/type/__package_update_index/explorer/currage +++ b/cdist/conf/type/__package_update_index/explorer/currage @@ -17,27 +17,18 @@ # You should have received a copy of the GNU General Public License # along with cdist. If not, see . -type="$("$__type_explorer/type")" +os="$("$__explorer/os")" -case "$type" in - apt) +case "$os" in + debian|ubuntu|devuan) if [ -f "/var/cache/apt/pkgcache.bin" ]; then echo $(($(date +"%s")-$(stat --format '%Y' /var/cache/apt/pkgcache.bin))) else echo 0 fi ;; - pacman) - if [ -d "/var/lib/pacman/sync" ]; then - echo $(($(date +"%s")-$(stat --format '%Y' /var/lib/pacman/sync))) - else - echo 0 - fi - ;; - alpine) - echo 0 - ;; - *) echo "Your specified type ($type) is currently not supported." >&2 + *) echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 echo "Please contribute an implementation for it if you can." >&2 + exit 1 ;; esac diff --git a/cdist/conf/type/__package_update_index/explorer/type b/cdist/conf/type/__package_update_index/explorer/type deleted file mode 100644 index c98e1e67..00000000 --- a/cdist/conf/type/__package_update_index/explorer/type +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -# -# 2018 Stu Zhao (z12y12l12 at gmail.com) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -if [ -f "$__object/parameter/type" ]; then - cat "$__object/parameter/type" -else - # By default determine package manager based on operating system - os="$("$__explorer/os")" - case "$os" in - amazon|scientific|centos|fedora|redhat) echo "yum" ;; - debian|ubuntu|devuan) echo "apt" ;; - archlinux) echo "pacman" ;; - alpine) echo "apk" ;; - *) - echo "Don't know how to manage packages on: $os" >&2 - exit 1 - ;; - esac -fi diff --git a/cdist/conf/type/__package_update_index/gencode-remote b/cdist/conf/type/__package_update_index/gencode-remote index 9b2ecba2..37bfe7ab 100755 --- a/cdist/conf/type/__package_update_index/gencode-remote +++ b/cdist/conf/type/__package_update_index/gencode-remote @@ -21,38 +21,49 @@ # Update the package index with the appropriate package manager # -type=$(cat "$__object/explorer/type") -currage="$(cat "$__object/explorer/currage")" +type="$__object/parameter/type" if [ -f "$__object/parameter/maxage" ]; then maxage="$(cat "$__object/parameter/maxage")" + currage="$(cat "$__object/explorer/currage")" fi -if [ -n "$maxage" ]; then - if [ "$type" != "apt" ] && [ "$type" != "pacman" ]; then - echo "ERROR: \"--maxage\" only supported for \"apt\" or \"pacman\" pkg-manager." >&2 - exit 1 - elif [ "$currage" -lt "$maxage" ]; then - exit 0 # no need to update - fi +if [ -f "$type" ]; then + type="$(cat "$type")" +else + # By default determine package manager based on operating system + os="$(cat "$__global/explorer/os")" + case "$os" in + amazon|scientific|centos|fedora|redhat) type="yum" ;; + debian|ubuntu|devuan) type="apt" ;; + archlinux) type="pacman" ;; + *) + echo "Don't know how to manage packages on: $os" >&2 + exit 1 + ;; + esac fi +if [ -n "$maxage" ] && [ "$type" != "apt" ]; then + echo "ERROR: \"--maxage\" only supported for \"apt\" pkg-manager." >&2 + exit 1 +fi case "$type" in yum) ;; - apt) - echo "apt-get --quiet update" - echo "apt-cache updated (age was: $currage)" >> "$__messages_out" - ;; - pacman) - echo "pacman --noprogressbar --sync --refresh" - echo "pacman package database synced (age was: $currage)" >> "$__messages_out" - ;; - alpine) - echo "apk update" - echo "apk package database updated." - ;; + apt) if [ -n "$maxage" ]; then + ## check if we need to update: + if [ $currage -ge $maxage ]; then + echo "apt-get --quiet update" + echo "apt-cache updated (age was: $currage)" >> "$__messages_out" + fi + else + echo "apt-get --quiet update" + echo "apt-cache updated (age was: $currage)" >> "$__messages_out" + fi + ;; + pacman) echo "pacman --noprogressbar --sync --refresh" ;; *) - echo "Don't know how to manage packages for type: $type" >&2 + echo "Don't know how to manage packages on: $os" >&2 exit 1 ;; esac diff --git a/cdist/conf/type/__package_update_index/man.rst b/cdist/conf/type/__package_update_index/man.rst index 3cd787b9..b63af654 100644 --- a/cdist/conf/type/__package_update_index/man.rst +++ b/cdist/conf/type/__package_update_index/man.rst @@ -28,8 +28,8 @@ type * pacman for Arch Linux maxage - Available for package manager apt and pacman, max time in seconds since - last update. Repo update is skipped if maxage is not reached yet. + Available for package manager apt, max time in seconds since last update. + Repo update is skipped if maxage is not reached yet. MESSAGES -------- @@ -51,7 +51,6 @@ EXAMPLES # Only update every hour: __package_update_index --maxage 3600 --type apt - # same as above (on apt-type systems): __package_update_index --maxage 3600 @@ -59,7 +58,6 @@ AUTHORS ------- | Ricardo Catalinas Jiménez | Thomas Eckert -| Stu Zhao COPYING diff --git a/cdist/conf/type/__package_upgrade_all/gencode-remote b/cdist/conf/type/__package_upgrade_all/gencode-remote index 38aa001e..bcad8a43 100755 --- a/cdist/conf/type/__package_upgrade_all/gencode-remote +++ b/cdist/conf/type/__package_upgrade_all/gencode-remote @@ -53,8 +53,8 @@ case "$type" in ;; apt) if [ -f "$apt_dist_upgrade" ] - then echo "$aptget dist-upgrade" - else echo "$aptget upgrade" + then echo $aptget dist-upgrade + else echo $aptget upgrade fi if [ -f "$apt_clean" ] diff --git a/cdist/conf/type/__package_yum/explorer/pkg_version b/cdist/conf/type/__package_yum/explorer/pkg_version index b81b0fe9..fb3b7753 100755 --- a/cdist/conf/type/__package_yum/explorer/pkg_version +++ b/cdist/conf/type/__package_yum/explorer/pkg_version @@ -27,4 +27,4 @@ else name="$__object_id" fi -rpm -q "$name" 2>/dev/null || rpm -q --whatprovides "$name" 2>/dev/null || true +rpm -q --whatprovides "$name" 2>/dev/null || true diff --git a/cdist/conf/type/__package_yum/gencode-remote b/cdist/conf/type/__package_yum/gencode-remote index b52953f6..e9b48ee8 100755 --- a/cdist/conf/type/__package_yum/gencode-remote +++ b/cdist/conf/type/__package_yum/gencode-remote @@ -43,15 +43,10 @@ else opts="--assumeyes --quiet" fi -not_provided="^no package provides" -not_installed='is not installed$' +not_installed="^no package provides" -if grep -q "$not_provided" "$__object/explorer/pkg_version"; then - if grep -q "$not_installed" "$__object/explorer/pkg_version"; then - state_is="absent" - else - state_is="present" - fi +if grep -q "$not_installed" "$__object/explorer/pkg_version"; then + state_is="absent" else state_is="present" fi @@ -60,12 +55,10 @@ fi case "$state_should" in present) - echo "yum $opts install '$install_name'" - echo "installed" >> "$__messages_out" + echo yum $opts install \"$install_name\" ;; absent) - echo "yum $opts remove '$name'" - echo "removed" >> "$__messages_out" + echo yum $opts remove \"$name\" ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__package_zypper/gencode-remote b/cdist/conf/type/__package_zypper/gencode-remote index e45dd9ff..d9372b6d 100755 --- a/cdist/conf/type/__package_zypper/gencode-remote +++ b/cdist/conf/type/__package_zypper/gencode-remote @@ -61,18 +61,15 @@ case "$state_should" in present) if [ -z "$version_should" ]; then [ "$state_is" = "present" ] && exit 0 # if state is present, we dont need to do anything - echo "zypper $globalopts install --type '$ptype' --auto-agree-with-licenses '$name' >/dev/null" - echo "removed" >> "$__messages_out" + echo zypper $globalopts install --type \"$ptype\" --auto-agree-with-licenses \"$name\" ">/dev/null" else [ "$state_is" = "present" ] && [ "$version_should" = "$version_is" ] && exit 0 # if state is present and version is correct, we dont need to do anything - echo "zypper $globalopts install --oldpackage --type '$ptype' --auto-agree-with-licenses '$name' = '$version_should' >/dev/null" - echo "installed" >> "$__messages_out" + echo zypper $globalopts install --oldpackage --type \"$ptype\" --auto-agree-with-licenses \"$name\" = \"$version_should\" ">/dev/null" fi ;; absent) [ "$state_is" = "absent" ] && exit 0 # if state is absent, we dont need to do anything - echo "zypper $globalopts remove --type '$ptype' '$name' >/dev/null" - echo "removed" >> "$__messages_out" + echo zypper $globalopts remove --type \"$ptype\" \"$name\" ">/dev/null" ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__pacman_conf/manifest b/cdist/conf/type/__pacman_conf/manifest index a43f18a1..1561d613 100755 --- a/cdist/conf/type/__pacman_conf/manifest +++ b/cdist/conf/type/__pacman_conf/manifest @@ -59,13 +59,13 @@ if [ "${file}" ]; then if [ "${state}" = "present" ]; then - require="__file/${sec_path}/plain_file_${file}" __key_value "${file}_${key}" \ - --file "${sec_path}/plain_file_${file}" --key "${key}" --value "${value}" --delimiter ' = ' + require="__file/${sec_path}/plain_file_${file}" __key_value ${file}_${key}\ + --file ${sec_path}/plain_file_${file} --key ${key} --value ${value} --delimiter ' = ' exit 0 elif [ "${state}" = "absent" ]; then - require="__file/${sec_path}/plain_file_${file}" __key_value "${file}_${key}" \ + require="__file/${sec_path}/plain_file_${file}" __key_value ${file}_${key}\ --state absent exit 0 @@ -87,19 +87,19 @@ eof if [ "${MATCH}" -eq 1 ]; then if [ "${value}" = "on" ]; then - require="__file/${sec_path}/${section}" __line "${key}_${value}" \ - --file "${sec_path}/${section}" --line "${key}" + require="__file/${sec_path}/${section}" __line ${key}_${value}\ + --file ${sec_path}/${section} --line ${key} elif [ "${value}" = "off" ]; then - require="__file/${sec_path}/${section}" __line "${key}_${value}" \ - --file "${sec_path}/${section}" --line "${key}" --state absent + require="__file/${sec_path}/${section}" __line ${key}_${value}\ + --file ${sec_path}/${section} --line ${key} --state absent fi else contains_element "${key}" "${allowed_option_keys}" if [ "${MATCH}" -eq 1 ]; then - require="__file/${sec_path}/${section}" __key_value "${section}_${key}" \ - --file "${sec_path}/${section}" --key "${key}" --value "${value}" --delimiter ' = ' + require="__file/${sec_path}/${section}" __key_value ${section}_${key}\ + --file ${sec_path}/${section} --key ${key} --value ${value} --delimiter ' = ' else echo "Key: ${key} is not valid. Have a look at man pacman.conf" >&2 fi @@ -118,12 +118,12 @@ eof exit fi - require="__file/${sec_path}/repo_${section}" __key_value "${section}_${key}" \ - --file "${sec_path}/repo_${section}" --key "${key}" --value "${value}" --delimiter ' = ' + require="__file/${sec_path}/repo_${section}" __key_value ${section}_${key}\ + --file ${sec_path}/repo_${section} --key ${key} --value ${value} --delimiter ' = ' elif [ "${state}" = "absent" ]; then - require="__file/${sec_path}/repo_${section}" __key_value "${section}_${key}" \ + require="__file/${sec_path}/repo_${section}" __key_value ${section}_${key}\ --state absent else diff --git a/cdist/conf/type/__pacman_conf_integrate/manifest b/cdist/conf/type/__pacman_conf_integrate/manifest index 0ce0bee5..b26bca50 100755 --- a/cdist/conf/type/__pacman_conf_integrate/manifest +++ b/cdist/conf/type/__pacman_conf_integrate/manifest @@ -18,14 +18,16 @@ # along with cdist. If not, see . # -state=$(cat "$__object/parameter/state" 2>/dev/null) +state=$(cat $__object/parameter/state 2>/dev/null) + +path="/etc/" if [ "${state}" = "present" ]; then __file /etc/pacman.conf\ - --owner root --group root --mode 644 --source "$__type/files/pacman.conf.cdist" + --owner root --group root --mode 644 --source $__type/files/pacman.conf.cdist __file /etc/pacman.d/options\ - --owner root --group root --mode 644 --source "$__type/files/options" + --owner root --group root --mode 644 --source $__type/files/options __file /etc/pacman.d/repo_empty_placeholder\ --owner root --group root --mode 644 @@ -36,10 +38,10 @@ if [ "${state}" = "present" ]; then elif [ "${state}" = "absent" ]; then __file /etc/pacman.conf\ - --owner root --group root --mode 644 --source "$__type/files/pacman.conf.pacman" + --owner root --group root --mode 644 --source $__type/files/pacman.conf.pacman __file /etc/pacman.d/mirrorlist\ - --owner root --group root --mode 644 --source "$__type/files/mirrorlist" + --owner root --group root --mode 644 --source $__type/files/mirrorlist __file /etc/pacman.d/options\ --state absent diff --git a/cdist/conf/type/__pf_apply/explorer/rcvar b/cdist/conf/type/__pf_apply/explorer/rcvar index 7c8d535f..20e9dfcc 100755 --- a/cdist/conf/type/__pf_apply/explorer/rcvar +++ b/cdist/conf/type/__pf_apply/explorer/rcvar @@ -29,7 +29,7 @@ RC="/etc/rc.conf" PFCONF="$(grep '^pf_rules=' ${RC} | cut -d= -f2 | sed 's/"//g')" -echo "${PFCONF:-"/etc/pf.conf"}" +echo ${PFCONF:-"/etc/pf.conf"} # Debug #set +x diff --git a/cdist/conf/type/__pf_ruleset/explorer/cksum b/cdist/conf/type/__pf_ruleset/explorer/cksum index 9be6c901..f8679836 100755 --- a/cdist/conf/type/__pf_ruleset/explorer/cksum +++ b/cdist/conf/type/__pf_ruleset/explorer/cksum @@ -33,7 +33,7 @@ TMP="$(grep '^pf_rules=' ${RC} | cut -d= -f2 | sed 's/"//g')" PFCONF="${TMP:-"/etc/pf.conf"}" if [ -f "${PFCONF}" ]; then # The pf config file exists, find its cksum. - cksum -o 1 "${PFCONF}" | cut -d= -f2 | awk '{print $1}' + cksum -o 1 ${PFCONF} | cut -d= -f2 | awk '{print $1}' fi # Debug diff --git a/cdist/conf/type/__pf_ruleset/explorer/rcvar b/cdist/conf/type/__pf_ruleset/explorer/rcvar index 7c8d535f..20e9dfcc 100755 --- a/cdist/conf/type/__pf_ruleset/explorer/rcvar +++ b/cdist/conf/type/__pf_ruleset/explorer/rcvar @@ -29,7 +29,7 @@ RC="/etc/rc.conf" PFCONF="$(grep '^pf_rules=' ${RC} | cut -d= -f2 | sed 's/"//g')" -echo "${PFCONF:-"/etc/pf.conf"}" +echo ${PFCONF:-"/etc/pf.conf"} # Debug #set +x diff --git a/cdist/conf/type/__pf_ruleset/gencode-local b/cdist/conf/type/__pf_ruleset/gencode-local index 11bfb0b1..b4bded98 100755 --- a/cdist/conf/type/__pf_ruleset/gencode-local +++ b/cdist/conf/type/__pf_ruleset/gencode-local @@ -54,7 +54,7 @@ case $uname in currentSum=\$(cksum -o 1 ${source} | cut -d= -f2 | sed 's/ //g') ;; *) - echo "Sorry, I do not know how to find a cksum on ${uname}." >&2 + echo "Sorry, I do not know how to find a cksum on ${UNAME}." >&2 exit 1 ;; esac @@ -69,10 +69,10 @@ fi if [ -n "${cksum}" ]; then if [ ! "\${currentSum}" = "${cksum}" ]; then - $__remote_copy "${source}" "\${my_target_host}:${rcvar}.new" + $__remote_copy "${source}" "${my_target_host}:${rcvar}.new" fi else # File just doesn't exist yet - $__remote_copy "${source}" "\${my_target_host}:${rcvar}.new" + $__remote_copy "${source}" "${my_target_host}:${rcvar}.new" fi EOF diff --git a/cdist/conf/type/__ping/gencode-remote b/cdist/conf/type/__ping/gencode-remote deleted file mode 100644 index 1341b954..00000000 --- a/cdist/conf/type/__ping/gencode-remote +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -e -# -# Copyright (C) 2018 Olliver Schinagl -# -# SPDX-License-Identifier: GPL-3.0+ -# - -set -eu - -echo "echo 'pong'" - -exit 0 diff --git a/cdist/conf/type/__ping/man.rst b/cdist/conf/type/__ping/man.rst deleted file mode 100644 index e08643dc..00000000 --- a/cdist/conf/type/__ping/man.rst +++ /dev/null @@ -1,43 +0,0 @@ -cdist-type__ping(7) -================================== - -NAME ----- -cdist-type__ping - Try to connect to host and return 'pong' on success - - -DESCRIPTION ------------ -A simple type which tries to connect to a remote host and runs a simple command -to ensure everything is working. - - -REQUIRED PARAMETERS -------------------- -None. - - -OPTIONAL PARAMETERS -------------------- -None. - - -EXAMPLES --------- - -.. code-block:: sh - - __ping - - -AUTHORS -------- -Olliver Schinagl - - -COPYING -------- -Copyright \(C) 2018 Schinagl. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__ping/singleton b/cdist/conf/type/__ping/singleton deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__podman_compose/gencode-remote b/cdist/conf/type/__podman_compose/gencode-remote deleted file mode 100644 index 0f5cf9db..00000000 --- a/cdist/conf/type/__podman_compose/gencode-remote +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -e -# -# 2019 Daniel Tschada -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -install="$(cat "$__object/parameter/install")" -state="$(cat "$__object/parameter/state")" -user="$(cat "$__object/parameter/user")" -version="$(cat "$__object/parameter/version")" \ No newline at end of file diff --git a/cdist/conf/type/__podman_compose/man.rst b/cdist/conf/type/__podman_compose/man.rst deleted file mode 100644 index fa98f443..00000000 --- a/cdist/conf/type/__podman_compose/man.rst +++ /dev/null @@ -1,61 +0,0 @@ -cdist-type__podman_compose(7) -============================= - -NAME ----- -cdist-type__podman_compose - install podman-compose - - -DESCRIPTION ------------ -Installs podman-compose package. -State 'absent' will not remove podman binary itself, -only podman-compose binary will be removed - - -REQUIRED PARAMETERS -------------------- -install - defaults to 'pip' - - -OPTIONAL PARAMETERS -------------------- -state - 'present' or 'absent', defaults to 'present' -user - the user who owns the file, defaults to 'root' - - -BOOLEAN PARAMETERS ------------------- -None. - - -EXAMPLES --------- - -.. code-block:: sh - - # Install podman-compose - __podman_compose - - # Install latest version via pip - __podman_compose --state present --install pip - - # Install latest version via pip and change user - __podman_compose --state present --install pip --user root - - # Remove podman-compose - __podman_compose --state absent - - -AUTHORS -------- -Daniel Tschada - - -COPYING -------- -Copyright \(C) 2019 Daniel Tschada. Free use of this software is -granted under the terms of the GNU General Public License version 3 or later (GPLv3+). diff --git a/cdist/conf/type/__podman_compose/manifest b/cdist/conf/type/__podman_compose/manifest deleted file mode 100755 index 2b06068d..00000000 --- a/cdist/conf/type/__podman_compose/manifest +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -e -# -# 2019 Daniel Tschada -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -# shellcheck disable=SC2154 -# shellcheck disable=SC2034 -install="$(cat "$__object/parameter/install")" -state="$(cat "$__object/parameter/state")" -user="$(cat "$__object/parameter/user")" -version="$(cat "$__object/parameter/version")" - -# install it with pip -if [ "${install}" = "pip" ]; then - - if [ "${state}" = "present" ]; then - __package_pip podman-compose --state present --pip /usr/local/bin/podman-compose --runas "${user}" - elif [ "${state}" = "absent" ]; then - __package_pip podman-compose --state absent - else - if [ "${state}" != "present" ] -a [ "${state}" != "absent" ]; then - echo "Unknown state: ${state}" >&2 - exit 1 - else - echo "Unknown user: ${user}" >&2 - exit 1 - fi - fi - -else - - echo "Unknown user: ${install}" >&2 - exit 1 - -fi \ No newline at end of file diff --git a/cdist/conf/type/__podman_compose/parameter/default/install b/cdist/conf/type/__podman_compose/parameter/default/install deleted file mode 100644 index a1b589e3..00000000 --- a/cdist/conf/type/__podman_compose/parameter/default/install +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/cdist/conf/type/__podman_compose/parameter/default/state b/cdist/conf/type/__podman_compose/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__podman_compose/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__podman_compose/parameter/default/user b/cdist/conf/type/__podman_compose/parameter/default/user deleted file mode 100644 index d8649da3..00000000 --- a/cdist/conf/type/__podman_compose/parameter/default/user +++ /dev/null @@ -1 +0,0 @@ -root diff --git a/cdist/conf/type/__podman_compose/parameter/optional b/cdist/conf/type/__podman_compose/parameter/optional deleted file mode 100644 index 92913e56..00000000 --- a/cdist/conf/type/__podman_compose/parameter/optional +++ /dev/null @@ -1,4 +0,0 @@ -install -state -user -version diff --git a/cdist/conf/type/__podman_compose/parameter/required b/cdist/conf/type/__podman_compose/parameter/required deleted file mode 100644 index 7c32f559..00000000 --- a/cdist/conf/type/__podman_compose/parameter/required +++ /dev/null @@ -1 +0,0 @@ -install diff --git a/cdist/conf/type/__podman_compose/singleton b/cdist/conf/type/__podman_compose/singleton deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__postfix/manifest b/cdist/conf/type/__postfix/manifest index f3616979..1aea53a1 100755 --- a/cdist/conf/type/__postfix/manifest +++ b/cdist/conf/type/__postfix/manifest @@ -1,7 +1,6 @@ #!/bin/sh -e # # 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -23,7 +22,7 @@ os=$(cat "$__global/explorer/os") case "$os" in - alpine|ubuntu|debian|archlinux|suse|scientific|centos|devuan) + ubuntu|debian|archlinux|suse|scientific|centos|devuan) __package postfix --state present ;; *) diff --git a/cdist/conf/type/__postfix_master/manifest b/cdist/conf/type/__postfix_master/manifest index 0960ea41..4991a13d 100755 --- a/cdist/conf/type/__postfix_master/manifest +++ b/cdist/conf/type/__postfix_master/manifest @@ -36,6 +36,7 @@ __postfix # Default to object_id service="$(cat "$__object/parameter/service" 2>/dev/null || echo "$__object_id")" +state="$(cat "$__object/parameter/state")" # NOTE: keep variables in sync in manifest,explorer,gencode-* prefix="#cdist:$__object_name" @@ -50,6 +51,7 @@ entry="$__object/files/entry" echo "# $(cat "$__object/parameter/comment")" fi printf "%s " "$service" + printf "%s " "$type" for parameter in type private unpriv chroot wakeup maxproc; do printf "%s " "$(cat "$__object/parameter/$parameter")" done diff --git a/cdist/conf/type/__postfix_postconf/explorer/value b/cdist/conf/type/__postfix_postconf/explorer/value index 67dacad8..17126c94 100755 --- a/cdist/conf/type/__postfix_postconf/explorer/value +++ b/cdist/conf/type/__postfix_postconf/explorer/value @@ -22,7 +22,7 @@ os=$("$__explorer/os") case "$os" in - alpine|ubuntu|debian|archlinux|suse|scientific|centos|devuan) + ubuntu|debian|archlinux|suse|scientific|centos|devuan) : ;; *) diff --git a/cdist/conf/type/__postfix_postconf/gencode-remote b/cdist/conf/type/__postfix_postconf/gencode-remote index 279dddd4..6df0da7f 100755 --- a/cdist/conf/type/__postfix_postconf/gencode-remote +++ b/cdist/conf/type/__postfix_postconf/gencode-remote @@ -1,7 +1,6 @@ #!/bin/sh -e # # 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -22,7 +21,7 @@ os=$(cat "$__global/explorer/os") case "$os" in - alpine|archlinux|centos|debian|devuan|suse|scientific|ubuntu) + ubuntu|debian|archlinux|suse|scientific|centos|devuan) : ;; *) diff --git a/cdist/conf/type/__postgres_database/explorer/state b/cdist/conf/type/__postgres_database/explorer/state index d68d4120..dc9659e2 100755 --- a/cdist/conf/type/__postgres_database/explorer/state +++ b/cdist/conf/type/__postgres_database/explorer/state @@ -18,25 +18,10 @@ # along with cdist. If not, see . # -case "$("${__explorer}/os")" -in - netbsd) - postgres_user='pgsql' - ;; - openbsd) - postgres_user='_postgresql' - ;; - *) - postgres_user='postgres' - ;; -esac - - name="$__object_id" -if test -n "$(su - "$postgres_user" -c "psql postgres -twAc \"SELECT 1 FROM pg_database WHERE datname='$name'\"")" -then - echo 'present' +if su - postgres -c "echo '\q' | psql '$name'" 2>/dev/null; then + echo "present" else - echo 'absent' + echo "absent" fi diff --git a/cdist/conf/type/__postgres_database/gencode-remote b/cdist/conf/type/__postgres_database/gencode-remote index 61cfa50d..92301fb8 100755 --- a/cdist/conf/type/__postgres_database/gencode-remote +++ b/cdist/conf/type/__postgres_database/gencode-remote @@ -18,20 +18,6 @@ # along with cdist. If not, see . # -case "$(cat "${__global}/explorer/os")" -in - netbsd) - postgres_user='pgsql' - ;; - openbsd) - postgres_user='_postgresql' - ;; - *) - postgres_user='postgres' - ;; -esac - - name="$__object_id" state_should="$(cat "$__object/parameter/state")" state_is="$(cat "$__object/explorer/state")" @@ -43,10 +29,10 @@ if [ "$state_should" != "$state_is" ]; then if [ -f "$__object/parameter/owner" ]; then owner="-O '$(cat "$__object/parameter/owner")'" fi - echo "su - '$postgres_user' -c \"createdb $owner '$name'\"" + echo "su - postgres -c \"createdb $owner '$name'\"" ;; absent) - echo "su - '$postgres_user' -c \"dropdb '$name'\"" + echo "su - postgres -c \"dropdb '$name'\"" ;; esac fi diff --git a/cdist/conf/type/__postgres_extension/gencode-remote b/cdist/conf/type/__postgres_extension/gencode-remote index af9c97f1..f7895103 100755 --- a/cdist/conf/type/__postgres_extension/gencode-remote +++ b/cdist/conf/type/__postgres_extension/gencode-remote @@ -22,20 +22,6 @@ # along with cdist. If not, see . # -case "$(cat "${__global}/explorer/os")" -in - netbsd) - postgres_user='pgsql' - ;; - openbsd) - postgres_user='_postgresql' - ;; - *) - postgres_user='postgres' - ;; -esac - - dbname=$( echo "$__object_id" | cut -d":" -f1 ) extension=$( echo "$__object_id" | cut -d":" -f2 ) @@ -44,10 +30,10 @@ state_should=$( cat "$__object/parameter/state" ) case "$state_should" in present) cmd="CREATE EXTENSION IF NOT EXISTS $extension" - echo "su - '$postgres_user' -c 'psql -c \"$cmd\" \"$dbname\"'" + echo "su - postgres -c 'psql -c \"$cmd\" \"$dbname\"'" ;; absent) - cmd="DROP EXTENSION IF EXISTS $extension" - echo "su - '$postgres_user' -c 'psql -c \"$cmd\" \"$dbname\"'" + cmd="DROP EXTENSION IF EXISTS $extenstion" + echo "su - postgres -c 'psql -c \"$cmd\" \"$dbname\"'" ;; esac diff --git a/cdist/conf/type/__postgres_role/explorer/state b/cdist/conf/type/__postgres_role/explorer/state index c8e1fa9d..8c102df9 100755 --- a/cdist/conf/type/__postgres_role/explorer/state +++ b/cdist/conf/type/__postgres_role/explorer/state @@ -18,25 +18,10 @@ # along with cdist. If not, see . # -case "$("${__explorer}/os")" -in - netbsd) - postgres_user='pgsql' - ;; - openbsd) - postgres_user='_postgresql' - ;; - *) - postgres_user='postgres' - ;; -esac - - name="$__object_id" -if test -n "$(su - "$postgres_user" -c "psql postgres -twAc \"SELECT 1 FROM pg_roles WHERE rolname='$name'\"")" -then - echo 'present' +if su - postgres -c "psql -c '\du' | grep -q '^ *$name *|'"; then + echo "present" else - echo 'absent' + echo "absent" fi diff --git a/cdist/conf/type/__postgres_role/gencode-remote b/cdist/conf/type/__postgres_role/gencode-remote index fd56e85d..14240992 100755 --- a/cdist/conf/type/__postgres_role/gencode-remote +++ b/cdist/conf/type/__postgres_role/gencode-remote @@ -18,20 +18,6 @@ # along with cdist. If not, see . # -case "$(cat "${__global}/explorer/os")" -in - netbsd) - postgres_user='pgsql' - ;; - openbsd) - postgres_user='_postgresql' - ;; - *) - postgres_user='postgres' - ;; -esac - - name="$__object_id" state_is="$(cat "$__object/explorer/state")" state_should="$(cat "$__object/parameter/state")" @@ -48,16 +34,16 @@ case "$state_should" in if [ ! -f "$__object/parameter/$boolean" ]; then boolean="no${boolean}" fi - upper=$(echo $boolean | tr '[:lower:]' '[:upper:]') + upper=$(echo $boolean | tr '[a-z]' '[A-Z]') booleans="$booleans $upper" done - [ -n "$password" ] && password="PASSWORD '$password'" + [ -n "$password" ] && password="PASSWORD '$password'" - cmd="CREATE ROLE $name WITH $password $booleans" - echo "su - '$postgres_user' -c \"psql postgres -wc \\\"$cmd\\\"\"" + cmd="CREATE ROLE $name WITH $password $booleans" + echo "su - postgres -c \"psql -c \\\"$cmd\\\"\"" ;; absent) - echo "su - '$postgres_user' -c \"dropuser \\\"$name\\\"\"" + echo "su - postgres -c \"dropuser \\\"$name\\\"\"" ;; esac diff --git a/cdist/conf/type/__process/gencode-remote b/cdist/conf/type/__process/gencode-remote index ec9691b9..fc491321 100755 --- a/cdist/conf/type/__process/gencode-remote +++ b/cdist/conf/type/__process/gencode-remote @@ -52,7 +52,7 @@ case "$state_should" in if [ -f "$__object/parameter/stop" ]; then cat "$__object/parameter/stop" else - echo kill "$(cat "$__object/parameter/runs")" + echo kill "${runs}" fi echo "stopped" >> "$__messages_out" ;; diff --git a/cdist/conf/type/__prometheus_alertmanager/manifest b/cdist/conf/type/__prometheus_alertmanager/manifest index cf410c44..be50b71e 100755 --- a/cdist/conf/type/__prometheus_alertmanager/manifest +++ b/cdist/conf/type/__prometheus_alertmanager/manifest @@ -15,7 +15,6 @@ storage_path="$(cat "$__object/parameter/storage-path")" ##### INSTALL THE PACKAGE ################################################### require_pkg="" # what to require if I want to require "the package" -require="" if [ -f "$__object/parameter/install-from-backports" ]; then os=$(cat "$__global/explorer/os") os_version=$(cat "$__global/explorer/os_version") @@ -30,7 +29,6 @@ if [ -f "$__object/parameter/install-from-backports" ]; then *) echo "--install-from-backports is only supported on Devuan -- ignoring." >&2 echo "Send a pull request if you require it." >&2 - exit 1 ;; esac else @@ -50,7 +48,7 @@ __key_value alertmanager_fix_init_script --file /etc/init.d/prometheus-alertmana ##### CONFIGURE ############################################################# -FLAGS="--storage.path $storage_path --data.retention $((retention_days*24))h --web.listen-address [::]:9093 --cluster.advertise-address [::]:9093" +FLAGS="--storage.path $storage_path --data.retention $(($retention_days*24))h --web.listen-address [::]:9093" require="$require $require_pkg" \ __key_value alertmanager_args --file /etc/default/prometheus-alertmanager \ @@ -59,7 +57,7 @@ __key_value alertmanager_args --file /etc/default/prometheus-alertmanager \ require="$require __directory/$storage_path $require_pkg" \ __config_file $CONF \ - --source "$config" \ + --source $config \ --group prometheus --mode 640 \ - --onchange "service prometheus-alertmanager restart" # TODO when a config-check tool is available, check config here + --onchange "service prometheus-alertmanager reload" # TODO when a config-check tool is available, check config here diff --git a/cdist/conf/type/__prometheus_exporter/manifest b/cdist/conf/type/__prometheus_exporter/manifest index f3930ac6..ae4ed94a 100644 --- a/cdist/conf/type/__prometheus_exporter/manifest +++ b/cdist/conf/type/__prometheus_exporter/manifest @@ -2,14 +2,11 @@ export GOBIN=/opt/gocode/bin # where to find go binaries -exporter="$(cat "$__object/parameter/exporter")" +exporter="$(cat $__object/parameter/exporter)" [ -z "$exporter" ] && exporter="$__object_id" -__user prometheus -require="__user/prometheus" __group prometheus -require="__group/prometheus" __user_groups prometheus --group prometheus +__user prometheus --system -require="__user_groups/prometheus" case $exporter in node) TEXTFILES=/service/node-exporter/textfiles # path for the textfiles collector @@ -21,7 +18,7 @@ case $exporter in ;; blackbox) require="$require __daemontools_service/${exporter}-exporter __user/prometheus" __config_file "/service/${exporter}-exporter/blackbox.yml" \ - --source "$__type/files/blackbox.yml" \ + --source $__type/files/blackbox.yml \ --group prometheus --mode 640 \ --onchange "svc -h /service/${exporter}-exporter" require="$require __golang_from_vendor" __go_get github.com/prometheus/blackbox_exporter @@ -42,9 +39,9 @@ case $exporter in ;; esac -require="$require __daemontools" __daemontools_service "${exporter}-exporter" --run "$run" +require="$require __daemontools" __daemontools_service ${exporter}-exporter --run "$run" if [ -f "$__object/parameter/add-consul-service" ]; then - __consul_service "${exporter}-exporter" --port "$port" --check-http "http://localhost:$port/metrics" --check-interval 10s + __consul_service ${exporter}-exporter --port $port --check-http "http://localhost:$port/metrics" --check-interval 10s fi #__daemontools --install-init-script diff --git a/cdist/conf/type/__prometheus_server/manifest b/cdist/conf/type/__prometheus_server/manifest index 9756169e..84ba53cf 100755 --- a/cdist/conf/type/__prometheus_server/manifest +++ b/cdist/conf/type/__prometheus_server/manifest @@ -13,12 +13,11 @@ storage_path="$(cat "$__object/parameter/storage-path")" rule_files="$(cat "$__object/parameter/rule-files")" # explorer in kB => convert; by default we go with 1/2 RAM -[ "$target_heap_size" = "auto" ] && target_heap_size=$(($(cat "$__global/explorer/memory")*1024/2)) +[ "$target_heap_size" = "auto" ] && target_heap_size=$(($(cat $__global/explorer/memory)*1024/2)) ##### INSTALL THE PACKAGE ################################################### require_pkg="" # what to require if I want to require "the package" -require="" if [ -f "$__object/parameter/install-from-backports" ]; then os=$(cat "$__global/explorer/os") os_version=$(cat "$__global/explorer/os_version") @@ -33,13 +32,11 @@ if [ -f "$__object/parameter/install-from-backports" ]; then *) echo "--install-from-backports is only supported on Devuan -- ignoring." >&2 echo "Send a pull request if you require it." >&2 - exit 1 ;; esac else __package prometheus - __package prometheus-blackbox-exporter - require_pkg="__package/prometheus __package/prometheus-blackbox-exporter" + require_pkg="__package/prometheus" fi ##### PREPARE PATHS AND SUCH ################################################ @@ -48,7 +45,7 @@ require="$require $require_pkg" __directory "$storage_path" --owner prometheus - ##### CONFIGURE ############################################################# -FLAGS="--storage.tsdb.path $storage_path --storage.tsdb.retention $((retention_days*24))h --web.listen-address [::]:9090" +FLAGS="--storage.tsdb.path $storage_path --storage.tsdb.retention $(($retention_days*24))h --web.listen-address [::]:9090" # TODO it would be neat to restart prometheus on change -- __key_value really should have an --onchange parameter require="$require $require_pkg" \ @@ -58,16 +55,16 @@ __key_value prometheus_args --file /etc/default/prometheus \ require="$require __directory/$storage_path $require_pkg" \ __config_file $CONF \ - --source "$config" \ + --source $config \ --group prometheus --mode 640 \ - --onchange "promtool check config $CONF && service prometheus restart" + --onchange "promtool check config $CONF && service prometheus reload" for file in $rule_files; do - dest=$CONF_DIR/$(basename "$file") + dest=$CONF_DIR/$(basename $file) require="$require $require_pkg" \ __config_file "$dest" \ --source "$file" \ --owner prometheus \ - --onchange "promtool check rules '$dest' && service prometheus restart" + --onchange "promtool check rules '$dest' && service prometheus reload" done diff --git a/cdist/conf/type/__pyvenv/explorer/group b/cdist/conf/type/__pyvenv/explorer/group index a655bda7..ff072c5e 100755 --- a/cdist/conf/type/__pyvenv/explorer/group +++ b/cdist/conf/type/__pyvenv/explorer/group @@ -2,4 +2,4 @@ destination="/$__object_id" -stat --print "%G" "${destination}" 2>/dev/null || exit 0 +stat --print "%G" ${destination} 2>/dev/null || exit 0 diff --git a/cdist/conf/type/__pyvenv/explorer/owner b/cdist/conf/type/__pyvenv/explorer/owner index 8b3c7f8e..b77e3c6e 100755 --- a/cdist/conf/type/__pyvenv/explorer/owner +++ b/cdist/conf/type/__pyvenv/explorer/owner @@ -2,4 +2,4 @@ destination="/$__object_id" -stat --print "%U" "${destination}" 2>/dev/null || exit 0 +stat --print "%U" ${destination} 2>/dev/null || exit 0 diff --git a/cdist/conf/type/__pyvenv/gencode-remote b/cdist/conf/type/__pyvenv/gencode-remote index 04700683..a4f078c5 100755 --- a/cdist/conf/type/__pyvenv/gencode-remote +++ b/cdist/conf/type/__pyvenv/gencode-remote @@ -29,10 +29,10 @@ owner="$(cat "$__object/parameter/owner")" group="$(cat "$__object/parameter/group")" mode="$(cat "$__object/parameter/mode")" -[ "$state_should" = "$state_is" ] && \ -[ "$owner" = "$owner_is" ] && \ -[ "$group" = "$group_is" ] && \ -[ -n "$mode" ] && exit 0 +[ "$state_should" = "$state_is" -a \ + "$owner" = "$owner_is" -a \ + "$group" = "$group_is" -a \ + -n "$mode" ] && exit 0 destination="/$__object_id" venvparams="$(cat "$__object/parameter/venvparams")" @@ -47,10 +47,10 @@ fi case $state_should in present) if [ "$state_should" != "$state_is" ]; then - echo "$pyvenv $venvparams $destination" + echo $pyvenv $venvparams "$destination" fi - if { [ -n "$owner" ] && [ "$owner_is" != "$owner" ]; } || \ - { [ -n "$group" ] && [ "$group_is" != "$group" ]; }; then + if [ \( -n "$owner" -a "$owner_is" != "$owner" \) -o \ + \( -n "$group" -a "$group_is" != "$group" \) ]; then echo chown -R "${owner}:${group}" "$destination" fi if [ -n "$mode" ]; then diff --git a/cdist/conf/type/__qemu_img/gencode-remote b/cdist/conf/type/__qemu_img/gencode-remote index 94816f58..9127e5ef 100755 --- a/cdist/conf/type/__qemu_img/gencode-remote +++ b/cdist/conf/type/__qemu_img/gencode-remote @@ -18,4 +18,4 @@ format="$(cat "$__object/parameter/format")" size="$(cat "$__object/parameter/size")" diskimage="/$__object_id" -echo "qemu-img create -f '$format' '$diskimage' '$size'" +echo qemu-img create -f \"$format\" \"$diskimage\" \"$size\" diff --git a/cdist/conf/type/__qemu_img/manifest b/cdist/conf/type/__qemu_img/manifest index 55f3bf16..e7417389 100755 --- a/cdist/conf/type/__qemu_img/manifest +++ b/cdist/conf/type/__qemu_img/manifest @@ -4,6 +4,7 @@ # Default settings # +format="$(cat "$__object/parameter/format")" state_should="$(cat "$__object/parameter/state")" diskimage="/$__object_id" diff --git a/cdist/conf/type/__rsync/gencode-local b/cdist/conf/type/__rsync/gencode-local index e36ded2f..155f3a3a 100755 --- a/cdist/conf/type/__rsync/gencode-local +++ b/cdist/conf/type/__rsync/gencode-local @@ -29,9 +29,9 @@ fi set -- if [ -f "$__object/parameter/rsync-opts" ]; then - while read -r opts; do + while read opts; do set -- "$@" "--$opts" - done < "$__object/parameter/rsync-opts" + done < $__object/parameter/rsync-opts fi echo rsync -a \ diff --git a/cdist/conf/type/__rvm/explorer/state b/cdist/conf/type/__rvm/explorer/state index 74d17048..f43f5509 100755 --- a/cdist/conf/type/__rvm/explorer/state +++ b/cdist/conf/type/__rvm/explorer/state @@ -28,7 +28,7 @@ if [ "$user" = "root" ]; then echo absent fi else - if su - "$user" -c "[ -d \"\$HOME/.rvm\" ]" ; then + if su - $user -c "[ -d \"\$HOME/.rvm\" ]" ; then echo "present" else echo "absent" diff --git a/cdist/conf/type/__rvm/gencode-remote b/cdist/conf/type/__rvm/gencode-remote index 993191c1..494c8fd8 100755 --- a/cdist/conf/type/__rvm/gencode-remote +++ b/cdist/conf/type/__rvm/gencode-remote @@ -34,7 +34,7 @@ DONE absent) cat << DONE su - $user -c "rm -Rf \"\\\$HOME/.rvm\"; -sed '/rvm\\/scripts\\/rvm/d' \"\\\$HOME/.bashrc\" > \"\\\$HOME/.bashrc.cdist-tmp\" +sed '/rvm\/scripts\/rvm/d' \"\\\$HOME/.bashrc\" > \"\\\$HOME/.bashrc.cdist-tmp\" mv \"\\\$HOME/.bashrc.cdist-tmp\" \"\\\$HOME/.bashrc\"" DONE ;; diff --git a/cdist/conf/type/__rvm_gem/gencode-remote b/cdist/conf/type/__rvm_gem/gencode-remote index 9212de91..1fe6e78e 100755 --- a/cdist/conf/type/__rvm_gem/gencode-remote +++ b/cdist/conf/type/__rvm_gem/gencode-remote @@ -20,6 +20,8 @@ gem="$__object_id" gemset="$(cat "$__object/parameter/gemset")" +ruby="$(echo "$gemset" | cut -d '@' -f 1)" +gemsetname="$(echo "$gemset" | cut -d '@' -f 2)" state_is="$(cat "$__object/explorer/state")" user="$(cat "$__object/parameter/user")" state_should="$(cat "$__object/parameter/state")" diff --git a/cdist/conf/type/__rvm_gemset/explorer/state b/cdist/conf/type/__rvm_gemset/explorer/state index e300453b..fa643a6e 100755 --- a/cdist/conf/type/__rvm_gemset/explorer/state +++ b/cdist/conf/type/__rvm_gemset/explorer/state @@ -18,6 +18,9 @@ # along with cdist. If not, see . # +gemset="$__object_id" +ruby="$(echo "$gemset" | cut -d '@' -f 1)" +gemsetname="$(echo "$gemset" | cut -d '@' -f2)" user="$(cat "$__object/parameter/user")" if [ ! -e "~$user/.rvm/scripts/rvm" ] ; then @@ -25,9 +28,7 @@ if [ ! -e "~$user/.rvm/scripts/rvm" ] ; then exit 0 fi -# shellcheck disable=SC2016 if su - "$user" -c 'source ~/.rvm/scripts/rvm; rvm list strings | grep -q "^$ruby\$"'; then - # shellcheck disable=SC2016 if su - "$user" -c 'source ~/.rvm/scripts/rvm; rvm use "$ruby" > /dev/null; rvm gemset list strings | cut -f 1 -d " " | grep -q "^$gemsetname\$"'; then echo "present" exit 0 diff --git a/cdist/conf/type/__rvm_gemset/gencode-remote b/cdist/conf/type/__rvm_gemset/gencode-remote index 3cdc66a6..78851f9a 100755 --- a/cdist/conf/type/__rvm_gemset/gencode-remote +++ b/cdist/conf/type/__rvm_gemset/gencode-remote @@ -33,7 +33,7 @@ case "$state_should" in cat << DONE su - "$user" -c "source ~/.rvm/scripts/rvm; rvm $gemset --create" DONE - if [ -f "$__object/parameter/default" ]; then + if -f "$__object/parameter/default"; then cat << DONE su - "$user" -c "source ~/.rvm/scripts/rvm; rvm use --default $gemset" DONE diff --git a/cdist/conf/type/__rvm_ruby/gencode-remote b/cdist/conf/type/__rvm_ruby/gencode-remote index f2fd41ef..9bbc6031 100755 --- a/cdist/conf/type/__rvm_ruby/gencode-remote +++ b/cdist/conf/type/__rvm_ruby/gencode-remote @@ -21,6 +21,7 @@ ruby="$__object_id" state_is="$(cat "$__object/explorer/state")" user="$(cat "$__object/parameter/user")" +default="$(cat "$__object/parameter/default" 2>/dev/null || true)" state_should="$(cat "$__object/parameter/state")" [ "$state_is" = "$state_should" ] && exit 0 diff --git a/cdist/conf/type/__sensible_editor/explorer/editor_path b/cdist/conf/type/__sensible_editor/explorer/editor_path deleted file mode 100644 index dcf63c9b..00000000 --- a/cdist/conf/type/__sensible_editor/explorer/editor_path +++ /dev/null @@ -1,131 +0,0 @@ -#!/bin/sh -e -# -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Check if the given editor is present on the target system and determine its -# absolute path. -# - -die() { - echo "$@" >&2 - exit 1 -} - -editor_missing() { die "Editor '$1' is missing on the target system."; } -editor_no_alternative() { - die "Editor '$1' is not in the alternatives list of the target system." \ - "$(test -n "${editors}" && printf '\nPlease choose one of:\n\n%s\n' "${editors}")" -} - -# No need to check for the path if the file is supposed to be removed. -test "$(cat "${__object}/parameter/state")" != 'absent' || exit 0 - - -case $("${__explorer}/os") -in - debian|devuan|ubuntu) - has_alternatives=true - - # NOTE: Old versions do not support `--list`, in this case ignore the errors. - # This will require an absolute path to be provided, though. - editors=$(update-alternatives --list editor 2>/dev/null) - ;; - *) - # NOTE: RedHat has an alternatives system but it doesn't usually track - # editors and it is a pain to extract the list. - has_alternatives=false - ;; -esac - -# Read --editor parameter and check its value since it is "optional" -editor=$(cat "${__object}/parameter/editor" 2>/dev/null) || true -test -n "${editor}" || die 'Please provide an --editor to configure.' - -case $editor -in - /*) - is_abspath=true - ;; - */*) - die 'Relative editor paths are not supported' - ;; - *) - is_abspath=false - ;; -esac - - -if $has_alternatives && test -n "${editors}" -then - IFS=' -' - if ! $is_abspath - then - # First, try to resolve the absolute path using $editors. - while true - do - for e in $editors - do - if test "$(basename "${e}")" = "${editor}" - then - editor="${e}" - break 2 # break out of both loops - fi - done - - # Iterating through alternatives did not yield a result - editor_no_alternative "${editor}" - break - done - fi - - # Check if editor is present - test -f "${editor}" || editor_missing "${editor}" - - for e in $editors - do - if test "${editor}" = "${e}" - then - # Editor is part of the alternatives list -> use it! - echo "${editor}" - exit 0 - fi - done - - editor_no_alternative "${editor}" -else - # NOTE: This branch is mostly for RedHat-based systems which do - # not track editor alternatives. To make this type useful - # on RedHat at all we allow an absoloute path to be provided - # in any case. - - if $is_abspath - then - test -x "${editor}" || editor_missing "${editor}" - - echo "${editor}" - exit 0 - else - die "The target doesn't list any editor alternatives. " \ - "Please specify an absolute path or populate the alternatives list." - fi -fi - -# The script should never reach this statement! -exit 1 diff --git a/cdist/conf/type/__sensible_editor/explorer/group b/cdist/conf/type/__sensible_editor/explorer/group deleted file mode 100644 index 5d288189..00000000 --- a/cdist/conf/type/__sensible_editor/explorer/group +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -e -# -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Determines the primary group of the user. -# - -user=$__object_id - -id -gn "${user}" 2>/dev/null diff --git a/cdist/conf/type/__sensible_editor/explorer/user_home b/cdist/conf/type/__sensible_editor/explorer/user_home deleted file mode 100644 index b88243f7..00000000 --- a/cdist/conf/type/__sensible_editor/explorer/user_home +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh -e -# -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Determines the home folder of the target user. -# - -user=$__object_id -home=$(getent passwd "${user}" | cut -d':' -f6) - -if ! test -d "${home}" -then - echo "Cannot find home directory of user ${user}" >&2 - exit 1 -fi - -echo "${home}" diff --git a/cdist/conf/type/__sensible_editor/man.rst b/cdist/conf/type/__sensible_editor/man.rst deleted file mode 100644 index 9b805e06..00000000 --- a/cdist/conf/type/__sensible_editor/man.rst +++ /dev/null @@ -1,78 +0,0 @@ -cdist-type__sensible_editor(7) -============================== - -NAME ----- -cdist-type__sensible_editor - Select the sensible-editor - - -DESCRIPTION ------------ -This cdist type allows you to select the :strong:`sensible-editor` for -a given user. - - -REQUIRED PARAMETERS -------------------- -editor - Name or path of the editor to be selected. - On systems other than Debian derivatives an absolute path is required. - - It is permissible to omit this parameter if --state is absent. - - -OPTIONAL PARAMETERS -------------------- -state - 'present', 'absent', or 'exists'. Defaults to 'present', where: - - present - the sensible-editor is exactly what is specified in --editor. - absent - no sensible-editor configuration is present. - exists - the sensible-editor will be set to what is specified in --editor, - unless there already is a configuration on the target system. - - -EXAMPLES --------- - -.. code-block:: sh - - __sensible_editor root --editor /bin/ed # ed(1) is the standard - __sensible_editor noob --editor nano - - -LIMITATIONS ------------ - -This type depends upon the :strong:`sensible-editor`\ (1) script which -is part of the sensible-utils package. - -Therefore, the following operating systems are supported: - * Debian 8 (jessie) or later - * Devuan - * Ubuntu 8.10 (intrepid) or later - * RHEL/CentOS 7 or later (EPEL repo required) - * Fedora 21 or later - -Note: on old versions of Ubuntu the sensible-* utils are part of the -debianutils package. - -SEE ALSO --------- -:strong:`select-editor`\ (1), :strong:`sensible-editor`\ (1). - - -AUTHOR -------- -Dennis Camera - - -COPYING -------- -Copyright \(C) 2019 Dennis Camera. -You can redistribute it and/or modify it under the terms of the GNU General -Public License as published by the Free Software Foundation, either version 3 of -the License, or (at your option) any later version. diff --git a/cdist/conf/type/__sensible_editor/manifest b/cdist/conf/type/__sensible_editor/manifest deleted file mode 100644 index 1cdb0c2c..00000000 --- a/cdist/conf/type/__sensible_editor/manifest +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/sh -e -# -*- mode: sh; indent-tabs-mode: t -*- -# -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -version_ge() { - awk -F '[^0-9.]' -v target="${1:?}" ' - function max(x, y) { return x > y ? x : y; } - BEGIN { - getline; - nx = split($1, x, "."); - ny = split(target, y, "."); - for (i = 1; i <= max(nx, ny); ++i) { - diff = int(x[i]) - int(y[i]); - if (diff < 0) exit 1; - else if (diff > 0) exit 0; - else continue; - } - }' -} - -not_supported() { - echo "OS ${os} does not support __sensible_editor." >&2 - echo 'If it does, please provide a patch.' >&2 - exit 1 -} - -os=$(cat "${__global}/explorer/os") -os_version=$(cat "${__global}/explorer/os_version") - -state=$(cat "${__object}/parameter/state") -user=$__object_id - -if test "${state}" != 'present' && test "${state}" != 'exists' && test "${state}" != 'absent' -then - echo 'Only "present", "exists", and "absent" are allowed for --state' >&2 - exit 1 -fi - -package_name='sensible-utils' - -case $os -in - debian) - pkg_type='apt' - ;; - devuan) - pkg_type='apt' - ;; - ubuntu) - (echo "${os_version}" | version_ge 10.04) || package_name='debianutils' - pkg_type='apt' - ;; - centos|fedora|redhat|scientific) - pkg_type='yum' - ;; - *) - not_supported - ;; -esac - -if test "${state}" != 'absent' -then - __package "${package_name}" --state present \ - --type "${pkg_type}" - export require="__package/${package_name}" -fi - -editor_path=$(cat "${__object}/explorer/editor_path") -user_home=$(cat "${__object}/explorer/user_home") -group=$(cat "${__object}/explorer/group") - -__file "${user_home}/.selected_editor" --state "${state}" \ - --owner "${user}" --group "${group}" --mode 0644 \ - --source - <> $file" + printf '%s' "printf '%s\n' '$line_sanitised' >> $file" } @@ -59,7 +59,7 @@ mkdir "$__object/files" ( if [ -f "$__object/parameter/option" ]; then # comma seperated list of options - options="$(tr '\n' ',' < "$__object/parameter/option")" + options="$(cat "$__object/parameter/option" | tr '\n' ',')" printf '%s ' "${options%*,}" fi if [ -f "$__object/parameter/comment" ]; then @@ -78,7 +78,7 @@ if [ -s "$__object/explorer/entry" ]; then # Note that the files have to be sorted for comparison with `comm`. sort "$__object/explorer/entry" > "$__object/files/is" comm -13 "$__object/files/should" "$__object/files/is" | { - while read -r entry; do + while read entry; do remove_line "$file" "$entry" done } @@ -88,7 +88,7 @@ fi entry="$(cat "$__object/files/should")" state_should="$(cat "$__object/parameter/state")" num_existing_entries=$(grep -c -F -x "$entry" "$__object/explorer/entry" || true) -if [ "$num_existing_entries" -eq 1 ]; then +if [ $num_existing_entries -eq 1 ]; then state_is="present" else # Posix grep does not define the -m option, so we can not remove a single diff --git a/cdist/conf/type/__ssh_authorized_keys/explorer/file b/cdist/conf/type/__ssh_authorized_keys/explorer/file index 017bcb38..5a02721a 100755 --- a/cdist/conf/type/__ssh_authorized_keys/explorer/file +++ b/cdist/conf/type/__ssh_authorized_keys/explorer/file @@ -1,7 +1,6 @@ #!/bin/sh # # 2014 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # @@ -20,42 +19,9 @@ # if [ -f "$__object/parameter/file" ]; then - cat "$__object/parameter/file" + cat "$__object/parameter/file" else - if [ -s "$__object/parameter/owner" ] - then - owner=$(cat "$__object/parameter/owner") - else - owner="$__object_id" - fi - - if command -v getent >/dev/null - then - owner_line=$(getent passwd "$owner") - elif [ -f /etc/passwd ] - then - case $owner - in - [0-9][0-9]*) - owner_line=$(awk -F: "\$3 == \"${owner}\" { print }" /etc/passwd) - ;; - *) - owner_line=$(awk -F: "\$1 == \"${owner}\" { print }" /etc/passwd) - ;; - esac - fi - - if [ "$owner_line" ] - then - home=$(echo "$owner_line" | cut -d':' -f6) - fi - - if [ ! -d "$home" ] - then - # Don't know how to determine user's home directory, fall back to ~ - home="~$owner" - command -v realpath >/dev/null && home=$(realpath "$home") - fi - - [ -d "$home" ] && echo "$home/.ssh/authorized_keys" + owner="$(cat "$__object/parameter/owner" 2>/dev/null || echo "$__object_id")" + home=$(getent passwd "$owner" | cut -d':' -f 6) + echo "$home/.ssh/authorized_keys" fi diff --git a/cdist/conf/type/__ssh_authorized_keys/explorer/group b/cdist/conf/type/__ssh_authorized_keys/explorer/group index d259050f..72a4e314 100755 --- a/cdist/conf/type/__ssh_authorized_keys/explorer/group +++ b/cdist/conf/type/__ssh_authorized_keys/explorer/group @@ -1,7 +1,6 @@ #!/bin/sh # # 2014 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # @@ -19,28 +18,6 @@ # along with cdist. If not, see . # -if [ -s "$__object/parameter/owner" ] -then - owner=$(cat "$__object/parameter/owner") -else - owner="$__object_id" -fi - -if command -v getent >/dev/null -then - gid=$(getent passwd "$owner" | cut -d':' -f4) - getent group "$gid" || true -else - # Fallback to local file scanning - case $owner - in - [0-9][0-9]*) - gid=$(awk -F: "\$3 == \"${owner}\" { print \$4 }" /etc/passwd) - ;; - *) - gid=$(awk -F: "\$1 == \"${owner}\" { print \$4 }" /etc/passwd) - ;; - esac - - awk -F: "\$3 == \"$gid\" { print }" /etc/group -fi +owner="$(cat "$__object/parameter/owner" 2>/dev/null || echo "$__object_id")" +gid="$(getent passwd "$owner" | cut -d':' -f 4)" +getent group "$gid" || true diff --git a/cdist/conf/type/__ssh_authorized_keys/manifest b/cdist/conf/type/__ssh_authorized_keys/manifest index b9f0582e..9fad8896 100755 --- a/cdist/conf/type/__ssh_authorized_keys/manifest +++ b/cdist/conf/type/__ssh_authorized_keys/manifest @@ -23,13 +23,7 @@ owner="$(cat "$__object/parameter/owner" 2>/dev/null || echo "$__object_id")" state="$(cat "$__object/parameter/state" 2>/dev/null)" file="$(cat "$__object/explorer/file")" -if [ ! -f "$__object/parameter/nofile" ] && [ -z "$file" ] -then - echo "Cannot determine path of authorized_keys file" >&2 - exit 1 -fi - -if [ ! -f "$__object/parameter/noparent" ] || [ ! -f "$__object/parameter/nofile" ]; then +if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ]; then group="$(cut -d':' -f 1 "$__object/explorer/group")" if [ -z "$group" ]; then echo "Failed to get owners group from explorer." >&2 @@ -51,11 +45,23 @@ if [ ! -f "$__object/parameter/noparent" ] || [ ! -f "$__object/parameter/nofile fi fi +# Remove legacy blocks created by old versions of this type +# FIXME: remove me in 3.2+ +__block "$__object_name" \ + --file "$file" \ + --prefix "#cdist:$__object_name" \ + --suffix "#/cdist:$__object_name" \ + --state 'absent' \ + --text - << DONE +remove legacy block +DONE +export require="__block/$__object_name" + _cksum() { echo "$1" | cksum | cut -d' ' -f 1 } -while read -r key; do +while read key; do type_and_key="$(echo "$key" | tr ' ' '\n' | awk '/^(ssh|ecdsa)-[^ ]+/ { printf $1" "; getline; printf $1 }')" object_id="$(_cksum "$file")-$(_cksum "$type_and_key")" set -- "$object_id" @@ -63,8 +69,7 @@ while read -r key; do set -- "$@" --key "$key" set -- "$@" --state "$state" if [ -f "$__object/parameter/option" ]; then - # shellcheck disable=SC2046 - set -- "$@" $(printf -- '--option %s ' $(cat "$__object/parameter/option")) + set -- "$@" --option "$(cat "$__object/parameter/option")" fi if [ -f "$__object/parameter/comment" ]; then set -- "$@" --comment "$(cat "$__object/parameter/comment")" diff --git a/cdist/conf/type/__ssh_dot_ssh/explorer/group b/cdist/conf/type/__ssh_dot_ssh/explorer/group index faf44cb8..cdea6fe7 100755 --- a/cdist/conf/type/__ssh_dot_ssh/explorer/group +++ b/cdist/conf/type/__ssh_dot_ssh/explorer/group @@ -1,7 +1,6 @@ #!/bin/sh # # 2014 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # @@ -19,11 +18,5 @@ # along with cdist. If not, see . # -gid=$("$__type_explorer/passwd" | cut -d':' -f4) - -if command -v getent >/dev/null -then - getent group "$gid" || true -else - awk -F: "\$3 == \"$gid\" { print }" /etc/group -fi +gid="$("$__type_explorer/passwd" | cut -d':' -f 4)" +getent group "$gid" || true diff --git a/cdist/conf/type/__ssh_dot_ssh/explorer/passwd b/cdist/conf/type/__ssh_dot_ssh/explorer/passwd index 42686b20..3fbad06f 100755 --- a/cdist/conf/type/__ssh_dot_ssh/explorer/passwd +++ b/cdist/conf/type/__ssh_dot_ssh/explorer/passwd @@ -2,7 +2,6 @@ # # 2012 Steven Armstrong (steven-cdist at armstrong.cc) # 2014 Nico Schottelius (nico-cdist at schottelius.org) -# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # @@ -22,16 +21,4 @@ owner="$__object_id" -if command -v getent >/dev/null -then - getent passwd "$owner" || true -else - case $owner in - [0-9][0-9]*) - awk -F: "\$3 == \"$owner\" { print }" /etc/passwd - ;; - *) - grep "^$owner:" /etc/passwd || true - ;; - esac -fi +getent passwd "$owner" || true diff --git a/cdist/conf/type/__staged_file/gencode-local b/cdist/conf/type/__staged_file/gencode-local index ba9e8798..8e2003af 100755 --- a/cdist/conf/type/__staged_file/gencode-local +++ b/cdist/conf/type/__staged_file/gencode-local @@ -23,6 +23,7 @@ destination="$__object_id" source="$(cat "$__object/parameter/source")" +cksum="$(cat "$__object/parameter/cksum")" stage_dir="$(cat "$__object/parameter/stage-dir")" state="$(cat "$__object/parameter/state")" fetch_command="$(cat "$__object/parameter/fetch-command")" @@ -56,30 +57,24 @@ get_file() { } fetch_file() { - # shellcheck disable=SC2059 printf "$fetch_command" "$source" printf ' > "%s"\n' "$stage_file" } fetch_and_prepare_file() { - # shellcheck disable=SC2016 - printf 'tmpdir="$(mktemp -d -p "/tmp" "%s")"\n' "${__type##*/}.XXXXXXXXXX" - # shellcheck disable=SC2016 + printf 'tmpdir="$(mktemp -d --tmpdir="/tmp" "%s")"\n' "${__type##*/}.XXXXXXXXXX" printf 'cd "$tmpdir"\n' - # shellcheck disable=SC2059 - printf "$fetch_command > \"%s\"\\n" "$source" "$source_file_name" + printf "$fetch_command > \"%s\"\n" "$source" "$source_file_name" prepare_command="$(cat "$__object/parameter/prepare-command")" - # shellcheck disable=SC2059 - printf "$prepare_command > \"%s\"\\n" "$source_file_name" "$stage_file" + printf "$prepare_command > \"%s\"\n" "$source_file_name" "$stage_file" printf 'cd - >/dev/null\n' - # shellcheck disable=SC2016 printf 'rm -rf "$tmpdir"\n' } cat << DONE verify_cksum() { cksum_is="\$(cksum "$stage_file" | cut -d' ' -f1,2)" - cksum_should="$(cut -d' ' -f1,2 "$__object/parameter/cksum")" + cksum_should="$(cat "$__object/parameter/cksum" | cut -d' ' -f1,2)" if [ "\$cksum_is" = "\$cksum_should" ]; then return 0 else diff --git a/cdist/conf/type/__staged_file/manifest b/cdist/conf/type/__staged_file/manifest index c8e1fbbb..1654e1d9 100755 --- a/cdist/conf/type/__staged_file/manifest +++ b/cdist/conf/type/__staged_file/manifest @@ -19,7 +19,11 @@ # destination="$__object_id" +source="$(cat "$__object/parameter/source")" +cksum="$(cat "$__object/parameter/cksum")" stage_dir="$(cat "$__object/parameter/stage-dir")" +state="$(cat "$__object/parameter/state")" +fetch_command="$(cat "$__object/parameter/fetch-command")" stage_file="${stage_dir}/${destination}" set -- "/${destination}" diff --git a/cdist/conf/type/__start_on_boot/explorer/state b/cdist/conf/type/__start_on_boot/explorer/state index b7a6cf0f..d8f9b7ba 100644 --- a/cdist/conf/type/__start_on_boot/explorer/state +++ b/cdist/conf/type/__start_on_boot/explorer/state @@ -1,6 +1,6 @@ #!/bin/sh # -# 2012-2019 Nico Schottelius (nico-cdist at schottelius.org) +# 2012-2015 Nico Schottelius (nico-cdist at schottelius.org) # 2013 Daniel Heule (hda at sfs.biz) # # This file is part of cdist. @@ -38,27 +38,12 @@ if [ "$init" = 'systemd' ]; then else case "$os" in debian|openwrt|devuan) - state="absent" - for file in "/etc/rc$runlevel.d/S"??"$name" - do - if [ -f "$file" ] - then - state="present" - break - fi - done + state="present" + [ -f "/etc/rc$runlevel.d/S"??"$name" ] || state="absent" ;; ubuntu) state="absent" - for file in "/etc/rc$runlevel.d/S"??"$name" - do - if [ -f "$file" ] - then - state="present" - break - fi - done - + [ -f "/etc/rc$runlevel.d/S"??"$name" ] && state="present" [ -f "/etc/init/${name}.conf" ] && state="present" ;; @@ -75,25 +60,14 @@ else state=$(chkconfig --check "$name" "$runlevel" || echo absent) [ "$state" ] || state="present" ;; - gentoo|alpine) - state="absent" - for d in /etc/runlevels/*; do - if [ -f "/etc/runlevels/${d}/${name}" ];then - state="present" - break - fi - done + gentoo) + state="present" + [ -f "/etc/runlevels/${target_runlevel}/${name}" ] || state="absent" ;; freebsd) state="absent" service -e | grep "/$name$" && state="present" ;; - openbsd) - state='absent' - # OpenBSD 5.7 and higher - rcctl ls on | grep "^${name}$" && state='present' - ;; - *) echo "Unsupported os: $os" >&2 exit 1 diff --git a/cdist/conf/type/__start_on_boot/gencode-remote b/cdist/conf/type/__start_on_boot/gencode-remote index c900933f..14ee7dab 100755 --- a/cdist/conf/type/__start_on_boot/gencode-remote +++ b/cdist/conf/type/__start_on_boot/gencode-remote @@ -37,16 +37,16 @@ case "$state_should" in if [ "$init" = 'systemd' ]; then # this handles ALL linux distros with systemd # e.g. archlinux, gentoo in some cases, new RHEL and SLES versions - echo "systemctl -q enable '$name'" + echo "systemctl -q enable \"$name\"" else case "$os" in debian) case "$os_version" in [1-7]*) - echo "update-rc.d '$name' defaults >/dev/null" + echo "update-rc.d \"$name\" defaults >/dev/null" ;; 8*) - echo "systemctl enable '$name'" + echo "systemctl enable \"$name\"" ;; *) echo "Unsupported version $os_version of $os" >&2 @@ -55,37 +55,32 @@ case "$state_should" in esac ;; devuan) - echo "update-rc.d '$name' defaults >/dev/null" + echo "update-rc.d \"$name\" defaults >/dev/null" ;; - alpine|gentoo) - echo "rc-update add '$name' '$target_runlevel'" + gentoo) + echo rc-update add \"$name\" \"$target_runlevel\" ;; amazon|scientific|centos|fedora|owl|redhat|suse) - echo "chkconfig '$name' on" + echo chkconfig \"$name\" on ;; openwrt) # 'enable' can be successful and still return a non-zero exit # code, deal with it by checking for success ourselves in that # case (the || ... part). - echo "'/etc/init.d/$name' enable || [ -f /etc/rc.d/S??'$name' ]" + echo "/etc/init.d/\"$name\" enable || [ -f /etc/rc.d/S??\"$name\" ]" ;; ubuntu) - echo "update-rc.d '$name' defaults >/dev/null" + echo "update-rc.d \"$name\" defaults >/dev/null" ;; freebsd) : # handled in manifest ;; - openbsd) - # OpenBSD 5.7 and higher - echo "rcctl enable '$name'" - ;; - *) echo "Unsupported os: $os" >&2 exit 1 @@ -98,29 +93,24 @@ case "$state_should" in if [ "$init" = 'systemd' ]; then # this handles ALL linux distros with systemd # e.g. archlinux, gentoo in some cases, new RHEL and SLES versions - echo "systemctl -q disable '$name'" + echo "systemctl -q disable \"$name\"" else case "$os" in debian|ubuntu|devuan) - echo "update-rc.d -f '$name' remove" + echo update-rc.d -f \"$name\" remove ;; - alpine|gentoo) - echo "rc-update del '$name' '$target_runlevel'" + gentoo) + echo rc-update del \"$name\" \"$target_runlevel\" ;; centos|fedora|owl|redhat|suse) - echo "chkconfig '$name' off" + echo chkconfig \"$name\" off ;; openwrt) - echo "'/etc/init.d/$name' disable" - ;; - - openbsd) - # OpenBSD 5.7 and higher - echo "rcctl disable '$name'" + echo "\"/etc/init.d/$name\" disable" ;; *) diff --git a/cdist/conf/type/__start_on_boot/man.rst b/cdist/conf/type/__start_on_boot/man.rst index b7c73ab1..851d1a89 100644 --- a/cdist/conf/type/__start_on_boot/man.rst +++ b/cdist/conf/type/__start_on_boot/man.rst @@ -55,7 +55,7 @@ Nico Schottelius COPYING ------- -Copyright \(C) 2012-2019 Nico Schottelius. You can redistribute it +Copyright \(C) 2012 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. diff --git a/cdist/conf/type/__start_on_boot/manifest b/cdist/conf/type/__start_on_boot/manifest index c1c983ec..b9ee20e2 100644 --- a/cdist/conf/type/__start_on_boot/manifest +++ b/cdist/conf/type/__start_on_boot/manifest @@ -16,7 +16,7 @@ case "$os" in else value='NO' fi - __key_value "rcconf-$name-enable" \ + __key_value rcconf-$name-enable \ --file /etc/rc.conf \ --key "${name}_enable" \ --value "\"$value\"" \ diff --git a/cdist/conf/type/__sysctl/gencode-remote b/cdist/conf/type/__sysctl/gencode-remote index 711d54e5..a7aedb84 100755 --- a/cdist/conf/type/__sysctl/gencode-remote +++ b/cdist/conf/type/__sysctl/gencode-remote @@ -1,7 +1,6 @@ #!/bin/sh -e # # 2014 Steven Armstrong (steven-cdist at armstrong.cc) -# 2018 Takashi Yoshi (takashi at yoshi.email) # # This file is part of cdist. # @@ -29,26 +28,12 @@ fi os=$(cat "$__global/explorer/os") case "$os" in - # Linux - redhat|centos|ubuntu|debian|devuan|archlinux|gentoo|coreos) - flag='-w' - ;; - # BusyBox - alpine|openwrt) - flag='-w' - ;; - macosx) - # NOTE: Older versions of Mac OS X require the -w option. - # Even though the flag is not mentioned in new man pages anymore, - # it still works. - flag='-w' - ;; - netbsd) - flag='-w' - ;; - freebsd|openbsd) - flag='' - ;; + redhat|centos|ubuntu|debian|devuan|archlinux|coreos) + flag='-w' + ;; + frebsd) + flag='' + ;; esac # set the current runtime value diff --git a/cdist/conf/type/__sysctl/manifest b/cdist/conf/type/__sysctl/manifest index 71dea7f7..c903dbae 100755 --- a/cdist/conf/type/__sysctl/manifest +++ b/cdist/conf/type/__sysctl/manifest @@ -1,8 +1,6 @@ #!/bin/sh -e # # 2014 Steven Armstrong (steven-cdist at armstrong.cc) -# 2018 Takashi Yoshi (takashi at yoshi.email) -# 2019 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -24,12 +22,7 @@ os=$(cat "$__global/explorer/os") case "$os" in - # Linux - alpine|redhat|centos|ubuntu|debian|devuan|archlinux|coreos) - : - ;; - # BSD - freebsd|macosx|netbsd|openbsd) + redhat|centos|ubuntu|debian|devuan|archlinux|coreos|freebsd) : ;; *) @@ -39,10 +32,8 @@ case "$os" in ;; esac -conf_path=$(cat "$__object/explorer/conf-path") - __key_value "$__object_name" \ --key "$__object_id" \ - --file "${conf_path}" \ + --file /etc/sysctl.conf \ --value "$(cat "$__object/parameter/value")" \ --delimiter '=' diff --git a/cdist/conf/type/__systemd_unit/gencode-remote b/cdist/conf/type/__systemd_unit/gencode-remote index 967a6c87..c608d9b3 100644 --- a/cdist/conf/type/__systemd_unit/gencode-remote +++ b/cdist/conf/type/__systemd_unit/gencode-remote @@ -23,34 +23,24 @@ state=$(cat "${__object}/parameter/state") current_enablement_state=$(cat "${__object}/explorer/enablement-state") if [ "${state}" = "absent" ]; then - if [ -n "${current_enablement_state}" ]; then + if [ ! -z "${current_enablement_state}" ]; then echo "systemctl --now disable ${name}" - echo "rm -f /etc/systemd/system/${name}" - echo "systemctl daemon-reload" fi exit 0 fi unit_status=$(cat "${__object}/explorer/unit-status") -desired_enablement_state=$(cat "${__object}/parameter/enablement-state") - -if [ "${current_enablement_state}" = "masked" ] && \ - [ "${desired_enablement_state}" != "masked" ]; then - echo "systemctl unmask ${name}" -fi if [ -f "${__object}/parameter/restart" ]; then - if [ "${desired_enablement_state}" = "masked" ]; then - if [ "${unit_status}" = "active" ]; then - echo "systemctl stop ${name}" - fi - elif grep -q "^__file/etc/systemd/system/${name}" "${__messages_in}" || \ + if grep -q "^__file/etc/systemd/system/${name}" "${__messages_in}" || \ [ "${unit_status}" != "active" ]; then echo "systemctl restart ${name} || true" fi fi +desired_enablement_state=$(cat "${__object}/parameter/enablement-state") + if [ "${current_enablement_state}" = "${desired_enablement_state}" ]; then exit 0 fi @@ -66,9 +56,6 @@ case "${desired_enablement_state}" in disabled) echo "systemctl disable ${name}" ;; - masked) - echo "systemctl mask ${name}" - ;; *) echo "Unsupported unit status: ${desired_enablement_state}" >&2 exit 1 diff --git a/cdist/conf/type/__systemd_unit/man.rst b/cdist/conf/type/__systemd_unit/man.rst index 25a4e501..88da6b30 100644 --- a/cdist/conf/type/__systemd_unit/man.rst +++ b/cdist/conf/type/__systemd_unit/man.rst @@ -9,10 +9,9 @@ cdist-type__systemd_unit - Install a systemd unit DESCRIPTION ----------- -This type manages systemd units in ``/etc/systemd/system/``. It can install, -enable and start a systemd unit. This is particularly useful on systems which -take advantage of systemd heavily (e.g., CoreOS). For more information about -systemd units, see SYSTEMD.UNIT(5). +This type can install, enable and start a systemd unit. This is particularly +useful on systems which take advantage of systemd heavily (e.g., CoreOS). For +more information about systemd units, see SYSTEMD.UNIT(5). REQUIRED PARAMETERS ------------------- @@ -23,14 +22,12 @@ OPTIONAL PARAMETERS ------------------- enablement-state - 'enabled', 'disabled' or 'masked', where: + 'enabled' or 'disabled', where: enabled enables the unit disabled disables the unit - masked - masks the unit source Path to the config file. If source is '-' (dash), take what was written to @@ -40,17 +37,15 @@ state 'present' or 'absent', defaults to 'present' where: present - the unit (or its mask) is installed + the unit is installed, enabled and started absent - The unit is stopped, disabled and uninstalled. If the unit was masked, - the mask is removed. + the unit is stopped, disabled and uninstalled BOOLEAN PARAMETERS ------------------ restart - Start the unit if it was inactive. Restart the unit if the unit file - changed. Stop the unit if new ``enablement-state`` is ``masked``. + Restart the unit on unit file change or when the unit is inactive. MESSAGES -------- diff --git a/cdist/conf/type/__systemd_unit/manifest b/cdist/conf/type/__systemd_unit/manifest index 688a00b1..8b136605 100644 --- a/cdist/conf/type/__systemd_unit/manifest +++ b/cdist/conf/type/__systemd_unit/manifest @@ -29,11 +29,8 @@ fi name="${__object_id}" source=$(cat "${__object}/parameter/source") state=$(cat "${__object}/parameter/state") -enablement_state=$(cat "${__object}/parameter/enablement-state") -# The unit must be disabled before removing its unit file. The unit file is -# therefore removed by gencode-remote of this type, not here. -if [ -z "${source}" ] || [ "${state}" = "absent" ]; then +if [ -z "${source}" ] && [ "${state}" != "absent" ]; then exit 0 fi @@ -42,17 +39,8 @@ if [ "${source}" = "-" ]; then source="${__object}/stdin" fi -unitfile_state="${state}" -if [ "${enablement_state}" = "masked" ]; then - # Masking creates a symlink from /etc/systemd/system/ to /dev/null. - # This process fails with "Failed to execute operation: Invalid argument" - # if file /etc/systemd/system/ already exists. We must therefore - # remove it. - unitfile_state="absent" -fi - __config_file "/etc/systemd/system/${name}" \ --mode 644 \ --onchange "systemctl daemon-reload" \ --source "${source}" \ - --state "${unitfile_state}" + --state "${state}" diff --git a/cdist/conf/type/__timezone/gencode-remote b/cdist/conf/type/__timezone/gencode-remote index 5299f548..1f3f0196 100755 --- a/cdist/conf/type/__timezone/gencode-remote +++ b/cdist/conf/type/__timezone/gencode-remote @@ -1,7 +1,6 @@ #!/bin/sh -e # # 2012 Steven Armstrong (steven-cdist at armstrong.cc) -# 2019 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -30,7 +29,7 @@ if [ "$timezone_is" = "$timezone_should" ]; then fi case "$os" in - ubuntu|debian|devuan|coreos|alpine) + ubuntu|debian|devuan|coreos) echo "echo \"$timezone_should\" > /etc/timezone" ;; esac diff --git a/cdist/conf/type/__timezone/manifest b/cdist/conf/type/__timezone/manifest index 3d28ccba..a20f5d32 100755 --- a/cdist/conf/type/__timezone/manifest +++ b/cdist/conf/type/__timezone/manifest @@ -2,7 +2,7 @@ # # 2011 Ramon Salvadó (rsalvado at gnuine dot com) # 2012-2015 Steven Armstrong (steven-cdist at armstrong.cc) -# 2012-2019 Nico Schottelius (nico-cdist at schottelius.org) +# 2012 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -26,7 +26,7 @@ timezone="$__object_id" os=$(cat "$__global/explorer/os") case "$os" in - archlinux|debian|ubuntu|devuan|alpine) + archlinux|debian|ubuntu|devuan) __package tzdata export require="__package/tzdata" ;; @@ -34,11 +34,7 @@ case "$os" in __package timezone export require="__package/timezone" ;; - freebsd|netbsd|openbsd) - # whitelist - : - ;; - coreos) + freebsd|netbsd|coreos) # whitelist : ;; diff --git a/cdist/conf/type/__ufw/gencode-remote b/cdist/conf/type/__ufw/gencode-remote deleted file mode 100644 index fc62b591..00000000 --- a/cdist/conf/type/__ufw/gencode-remote +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh -e -# -# 2019 Mark Polyakov (mark--@--markasoftware.com) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -state="$(cat "$__object/parameter/state")" - -case "$state" in - enabled) - echo 'ufw --force enable' - ;; - - present) - echo 'ufw --force disable' - ;; - # absent will be uninstalled in manifest -esac - -if [ "$state" != absent ]; then - if [ -f "$__object/parameter/logging" ]; then - logging="$(cat "$__object/parameter/logging")" - case "$logging" in - off|low|medium|high|full) - echo "ufw --force logging $logging" - ;; - *) - echo 'Logging parameter must be off, low, medium, high, or full!' >&2 - exit 1 - ;; - esac - fi - - for direction in incoming outgoing routed; do - if [ -f "$__object/parameter/default_$direction" ]; then - treatment="$(cat "$__object/parameter/default_$direction")" - case "$treatment" in - allow|deny|reject) - echo "ufw --force default $treatment $direction" - ;; - *) - echo 'UFW default policies must be either "allow", "deny", or "reject".' >&2 - exit 1 - ;; - esac - fi - done -fi diff --git a/cdist/conf/type/__ufw/man.rst b/cdist/conf/type/__ufw/man.rst deleted file mode 100644 index cc64fbb5..00000000 --- a/cdist/conf/type/__ufw/man.rst +++ /dev/null @@ -1,59 +0,0 @@ -cdist-type__ufw(7) -================== - -NAME ----- -cdist-type__ufw - Install the Uncomplicated FireWall - - -DESCRIPTION ------------ -Installs the Uncomplicated FireWall. Most modern distributions carry UFW in their main repositories, but on CentOS this type will automatically enable the EPEL repository. - -Some global configuration can also be set with this type. - -OPTIONAL PARAMETERS -------------------- -state - Either "enabled", "running", "present", or "absent". Defaults to "enabled", which registers UFW to start on boot. - -logging - Either "off", "low", "medium", "high", or "full". Will be passed to `ufw logging`. If not specified, logging level is not modified. - -default_incoming - Either "allow", "deny", or "reject". The default policy for dealing with ingress packets. - -default_outgoing - Either "allow", "deny", or "reject". The default policy for dealing with egress packets. - -default_routed - Either "allow", "deny", or "reject". The default policy for dealing with routed packets (passing through this machine). - - -EXAMPLES --------- - -.. code-block:: sh - - # Install UFW - __ufw - # Setup UFW with maximum logging and no restrictions on routed packets. - __ufw --logging full --default_routed allow - - -SEE ALSO --------- -:strong:`ufw`\ (8) - - -AUTHORS -------- -Mark Polyakov - - -COPYING -------- -Copyright \(C) 2019 Mark Polyakov. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__ufw/manifest b/cdist/conf/type/__ufw/manifest deleted file mode 100755 index 54309ff5..00000000 --- a/cdist/conf/type/__ufw/manifest +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/sh -e -# -# 2019 Mark Polyakov (mark--@--markasoftware.com) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -state="$(cat "$__object/parameter/state")" - -case "$state" in - present|enabled) - os="$(cat "$__global/explorer/os")" - - case "$os" in - centos) - # shellcheck source=/dev/null - if (. "$__global/explorer/os_release" && [ "${VERSION_ID}" = "7" ]); then - __package epel-release - require='__package/epel-release' __package ufw - else - echo 'CentOS version 7 is required!' - exit 1 - fi - ;; - *) - __package ufw - ;; - esac - - # ufw expects to always be enabled, then uses a switch in /etc to - # determine whether to "actually start" after the init system calls it. - # So, we have to both enable on bootup through init and run `ufw enable` - - # operators ae left-associative, so if !enabled it will never run - if [ "$(cat "$__global/explorer/os")" != ubuntu ] || \ - [ "$(cat "$__global/explorer/init")" != init ] && \ - [ "$state" = enabled ]; then - # Why don't we disable start_on_boot when state=present|absent? - # Because UFW should always be enabled at boot -- /etc/ufw/ufw.conf - # will stop it from "really" starting - require='__package/ufw' __start_on_boot ufw - fi - ;; - - absent) - __package ufw --state absent - ;; - - *) - echo 'State must be "enabled", "present", or "absent".' - exit 1 - ;; -esac - diff --git a/cdist/conf/type/__ufw/parameter/default/state b/cdist/conf/type/__ufw/parameter/default/state deleted file mode 100644 index 26ed6c9b..00000000 --- a/cdist/conf/type/__ufw/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -enabled \ No newline at end of file diff --git a/cdist/conf/type/__ufw/parameter/optional b/cdist/conf/type/__ufw/parameter/optional deleted file mode 100644 index 0a4dec97..00000000 --- a/cdist/conf/type/__ufw/parameter/optional +++ /dev/null @@ -1,5 +0,0 @@ -state -logging -default_incoming -default_outgoing -default_routed \ No newline at end of file diff --git a/cdist/conf/type/__ufw/singleton b/cdist/conf/type/__ufw/singleton deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__ufw_rule/gencode-remote b/cdist/conf/type/__ufw_rule/gencode-remote deleted file mode 100755 index 4f1bf2c9..00000000 --- a/cdist/conf/type/__ufw_rule/gencode-remote +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -e -# -# 2019 Mark Polyakov (mark@markasoftware.com) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -# This type does not bother with checking the current state of the rules. -# While it is possible to retrieve the list of rules in a consistent format from -# `ufw status`, it is a completely different format than the one used on the -# command line. I also do not suspect it is any faster. - -ufw='ufw --force rule' - -case "$(cat "$__object/parameter/state")" in - present) ;; - absent) - ufw="$ufw delete" - ;; - *) - echo 'State must be "present" or "absent".' >&2 - exit 1 - ;; -esac - -if [ -f "$__object/parameter/rule" ]; then - ufw="$ufw $(cat "$__object/parameter/rule")" -else - ufw="$ufw allow $__object_id" -fi - -echo "$ufw" diff --git a/cdist/conf/type/__ufw_rule/man.rst b/cdist/conf/type/__ufw_rule/man.rst deleted file mode 100644 index 996557f8..00000000 --- a/cdist/conf/type/__ufw_rule/man.rst +++ /dev/null @@ -1,53 +0,0 @@ -cdist-type__ufw_rule(7) -======================= - -NAME ----- -cdist-type__ufw_rule - A single UFW rule - - -DESCRIPTION ------------ -Adds or removes a single UFW rule. This type supports adding and deleting rules for port ranges or applications. - -Understanding what is "to" and what is "from" can be confusing. If the rule is ingress (default), then "from" is the remote machine and "to" is the local one. The opposite is true for egress traffic (--out). - -OPTIONAL PARAMETERS -------------------- -state - Either "present" or "absent". Defaults to "present". If "absent", only removes rules that exactly match the rule expected. - -rule - A firewall rule in UFW syntax. This is what you would usually write after `ufw` on the command line. Defaults to "allow" followed by the object ID. You can use either the short syntax (just allow|deny|reject|limit followed by a port or application name) or the full syntax. Do not include `delete` in your command. Set `--state absent` instead. - -EXAMPLES --------- - -.. code-block:: sh - - # open port 80 (ufw allow 80) - __ufw_rule 80 - # Allow mosh application (if installed) - __ufw_rule mosh - # Allow all traffic from local network (ufw allow from 10.0.0.0/24) - __ufw_rule local --rule 'allow from 10.0.0.0/24' - # Block egress traffic from port 25 to 111.55.55.55 on interface eth0 - __ufw_rule block_smtp --rule 'deny out on eth0 from any port 25 to 111.55.55.55' - - -SEE ALSO --------- -:strong:`ufw`\ (8) - - -AUTHORS -------- -Mark Polyakov - - -COPYING -------- -Copyright \(C) 2019 Mark Polyakov. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__ufw_rule/parameter/default/state b/cdist/conf/type/__ufw_rule/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__ufw_rule/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__ufw_rule/parameter/optional b/cdist/conf/type/__ufw_rule/parameter/optional deleted file mode 100644 index 0732d53d..00000000 --- a/cdist/conf/type/__ufw_rule/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -state -rule diff --git a/cdist/conf/type/__user/explorer/group b/cdist/conf/type/__user/explorer/group index 0fd1471a..2aae2973 100755 --- a/cdist/conf/type/__user/explorer/group +++ b/cdist/conf/type/__user/explorer/group @@ -23,9 +23,11 @@ if [ -f "$__object/parameter/gid" ]; then gid=$(cat "$__object/parameter/gid") - if command -v getent >/dev/null; then - getent group "$gid" || true + getent=$(command -v getent) + if [ X != X"${getent}" ]; then + "${getent}" group "$gid" || true elif [ -f /etc/group ]; then grep -E "^(${gid}|([^:]+:){2}${gid}):" /etc/group || true fi fi + diff --git a/cdist/conf/type/__user/explorer/passwd b/cdist/conf/type/__user/explorer/passwd index b8391a6f..677e3ff0 100755 --- a/cdist/conf/type/__user/explorer/passwd +++ b/cdist/conf/type/__user/explorer/passwd @@ -23,8 +23,9 @@ name=$__object_id -if command -v getent >/dev/null; then - getent passwd "$name" || true +getent=$(command -v getent) +if [ X != X"${getent}" ]; then + "${getent}" passwd "$name" || true elif [ -f /etc/passwd ]; then grep "^${name}:" /etc/passwd || true fi diff --git a/cdist/conf/type/__user/explorer/shadow b/cdist/conf/type/__user/explorer/shadow index 73ce0e29..1e6658d4 100755 --- a/cdist/conf/type/__user/explorer/shadow +++ b/cdist/conf/type/__user/explorer/shadow @@ -1,4 +1,4 @@ -#!/bin/sh -e +#!/bin/sh # # 2011 Steven Armstrong (steven-cdist at armstrong.cc) # @@ -22,19 +22,18 @@ # name=$__object_id +os="$($__explorer/os)" +# Default to using shadow passwords +database="shadow" -case $("$__explorer/os") in - 'freebsd'|'netbsd'|'openbsd') - database='passwd' - ;; - # Default to using shadow passwords - *) - database='shadow' - ;; +case "$os" in + "freebsd"|"netbsd"|"openbsd") database="passwd";; esac + -if command -v getent >/dev/null; then - getent "$database" "$name" || true +getent=$(command -v getent) +if [ X != X"${getent}" ]; then + "${getent}" "$database" "$name" || true elif [ -f /etc/shadow ]; then grep "^${name}:" /etc/shadow || true fi diff --git a/cdist/conf/type/__user/gencode-remote b/cdist/conf/type/__user/gencode-remote index ee18c18f..23762065 100755 --- a/cdist/conf/type/__user/gencode-remote +++ b/cdist/conf/type/__user/gencode-remote @@ -3,7 +3,6 @@ # 2011 Steven Armstrong (steven-cdist at armstrong.cc) # 2011 Nico Schottelius (nico-cdist at schottelius.org) # 2013 Daniel Heule (hda at sfs.biz) -# 2018 Thomas Eckert (tom at it-eckert.de) # # This file is part of cdist. # @@ -53,7 +52,7 @@ shorten_property() { if [ "$state" = "present" ]; then cd "$__object/parameter" if grep -q "^${name}:" "$__object/explorer/passwd"; then - for property in *; do + for property in $(ls .); do new_value="$(cat "$property")" unset current_value @@ -61,7 +60,7 @@ if [ "$state" = "present" ]; then case "$property" in gid) - if echo "$new_value" | grep -q '^[0-9][0-9]*$'; then + if $(echo "$new_value" | grep -q '^[0-9][0-9]*$'); then field=4 else # We were passed a group name. Compare the gid in @@ -98,7 +97,7 @@ if [ "$state" = "present" ]; then fi if [ "$new_value" != "$current_value" ]; then - set -- "$@" "$(shorten_property "$property")" \'"$new_value"\' + set -- "$@" "$(shorten_property $property)" \'$new_value\' fi done @@ -114,14 +113,14 @@ if [ "$state" = "present" ]; then fi else echo add >> "$__messages_out" - for property in *; do + for property in $(ls .); do [ "$property" = "state" ] && continue [ "$property" = "remove-home" ] && continue new_value="$(cat "$property")" if [ -z "$new_value" ];then # Boolean values have no value - set -- "$@" "$(shorten_property "$property")" + set -- "$@" "$(shorten_property $property)" else - set -- "$@" "$(shorten_property "$property")" \'"$new_value"\' + set -- "$@" "$(shorten_property $property)" \'$new_value\' fi done @@ -131,17 +130,13 @@ if [ "$state" = "present" ]; then echo useradd "$@" "$name" fi fi -elif [ "$state" = "absent" ]; then +else if grep -q "^${name}:" "$__object/explorer/passwd"; then #user exists, but state != present, so delete it if [ -f "$__object/parameter/remove-home" ]; then - printf "userdel -r '%s' >/dev/null 2>&1\\n" "${name}" - echo "userdel -r" >> "$__messages_out" + echo userdel -r "${name}" else - printf "userdel '%s' >/dev/null 2>&1\\n" "${name}" - echo "userdel" >> "$__messages_out" + echo userdel "${name}" fi fi -else - echo "Invalid state $state" >&2 fi diff --git a/cdist/conf/type/__user/man.rst b/cdist/conf/type/__user/man.rst index ef6b77af..5001bfa4 100644 --- a/cdist/conf/type/__user/man.rst +++ b/cdist/conf/type/__user/man.rst @@ -60,11 +60,6 @@ mod add New user added -userdel -r - If user was deleted with homedir - -userdel - If user was deleted (keeping homedir) EXAMPLES -------- diff --git a/cdist/conf/type/__user/manifest b/cdist/conf/type/__user/manifest deleted file mode 100644 index 8f10b38c..00000000 --- a/cdist/conf/type/__user/manifest +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -e -# -# 2019 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Manage users. - -os=$(cat "$__global/explorer/os") - -case "$os" in - alpine) - __package shadow - ;; - *) - : - ;; -esac diff --git a/cdist/conf/type/__xymon_apache/explorer/active-conf b/cdist/conf/type/__xymon_apache/explorer/active-conf deleted file mode 100755 index bd281e21..00000000 --- a/cdist/conf/type/__xymon_apache/explorer/active-conf +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -if [ -d /etc/apache2/mods-enabled ]; then - ls -1 /etc/apache2/conf-enabled/ -fi diff --git a/cdist/conf/type/__xymon_apache/explorer/active-modules b/cdist/conf/type/__xymon_apache/explorer/active-modules deleted file mode 100755 index 4c745ced..00000000 --- a/cdist/conf/type/__xymon_apache/explorer/active-modules +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -e - -if [ -d /etc/apache2/mods-enabled ]; then - /usr/sbin/apachectl -t -D DUMP_MODULES | awk '/.*_module/ { gsub(/_module.*$/, ""); gsub(/^ /, ""); print }' -fi diff --git a/cdist/conf/type/__xymon_apache/gencode-remote b/cdist/conf/type/__xymon_apache/gencode-remote deleted file mode 100755 index e7d8e344..00000000 --- a/cdist/conf/type/__xymon_apache/gencode-remote +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -state=$(cat "$__object/parameter/state") - -os=$(cat "$__global/explorer/os") -case "$os" in - debian|ubuntu) - : - ;; - *) - echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 - echo "Please contribute an implementation for it if you can." >&2 - exit 1 - ;; -esac - -if [ "$state" = "present" ]; then - if ! grep -q ^rewrite "$__object/explorer/active-modules"; then - echo "a2enmod rewrite >/dev/null" - echo "mod:rewrite enabled" >> "$__messages_out" - fi - if ! grep -q "^cgi$" "$__object/explorer/active-modules"; then - echo "a2enmod cgi >/dev/null" - echo "mod:cgi enabled" >> "$__messages_out" - fi - - if ! grep -q ^xymon.conf "$__object/explorer/active-conf"; then - echo "a2enconf xymon >/dev/null" - echo "conf:xymon enabled" >> "$__messages_out" - fi -fi - -if grep -q "^mod:.* enabled" "$__messages_out"; then - echo "systemctl restart apache2.service" - echo "apache restarted" >> "$__messages_out" -elif grep -q "^conf:xymon enabled" "$__messages_out"; then - echo "systemctl reload apache2.service" - echo "apache reloaded" >> "$__messages_out" -fi diff --git a/cdist/conf/type/__xymon_apache/man.rst b/cdist/conf/type/__xymon_apache/man.rst deleted file mode 100644 index 8358c821..00000000 --- a/cdist/conf/type/__xymon_apache/man.rst +++ /dev/null @@ -1,79 +0,0 @@ -cdist-type__xymon_apache(7) -=========================== - -NAME ----- -cdist-type__xymon_apache - Configure apache2-webserver for Xymon - - -DESCRIPTION ------------ -This cdist type installs and configures apache2 to be used "exclusively" (in -the sense that no other use is taken care of) with Xymon (the systems and -network monitor). - -It depends on `__xymon_server`. - - -REQUIRED PARAMETERS -------------------- -None. - - -OPTIONAL PARAMETERS -------------------- -state - 'present', 'absent', defaults to 'present'. - -ipacl - IP(-ranges) that have access to the Xymon webpages and CGIs. Apache2-style - syntax suitable for `Require ip ...`. Example: `192.168.1.0/24 10.0.0.0/8` - - -MESSAGES --------- -mod:rewrite enabled - apache module enabled -conf:xymon enabled - apache config for xymon enabled -apache restarted - apache2.service was reloaded -apache reloaded - apache2.service was restarted - - -EXPLORERS ---------- -active-conf - lists apache2 `conf-enabled` -active-modules - lists active apache2-modules - - -EXAMPLES --------- - -.. code-block:: sh - - # minmal, only localhost-access: - __xymon_apache - # allow more IPs to access the Xymon-webinterface: - __xymon_apache --ipacl "192.168.0.0/16 10.0.0.0/8" --state "present" - - -SEE ALSO --------- -:strong:`cdist__xymon_server`\ (7) - - -AUTHORS -------- -Thomas Eckert - - -COPYING -------- -Copyright \(C) 2018-2019 Thomas Eckert. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__xymon_apache/manifest b/cdist/conf/type/__xymon_apache/manifest deleted file mode 100755 index bfd0af79..00000000 --- a/cdist/conf/type/__xymon_apache/manifest +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -state=$(cat "$__object/parameter/state") - -os=$(cat "$__global/explorer/os") -case "$os" in - debian|ubuntu) - : - ;; - *) - echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 - echo "Please contribute an implementation for it if you can." >&2 - exit 1 - ;; -esac - -__package apache2 --state "$state" - -## edit xymon.conf IP-ranges -if [ -f "$__object/parameter/ipacl" ]; then - require="__package/xymon" __line /etc/apache2/conf-available/xymon.conf \ - --line " Require ip $(cat "$__object/parameter/ipacl")" \ - --after "^[[:space:]]*Require local" \ - --state "present" -fi diff --git a/cdist/conf/type/__xymon_apache/parameter/default/state b/cdist/conf/type/__xymon_apache/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__xymon_apache/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__xymon_apache/parameter/optional b/cdist/conf/type/__xymon_apache/parameter/optional deleted file mode 100644 index d374ec41..00000000 --- a/cdist/conf/type/__xymon_apache/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -state -ipacl diff --git a/cdist/conf/type/__xymon_apache/singleton b/cdist/conf/type/__xymon_apache/singleton deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__xymon_client/gencode-remote b/cdist/conf/type/__xymon_client/gencode-remote deleted file mode 100755 index 49eed317..00000000 --- a/cdist/conf/type/__xymon_client/gencode-remote +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -servers=$(cat "$__object/parameter/servers") - -if grep -q ^__key_value/CLIENTHOSTNAME "$__messages_in" || grep -q ^__key_value/XYMONSERVERS "$__messages_in" ; then - echo "systemctl restart xymon-client" - echo "restarted" >> "$__messages_out" - cat <<-EOT - echo "xymon-client xymon-client/XYMONSERVERS string $servers" | debconf-set-selections - EOT -fi diff --git a/cdist/conf/type/__xymon_client/man.rst b/cdist/conf/type/__xymon_client/man.rst deleted file mode 100644 index 05d085dc..00000000 --- a/cdist/conf/type/__xymon_client/man.rst +++ /dev/null @@ -1,66 +0,0 @@ -cdist-type__xymon_client(7) -=========================== - -NAME ----- -cdist-type__xymon_client - Install the Xymon client - - -DESCRIPTION ------------ -This cdist type installs the Xymon client and configures it to report with -FQDN. - - -REQUIRED PARAMETERS -------------------- -None. - - -OPTIONAL PARAMETERS -------------------- -state - 'present', 'absent', defaults to 'present'. - -servers - One or more IP addresses (space separated) of the Xymon server(s) to report - to. While DNS-names are ok it is discouraged, defaults to 127.0.0.1. - - -BOOLEAN PARAMETERS ------------------- -msgcache - Enable xymon `msgcache`. Note: XYMONSERVER has to be `127.0.0.1` for using - `msgcache` (see `msgcache (8)` of the xymon documentation for details). - -EXAMPLES --------- - -.. code-block:: sh - - # minimal, report to 127.0.0.1 - __xymon_client - - # specify server: - __xymon_client --servers "192.168.1.1" - - # activate `msgcache` for passive client: - __xymon_client --msgcache - - -SEE ALSO --------- -:strong:`cdist__xymon_server`\ (7), :strong:`xymon`\ (7), :strong:`msgcache`\ (8) - - -AUTHORS -------- -Thomas Eckert - - -COPYING -------- -Copyright \(C) 2018-2019 Thomas Eckert. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__xymon_client/manifest b/cdist/conf/type/__xymon_client/manifest deleted file mode 100755 index 88293a12..00000000 --- a/cdist/conf/type/__xymon_client/manifest +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -state=$(cat "$__object/parameter/state") -servers=$(cat "$__object/parameter/servers") - -os=$(cat "$__global/explorer/os") -case "$os" in - debian|ubuntu) - : - ;; - *) - echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 - echo "Please contribute an implementation for it if you can." >&2 - exit 1 - ;; -esac - -__package xymon-client --state "$state" - -if [ -f "$__object/parameter/msgcache" ]; then - require="__package/xymon-client" __line /etc/xymon/clientlaunch.cfg \ - --regex DISABLED --state absent -fi - -require="__package/xymon-client" __key_value CLIENTHOSTNAME \ - --file /etc/default/xymon-client \ - --value "'$__target_hostname'" \ - --delimiter '=' \ - --state "$state" -require="__package/xymon-client" __key_value XYMONSERVERS \ - --file /etc/default/xymon-client \ - --value "'$servers'" \ - --delimiter '=' \ - --state "$state" - -## CLI-usage often requires a shell: -require="__package/xymon-client" __user xymon --shell "/bin/bash" --state "$state" diff --git a/cdist/conf/type/__xymon_client/parameter/boolean b/cdist/conf/type/__xymon_client/parameter/boolean deleted file mode 100644 index 0dd7839d..00000000 --- a/cdist/conf/type/__xymon_client/parameter/boolean +++ /dev/null @@ -1 +0,0 @@ -msgcache diff --git a/cdist/conf/type/__xymon_client/parameter/default/servers b/cdist/conf/type/__xymon_client/parameter/default/servers deleted file mode 100644 index 7b9ad531..00000000 --- a/cdist/conf/type/__xymon_client/parameter/default/servers +++ /dev/null @@ -1 +0,0 @@ -127.0.0.1 diff --git a/cdist/conf/type/__xymon_client/parameter/default/state b/cdist/conf/type/__xymon_client/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__xymon_client/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__xymon_client/parameter/optional b/cdist/conf/type/__xymon_client/parameter/optional deleted file mode 100644 index 7c34489a..00000000 --- a/cdist/conf/type/__xymon_client/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -state -servers diff --git a/cdist/conf/type/__xymon_client/singleton b/cdist/conf/type/__xymon_client/singleton deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__xymon_config/files/.keep b/cdist/conf/type/__xymon_config/files/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__xymon_config/gencode-remote b/cdist/conf/type/__xymon_config/gencode-remote deleted file mode 100644 index b25a0fda..00000000 --- a/cdist/conf/type/__xymon_config/gencode-remote +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -## to speed up config-reload we send a HUP to the server process: -cat <<-EOT - pkill -HUP xymond || { echo "HUPing xymond failed" >&2; exit 1; } -EOT diff --git a/cdist/conf/type/__xymon_config/man.rst b/cdist/conf/type/__xymon_config/man.rst deleted file mode 100644 index 8adfbe1f..00000000 --- a/cdist/conf/type/__xymon_config/man.rst +++ /dev/null @@ -1,78 +0,0 @@ -cdist-type__xymon_config(7) -=========================== - -NAME ----- -cdist-type__xymon_config - Deploy a Xymon configuration-directory - - -DESCRIPTION ------------ -This cdist type deploys a full Xymon configuration directory from the files-dir -to the host. This type requires an installed Xymon server, e.g. deployed by -`__xymon_server`. - -WARNING: This type _replaces_ the `/etc/xymon/`-directory! The previous -contents is replaced/deleted! - - -REQUIRED PARAMETERS -------------------- -confdir - The directory in `./files/` that contains the `/etc/xymon/`-content to be - deployed. - - -OPTIONAL PARAMETERS -------------------- -owner - passed as-is as `--owner` to `__rsync` - -group - passed as-is as `--group` to `__rsync` - - -OPTIONAL MULTIPLE PARAMETERS ----------------------------- -rsync-opts - identical to __rsync type, only `--`-options are supported - - -REQUIRED FILES --------------- -The directory specified by `confdir` has to contain a valid xymon-configuration -(`/etc/xymon/`) _plus_ the `ext/`-directory that normally resides in -`/usr/lib/xymon/server/`. - - -EXAMPLES --------- - -.. code-block:: sh - - __xymon_config --confdir=xymon.example.com - # this will replace /etc/xymon/ on the target host with - # the contents from __xymon_config/files/xymon.example.com/ - - ## the same but set ownership to `xymon:xymon` and exclude - ## the `netrc`-file: - __xymon_config --confdir=xymon.example.com \ - --owner xymon --group xymon \ - --rsync-opts "exclude=netrc" - - -SEE ALSO --------- -:strong:`cdist__xymon_server`\ (7), :strong:`cdist__rsync`\ (7), :strong:`xymon`\ (7) - -AUTHORS -------- -Thomas Eckert - - -COPYING -------- -Copyright \(C) 2018-2019 Thomas Eckert. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__xymon_config/manifest b/cdist/conf/type/__xymon_config/manifest deleted file mode 100644 index 4a5fb6c9..00000000 --- a/cdist/conf/type/__xymon_config/manifest +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -confdir=$(cat "$__object/parameter/confdir") -set -- -if [ -f "$__object/parameter/owner" ]; then - owner=$(cat "$__object/parameter/owner") - set -- "$@" "--owner $owner" -fi -if [ -f "$__object/parameter/group" ]; then - group=$(cat "$__object/parameter/group") - set -- "$@" "--group $group" -fi - -## pass `--rsync-opts` as-is to `__rsync`: -if [ -f "$__object/parameter/rsync-opts" ]; then - while read -r opts; do - # shellcheck disable=SC2089 - set -- "$@" "--rsync-opts '$opts'" - done < "$__object/parameter/rsync-opts" -fi - -# shellcheck disable=SC2068,SC2090 -__rsync /etc/xymon/ \ - --source "$__type/files/$confdir/" \ - --rsync-opts "delete" \ - $@ diff --git a/cdist/conf/type/__xymon_config/parameter/optional b/cdist/conf/type/__xymon_config/parameter/optional deleted file mode 100644 index 866b4bde..00000000 --- a/cdist/conf/type/__xymon_config/parameter/optional +++ /dev/null @@ -1,2 +0,0 @@ -owner -group diff --git a/cdist/conf/type/__xymon_config/parameter/optional_multiple b/cdist/conf/type/__xymon_config/parameter/optional_multiple deleted file mode 100644 index fdb7cd88..00000000 --- a/cdist/conf/type/__xymon_config/parameter/optional_multiple +++ /dev/null @@ -1 +0,0 @@ -rsync-opts diff --git a/cdist/conf/type/__xymon_config/parameter/required b/cdist/conf/type/__xymon_config/parameter/required deleted file mode 100644 index 43222f13..00000000 --- a/cdist/conf/type/__xymon_config/parameter/required +++ /dev/null @@ -1 +0,0 @@ -confdir diff --git a/cdist/conf/type/__xymon_config/singleton b/cdist/conf/type/__xymon_config/singleton deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__xymon_server/gencode-remote b/cdist/conf/type/__xymon_server/gencode-remote deleted file mode 100755 index 0770e319..00000000 --- a/cdist/conf/type/__xymon_server/gencode-remote +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -## "move" user-modified dirs to /etc/xymon to be managed by __xymon_config: -cat <<-EOT - if [ ! -L /usr/lib/xymon/server/ext ]; then - mv /usr/lib/xymon/server/ext /etc/xymon - ln -s /etc/xymon/ext /usr/lib/xymon/server/ - fi -EOT diff --git a/cdist/conf/type/__xymon_server/man.rst b/cdist/conf/type/__xymon_server/man.rst deleted file mode 100644 index a9a180e1..00000000 --- a/cdist/conf/type/__xymon_server/man.rst +++ /dev/null @@ -1,87 +0,0 @@ -cdist-type__xymon_server(7) -=========================== - -NAME ----- -cdist-type__xymon_server - Install a Xymon server - - -DESCRIPTION ------------ -This cdist type installs a Xymon (https://www.xymon.com/) server and (optional) -required helper packages. - -This includes the Xymon client as a dependency, so NO NEED to install -`__xymon_client` separately. - -To access the webinterface a webserver is required. The cdist-type -`__xymon_apache` can be used to install and configure the apache webserver for -the use with Xymon. - -Further and day-to-day configuration of Xymon can either be done manually in -`/etc/xymon/` or the directory can be deployed and managed by `__xymon_config`. - - -REQUIRED PARAMETERS -------------------- -None. - - -OPTIONAL PARAMETERS -------------------- -state - 'present', 'absent', defaults to 'present'. If '--install_helpers' is - specified for 'absent' the helper packages will be un-installed. - - -BOOLEAN PARAMETERS ------------------- -install_helpers - Install helper packages used by Xymon (fping, heirloom-mailx, traceroute, - ntpdate). - - -EXAMPLES --------- - -.. code-block:: sh - - # minmal - __xymon_server - - # the same - __xymon_server --state present - - # also install helper packages: - __xymon_server --install_helpers - - # examples to give a more complete picture: __xymon_server installed on - # `xymon.example.com` w/ IP 192.168.1.1: - # - # install webserver and grant 2 private subnets access to the webinterface: - __xymon_apache --ipacl "192.168.0.0/16 10.0.0.0/8" - # deploy server-configuration with __xymon_config: - __xymon_config --confdir=xymon.example.com - - # install xymon-client on other machines (not needed on the server): - __xymon_client --servers "192.168.1.1" - - - -SEE ALSO --------- -:strong:`cdist__xymon_apache`\ (7), :strong:`cdist__xymon_config`\ (7), -:strong:`cdist__xymon_client`\ (7), :strong:`xymon`\ (7) - - -AUTHORS -------- -Thomas Eckert - - -COPYING -------- -Copyright \(C) 2018-2019 Thomas Eckert. You can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. diff --git a/cdist/conf/type/__xymon_server/manifest b/cdist/conf/type/__xymon_server/manifest deleted file mode 100755 index 7cee0d23..00000000 --- a/cdist/conf/type/__xymon_server/manifest +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -e -# -# 2018-2019 Thomas Eckert (tom at it-eckert.de) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . - -state=$(cat "$__object/parameter/state") -if [ -f "$__object/parameter/install_helpers" ]; then - install_helpers=1 -else - install_helpers=0 -fi - -os=$(cat "$__global/explorer/os") -case "$os" in - debian|ubuntu) - : - ;; - *) - echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 - echo "Please contribute an implementation for it if you can." >&2 - exit 1 - ;; -esac - -__package xymon --state "$state" - -## install helper-packages/tools used by the xymon server if requested: -if [ "$install_helpers" = "1" ]; then - __package fping --state "$state" - __package heirloom-mailx --state "$state" - __package traceroute --state "$state" - __package ntpdate --state "$state" -fi - -## CLI-usage often requires a shell: -require="__package/xymon" __user xymon --shell "/bin/bash" --state "$state" diff --git a/cdist/conf/type/__xymon_server/parameter/boolean b/cdist/conf/type/__xymon_server/parameter/boolean deleted file mode 100644 index 56ebcb2c..00000000 --- a/cdist/conf/type/__xymon_server/parameter/boolean +++ /dev/null @@ -1 +0,0 @@ -install_helpers diff --git a/cdist/conf/type/__xymon_server/parameter/default/state b/cdist/conf/type/__xymon_server/parameter/default/state deleted file mode 100644 index e7f6134f..00000000 --- a/cdist/conf/type/__xymon_server/parameter/default/state +++ /dev/null @@ -1 +0,0 @@ -present diff --git a/cdist/conf/type/__xymon_server/parameter/optional b/cdist/conf/type/__xymon_server/parameter/optional deleted file mode 100644 index ff72b5c7..00000000 --- a/cdist/conf/type/__xymon_server/parameter/optional +++ /dev/null @@ -1 +0,0 @@ -state diff --git a/cdist/conf/type/__xymon_server/singleton b/cdist/conf/type/__xymon_server/singleton deleted file mode 100644 index e69de29b..00000000 diff --git a/cdist/conf/type/__yum_repo/files/repo.template b/cdist/conf/type/__yum_repo/files/repo.template index 18ea9d2b..3e14c8b6 100755 --- a/cdist/conf/type/__yum_repo/files/repo.template +++ b/cdist/conf/type/__yum_repo/files/repo.template @@ -43,7 +43,7 @@ for key in baseurl gpgkey; do if [ -f "$__object/parameter/$key" ]; then printf '%s=' "$key" prefix='' - while read -r line; do + while read line; do printf '%s%s\n' "$prefix" "$line" prefix=' ' done < "$__object/parameter/$key" diff --git a/cdist/conf/type/__zypper_repo/explorer/all_repo_ids b/cdist/conf/type/__zypper_repo/explorer/all_repo_ids index 7953158a..b37d8ac5 100644 --- a/cdist/conf/type/__zypper_repo/explorer/all_repo_ids +++ b/cdist/conf/type/__zypper_repo/explorer/all_repo_ids @@ -21,5 +21,4 @@ # Retrieve all repo id nummbers - parsed zypper output # # -# shellcheck disable=SC2005,SC2046 echo $(zypper lr | cut -d'|' -f 1 | grep -E '^[0-9]') diff --git a/cdist/conf/type/__zypper_repo/explorer/enabled_repo_ids b/cdist/conf/type/__zypper_repo/explorer/enabled_repo_ids index 261d6073..2dfb946f 100644 --- a/cdist/conf/type/__zypper_repo/explorer/enabled_repo_ids +++ b/cdist/conf/type/__zypper_repo/explorer/enabled_repo_ids @@ -23,6 +23,4 @@ # # simpler command which works only on SLES11 SP3 or newer: # echo $(zypper lr -E | cut -d'|' -f 1 | grep -E '^[0-9]') -# -# shellcheck disable=SC2005,SC2046 echo $(zypper lr | grep -E '^[0-9]([^|]+\|){3,3} Yes' | cut -d'|' -f 1) diff --git a/cdist/conf/type/__zypper_repo/explorer/repo_id b/cdist/conf/type/__zypper_repo/explorer/repo_id index d55a5cac..6a4791e6 100644 --- a/cdist/conf/type/__zypper_repo/explorer/repo_id +++ b/cdist/conf/type/__zypper_repo/explorer/repo_id @@ -26,5 +26,4 @@ if [ -f "$__object/parameter/uri" ]; then else uri="$__object_id" fi -# shellcheck disable=SC2005,SC2046 -echo $(zypper lr -u | grep -F "$uri" | cut -d'|' -f 1 | grep -E '^[0-9]') +echo $(zypper lr -u | grep -F "$uri" | cut -d'|' -f 1 | grep -E '^[0-9]' ) diff --git a/cdist/conf/type/__zypper_repo/gencode-remote b/cdist/conf/type/__zypper_repo/gencode-remote index 336488ae..94c3f146 100755 --- a/cdist/conf/type/__zypper_repo/gencode-remote +++ b/cdist/conf/type/__zypper_repo/gencode-remote @@ -70,25 +70,25 @@ case "$state" in fi if [ -z "$repo_id" ]; then # Repo not present, so we need to create it - echo "zypper $zypper_def_opts addrepo '$uri' '$desc'" + echo zypper $zypper_def_opts addrepo "'$uri'" "'$desc'" fi ;; absent) - if [ -n "$act_id" ]; then + if [ ! -z "$act_id" ]; then # Repo present (act_id not ""), so we ned to delete it - echo "zypper $zypper_def_opts removerepo $act_id" + echo zypper $zypper_def_opts removerepo "$act_id" fi ;; enabled) - if [ -n "$act_id" ] && [ "$repostate" = "disabled" ]; then + if [ ! -z "$act_id" ] && [ "$repostate" = "disabled" ]; then # Repo present (act_id not "") and repostate not enabled, so a enable call is needed - echo "zypper $zypper_def_opts modifyrepo -e $act_id" + echo zypper $zypper_def_opts modifyrepo -e "$act_id" fi ;; disabled) - if [ -n "$act_id" ] && [ "$repostate" = "enabled" ]; then + if [ ! -z "$act_id" ] && [ "$repostate" = "enabled" ]; then # Repo present (act_id not "") and repostate enabled, so a disable call is needed - echo "zypper $zypper_def_opts modifyrepo -d $act_id" + echo zypper $zypper_def_opts modifyrepo -d "$act_id" fi ;; *) diff --git a/cdist/conf/type/__zypper_service/explorer/repo_ids b/cdist/conf/type/__zypper_service/explorer/repo_ids index da506fea..e831b76c 100644 --- a/cdist/conf/type/__zypper_service/explorer/repo_ids +++ b/cdist/conf/type/__zypper_service/explorer/repo_ids @@ -24,6 +24,4 @@ # simpler command which works only on SLES11 SP3 or newer: # echo $(zypper lr -u -E | cut -d'|' -f 1 | grep -E '^[0-9]') # on older systems, zypper doesn't know the parameter -E -# -# shellcheck disable=SC2005,SC2046 echo $(zypper lr -u | grep -E '^([^|]+\|){3,3} Yes' | cut -d'|' -f 1 | grep -E '^[0-9]') diff --git a/cdist/conf/type/__zypper_service/explorer/service_id b/cdist/conf/type/__zypper_service/explorer/service_id index fbb983c8..bf5f0260 100644 --- a/cdist/conf/type/__zypper_service/explorer/service_id +++ b/cdist/conf/type/__zypper_service/explorer/service_id @@ -27,6 +27,4 @@ else fi # simpler command which works only on SLES11 SP3 or newer: # echo $(zypper ls -u -E | grep -E "\<$uri\>" | cut -d'|' -f 1 ) -# -# shellcheck disable=SC2005,SC2046 -echo $(zypper ls -u | grep -E '^([^|]+\|){3,3} Yes' | grep -E "\\<$uri\\>" | cut -d'|' -f 1) +echo $(zypper ls -u | grep -E '^([^|]+\|){3,3} Yes' | grep -E "\<$uri\>" | cut -d'|' -f 1 ) diff --git a/cdist/conf/type/__zypper_service/explorer/service_ids b/cdist/conf/type/__zypper_service/explorer/service_ids index 5a26740e..0f1f4186 100644 --- a/cdist/conf/type/__zypper_service/explorer/service_ids +++ b/cdist/conf/type/__zypper_service/explorer/service_ids @@ -22,6 +22,4 @@ # # simpler command which works only on SLES11 SP3 or newer: # echo $(zypper ls -u -E | cut -d'|' -f 1 | grep -E '^[0-9]') -# -# shellcheck disable=SC2005,SC2046 echo $(zypper ls -u | grep -E '^([^|]+\|){3,3} Yes' | cut -d'|' -f 1 | grep -E '^[0-9]') diff --git a/cdist/conf/type/__zypper_service/explorer/service_uri b/cdist/conf/type/__zypper_service/explorer/service_uri index 2f3d0f94..6eee47fb 100644 --- a/cdist/conf/type/__zypper_service/explorer/service_uri +++ b/cdist/conf/type/__zypper_service/explorer/service_uri @@ -25,5 +25,4 @@ if [ -f "$__object/parameter/uri" ]; then else uri="/$__object_id" fi -# shellcheck disable=SC2005,SC2046 -echo $(zypper ls -u | awk 'BEGIN { FS = "[ ]+\\|[ ]+" } ; $4 == "Yes" && $NF == "'"$uri"'" {print $NF}') +echo $(zypper ls -u | awk 'BEGIN { FS = "[ ]+\\|[ ]+" } ; $4 == "Yes" && $NF == "'$uri'" {print $NF}') diff --git a/cdist/conf/type/__zypper_service/gencode-remote b/cdist/conf/type/__zypper_service/gencode-remote index 4ccfe301..e5b41cc6 100755 --- a/cdist/conf/type/__zypper_service/gencode-remote +++ b/cdist/conf/type/__zypper_service/gencode-remote @@ -46,7 +46,7 @@ exp_uri="$(cat "$__object/explorer/service_uri")" exp_id="$(cat "$__object/explorer/service_id")" # we need this list to remove ids, but we must do this in reverse order -exp_ids="$(rev "$__object/explorer/service_ids")" +exp_ids="$(cat "$__object/explorer/service_ids" | rev)" if [ "$uri" = "$exp_uri" ] ; then state_is="present" @@ -59,10 +59,10 @@ if [ -f "$__object/parameter/remove-all-other-services" ]; then # file exists -> True for i in $exp_ids; do if [ "$i" != "$exp_id" ] ; then - echo "zypper $zypper_def_opts removeservice $i &>/dev/null" + echo zypper $zypper_def_opts removeservice "$i" "&>/dev/null" fi done - echo "zypper $zypper_def_opts refs &>/dev/null" + echo zypper $zypper_def_opts refs "&>/dev/null" fi @@ -71,14 +71,14 @@ fi case "$state_should" in present) - echo "zypper $zypper_def_opts addservice -t $stype $uri '$desc'" - echo "zypper $zypper_def_opts refs" - echo "zypper $zypper_def_opts ref" + echo zypper $zypper_def_opts addservice -t "$stype" "$uri" \"$desc\" + echo zypper $zypper_def_opts refs + echo zypper $zypper_def_opts ref ;; absent) - echo "zypper $zypper_def_opts removeservice $exp_id" - echo "zypper $zypper_def_opts refs" - echo "zypper $zypper_def_opts ref" + echo zypper $zypper_def_opts removeservice "$service_id" + echo zypper $zypper_def_opts refs + echo zypper $zypper_def_opts ref ;; *) echo "Unknown state: $state_should" >&2 diff --git a/cdist/conf/type/__zypper_service/man.rst b/cdist/conf/type/__zypper_service/man.rst index e082dc02..ea48aebb 100644 --- a/cdist/conf/type/__zypper_service/man.rst +++ b/cdist/conf/type/__zypper_service/man.rst @@ -46,10 +46,10 @@ EXAMPLES # Ensure that internal SLES11 SP3 RIS is in installed and all other services and repos are discarded __zypper_service INTERNAL_SLES11_SP3 --service_desc "Internal SLES11 SP3 RIS" --uri "http://path/to/your/ris/dir" --remove-all-other-services --remove-all-repos - # Ensure that internal SLES11 SP3 RIS is in installed, no changes to other services or repos + # Ensure that internal SLES11 SP3 RIS is in installed, no changes to ohter services or repos __zypper_service INTERNAL_SLES11_SP3 --service_desc "Internal SLES11 SP3 RIS" --uri "http://path/to/your/ris/dir" - # Drop service by uri, no changes to other services or repos + # Drop service by uri, no changes to ohter services or repos __zypper_service INTERNAL_SLES11_SP3 --state absent --uri "http://path/to/your/ris/dir" diff --git a/cdist/conf/type/__zypper_service/manifest b/cdist/conf/type/__zypper_service/manifest index 42a56830..e4f0bcf6 100755 --- a/cdist/conf/type/__zypper_service/manifest +++ b/cdist/conf/type/__zypper_service/manifest @@ -47,7 +47,7 @@ fi [ "$state_is" = "$state_should" ] && exit 0 # we need this list to remove ids, but we must do this in reverse order -exp_repos="$(rev "$__object/explorer/repo_ids")" +exp_repos="$(cat "$__object/explorer/repo_ids" | rev)" # boolean parameter if [ -f "$__object/parameter/remove-all-repos" ]; then diff --git a/cdist/config.py b/cdist/config.py index 26d07fc4..74f68a72 100644 --- a/cdist/config.py +++ b/cdist/config.py @@ -43,33 +43,6 @@ from cdist import core, inventory from cdist.util.remoteutil import inspect_ssh_mux_opts -def graph_check_cycle(graph): - # Start from each node in the graph and check for cycle starting from it. - for node in graph: - # Cycle path. - path = [node] - has_cycle = _graph_dfs_cycle(graph, node, path) - if has_cycle: - return has_cycle, path - return False, None - - -def _graph_dfs_cycle(graph, node, path): - for neighbour in graph.get(node, ()): - # If node is already in path then this is cycle. - if neighbour in path: - path.append(neighbour) - return True - path.append(neighbour) - rv = _graph_dfs_cycle(graph, neighbour, path) - if rv: - return True - # Remove last item from list - neighbour whose DFS path we have have - # just checked. - del path[-1] - return False - - class Config(object): """Cdist main class to hold arbitrary data""" @@ -104,12 +77,9 @@ class Config(object): self.remove_remote_files_dirs = remove_remote_files_dirs self.explorer = core.Explorer(self.local.target_host, self.local, - self.remote, jobs=self.jobs, - dry_run=self.dry_run) - self.manifest = core.Manifest(self.local.target_host, self.local, - dry_run=self.dry_run) - self.code = core.Code(self.local.target_host, self.local, self.remote, - dry_run=self.dry_run) + self.remote, jobs=self.jobs) + self.manifest = core.Manifest(self.local.target_host, self.local) + self.code = core.Code(self.local.target_host, self.local, self.remote) def _init_files_dirs(self): """Prepare files and directories for the run""" @@ -195,20 +165,19 @@ class Config(object): def commandline(cls, args): """Configure remote system""" - if (args.parallel and args.parallel != 1) or args.jobs: - if args.timestamp: - cdist.log.setupTimestampingParallelLogging() - else: - cdist.log.setupParallelLogging() - elif args.timestamp: - cdist.log.setupTimestampingLogging() - log = logging.getLogger("config") + # FIXME: Refactor relict - remove later + log = logging.getLogger("cdist") # No new child process if only one host at a time. if args.parallel == 1: log.debug("Only 1 parallel process, doing it sequentially") args.parallel = 0 + if args.parallel or args.jobs: + # If parallel execution then also log process id + cdist.log.setupParallelLogging() + log = logging.getLogger("cdist") + if args.parallel: import signal @@ -284,14 +253,14 @@ class Config(object): cls.onehost(host, host_tags, host_base_path, hostdir, args, parallel=False, configuration=configuration) - except cdist.Error: + except cdist.Error as e: failed_hosts.append(host) if args.parallel and len(process_args) == 1: log.debug("Only 1 host for parallel processing, doing it " "sequentially") try: cls.onehost(*process_args[0]) - except cdist.Error: + except cdist.Error as e: failed_hosts.append(host) elif args.parallel: log.trace("Multiprocessing start method is {}".format( @@ -471,10 +440,9 @@ class Config(object): self.manifest.run_initial_manifest(self.local.initial_manifest) except cdist.Error as e: which = "init" - stdout_path = os.path.join(self.local.stdout_base_path, which) stderr_path = os.path.join(self.local.stderr_base_path, which) raise cdist.InitialManifestError(self.local.initial_manifest, - stdout_path, stderr_path, e) + stderr_path, e) self.iterate_until_finished() self.cleanup() self._remove_files_dirs() @@ -586,19 +554,19 @@ class Config(object): self.log.trace("Multiprocessing cargo_types: %s", cargo_types) nt = len(cargo_types) if nt == 1: - self.log.debug(("Only one type, transferring explorers " + self.log.debug(("Only one type, transfering explorers " "sequentially")) self.explorer.transfer_type_explorers(cargo_types.pop()) else: self.log.trace(("Starting multiprocessing Pool for {} " - "parallel types explorers transferring".format( + "parallel transfering types' explorers".format( nt))) args = [ (ct, ) for ct in cargo_types ] mp_pool_run(self.explorer.transfer_type_explorers, args, jobs=self.jobs) - self.log.trace(("Multiprocessing for parallel transferring " + self.log.trace(("Multiprocessing for parallel transfering " "types' explorers finished")) self.log.trace(("Starting multiprocessing Pool for {} parallel " @@ -683,28 +651,6 @@ class Config(object): self.__dict__.update(state) self._open_logger() - def _validate_dependencies(self): - ''' - Build dependency graph for unfinished objects and - check for cycles. - ''' - graph = {} - for cdist_object in self.object_list(): - obj_name = cdist_object.name - if obj_name not in graph: - graph[obj_name] = [] - if cdist_object.state == cdist_object.STATE_DONE: - continue - - for requirement in cdist_object.requirements_unfinished( - cdist_object.requirements): - graph[obj_name].append(requirement.name) - - for requirement in cdist_object.requirements_unfinished( - cdist_object.autorequire): - graph[obj_name].append(requirement.name) - return graph_check_cycle(graph) - def iterate_until_finished(self): """ Go through all objects and solve them @@ -714,12 +660,6 @@ class Config(object): objects_changed = True while objects_changed: - # Check for cycles as early as possible. - has_cycle, path = self._validate_dependencies() - if has_cycle: - raise cdist.UnresolvableRequirementsError( - "Cycle detected in object dependencies:\n{}!".format( - " -> ".join(path))) objects_changed = self.iterate_once() # Check whether all objects have been finished @@ -758,34 +698,14 @@ class Config(object): ("The requirements of the following objects could not be " "resolved:\n%s") % ("\n".join(info_string))) - def _handle_deprecation(self, cdist_object): - cdist_type = cdist_object.cdist_type - deprecated = cdist_type.deprecated - if deprecated is not None: - if deprecated: - self.log.warning("Type %s is deprecated: %s", cdist_type.name, - deprecated) - else: - self.log.warning("Type %s is deprecated.", cdist_type.name) - for param in cdist_object.parameters: - if param in cdist_type.deprecated_parameters: - msg = cdist_type.deprecated_parameters[param] - if msg: - format = "%s parameter of type %s is deprecated: %s" - args = [param, cdist_type.name, msg] - else: - format = "%s parameter of type %s is deprecated." - args = [param, cdist_type.name] - self.log.warning(format, *args) - def object_prepare(self, cdist_object, transfer_type_explorers=True): """Prepare object: Run type explorer + manifest""" - self._handle_deprecation(cdist_object) - self.log.verbose("Preparing object {}".format(cdist_object.name)) - self.log.verbose( - "Running manifest and explorers for " + cdist_object.name) - self.explorer.run_type_explorers(cdist_object, transfer_type_explorers) try: + self.log.verbose("Preparing object {}".format(cdist_object.name)) + self.log.verbose( + "Running manifest and explorers for " + cdist_object.name) + self.explorer.run_type_explorers(cdist_object, + transfer_type_explorers) self.manifest.run_type_manifest(cdist_object) cdist_object.state = core.CdistObject.STATE_PREPARED except cdist.Error as e: diff --git a/cdist/configuration.py b/cdist/configuration.py index f05a5963..848956aa 100644 --- a/cdist/configuration.py +++ b/cdist/configuration.py @@ -261,7 +261,6 @@ _ARG_OPTION_MAPPING = { 'verbose': 'verbosity', 'use_archiving': 'archiving', 'save_output_streams': 'save_output_streams', - 'timestamp': 'timestamp', } @@ -305,7 +304,6 @@ class Configuration(metaclass=Singleton): 'archiving': ArchivingOption(), 'save_output_streams': BooleanOption('save_output_streams', default_overrides=False), - 'timestamp': BooleanOption('timestamp'), }, } @@ -384,7 +382,7 @@ class Configuration(metaclass=Singleton): return args def _read_config_file(self, files): - config_parser = configparser.ConfigParser(interpolation=None) + config_parser = configparser.ConfigParser() config_parser.read(files) d = dict() for section in config_parser.sections(): diff --git a/cdist/core/cdist_object.py b/cdist/core/cdist_object.py index 237f0ddd..e2cd22a2 100644 --- a/cdist/core/cdist_object.py +++ b/cdist/core/cdist_object.py @@ -108,9 +108,7 @@ class CdistObject(object): @staticmethod def split_name(object_name): - """split_name('__type_name/the/object_id') - -> - ('__type_name', 'the/object_id') + """split_name('__type_name/the/object_id') -> ('__type_name', 'the/object_id') Split the given object name into it's type and object_id parts. @@ -121,9 +119,7 @@ class CdistObject(object): @staticmethod def join_name(type_name, object_id): - """join_name('__type_name', 'the/object_id') - -> - __type_name/the/object_id' + """join_name('__type_name', 'the/object_id') -> __type_name/the/object_id' Join the given type_name and object_id into an object name. @@ -166,8 +162,7 @@ class CdistObject(object): # (parameters: %s)" % (self.cdist_type.name, self.parameters)) def object_from_name(self, object_name): - """Convenience method for creating an object instance from an object - name. + """Convenience method for creating an object instance from an object name. Mainly intended to create objects when resolving requirements. diff --git a/cdist/core/cdist_type.py b/cdist/core/cdist_type.py index 4500f50d..40194f94 100644 --- a/cdist/core/cdist_type.py +++ b/cdist/core/cdist_type.py @@ -47,7 +47,7 @@ class CdistType(object): """ - log = logging.getLogger("cdist-type") + log = logging.getLogger("cdist") def __init__(self, base_path, name): self.base_path = base_path @@ -69,7 +69,6 @@ class CdistType(object): self.__optional_multiple_parameters = None self.__boolean_parameters = None self.__parameter_defaults = None - self.__deprecated_parameters = None def __hash__(self): return hash(self.name) @@ -134,17 +133,6 @@ class CdistType(object): cannot run in parallel.""" return os.path.isfile(os.path.join(self.absolute_path, "nonparallel")) - @property - def deprecated(self): - """Get type deprecation message. If message is None then type - is not deprecated.""" - deprecated_path = os.path.join(self.absolute_path, "deprecated") - try: - with open(deprecated_path, 'r') as f: - return f.read() - except FileNotFoundError: - return None - @property def explorers(self): """Return a list of available explorers""" @@ -276,23 +264,3 @@ class CdistType(object): finally: self.__parameter_defaults = defaults return self.__parameter_defaults - - @property - def deprecated_parameters(self): - if not self.__deprecated_parameters: - deprecated = {} - try: - deprecated_dir = os.path.join(self.absolute_path, - "parameter", - "deprecated") - for name in cdist.core.listdir(deprecated_dir): - try: - with open(os.path.join(deprecated_dir, name)) as fd: - deprecated[name] = fd.read().strip() - except EnvironmentError: - pass # Swallow errors raised by open() or read() - except EnvironmentError: - pass # Swallow error raised by os.listdir() - finally: - self.__deprecated_parameters = deprecated - return self.__deprecated_parameters diff --git a/cdist/core/code.py b/cdist/core/code.py index 1550880a..670029ed 100644 --- a/cdist/core/code.py +++ b/cdist/core/code.py @@ -97,7 +97,7 @@ class Code(object): """ # target_host is tuple (target_host, target_hostname, target_fqdn) - def __init__(self, target_host, local, remote, dry_run=False): + def __init__(self, target_host, local, remote): self.target_host = target_host self.local = local self.remote = remote @@ -113,9 +113,6 @@ class Code(object): local.log), } - if dry_run: - self.env['__cdist_dry_run'] = '1' - def _run_gencode(self, cdist_object, which): cdist_type = cdist_object.cdist_type script = os.path.join(self.local.type_path, diff --git a/cdist/core/explorer.py b/cdist/core/explorer.py index 353d7681..072ca692 100644 --- a/cdist/core/explorer.py +++ b/cdist/core/explorer.py @@ -67,7 +67,7 @@ class Explorer(object): """Executes cdist explorers. """ - def __init__(self, target_host, local, remote, jobs=None, dry_run=False): + def __init__(self, target_host, local, remote, jobs=None): self.target_host = target_host self._open_logger() @@ -84,10 +84,6 @@ class Explorer(object): '__cdist_log_level_name': util.log_level_name_env_var_val( self.log), } - - if dry_run: - self.env['__cdist_dry_run'] = '1' - self._type_explorers_transferred = [] self.jobs = jobs @@ -113,17 +109,10 @@ class Explorer(object): self._run_global_explorers_parallel(out_path) def _run_global_explorer(self, explorer, out_path): - try: - path = os.path.join(out_path, explorer) - output = self.run_global_explorer(explorer) - with open(path, 'w') as fd: - fd.write(output) - except cdist.Error as e: - local_path = os.path.join(self.local.global_explorer_path, - explorer) - stderr_path = os.path.join(self.local.stderr_base_path, "remote") - raise cdist.GlobalExplorerError(explorer, local_path, stderr_path, - e) + output = self.run_global_explorer(explorer) + path = os.path.join(out_path, explorer) + with open(path, 'w') as fd: + fd.write(output) def _run_global_explorers_seq(self, out_path): self.log.debug("Running global explorers sequentially") @@ -158,6 +147,7 @@ class Explorer(object): def transfer_global_explorers(self): """Transfer the global explorers to the remote side.""" + self.remote.mkdir(self.remote.global_explorer_path) self.remote.transfer(self.local.global_explorer_path, self.remote.global_explorer_path, self.jobs) @@ -187,31 +177,21 @@ class Explorer(object): self.log.verbose("Running type explorers for {}".format( cdist_object.cdist_type)) if transfer_type_explorers: - self.log.trace("Transferring type explorers for type: %s", + self.log.trace("Transfering type explorers for type: %s", cdist_object.cdist_type) self.transfer_type_explorers(cdist_object.cdist_type) else: - self.log.trace(("No need for transferring type explorers for " + self.log.trace(("No need for transfering type explorers for " "type: %s"), cdist_object.cdist_type) - self.log.trace("Transferring object parameters for object: %s", + self.log.trace("Transfering object parameters for object: %s", cdist_object.name) self.transfer_object_parameters(cdist_object) - cdist_type = cdist_object.cdist_type - for explorer in self.list_type_explorer_names(cdist_type): + for explorer in self.list_type_explorer_names(cdist_object.cdist_type): + output = self.run_type_explorer(explorer, cdist_object) self.log.trace("Running type explorer '%s' for object '%s'", explorer, cdist_object.name) - try: - output = self.run_type_explorer(explorer, cdist_object) - cdist_object.explorers[explorer] = output - except cdist.Error as e: - path = os.path.join(self.local.type_path, - cdist_type.explorer_path, - explorer) - stderr_path = os.path.join(self.local.stderr_base_path, - "remote") - raise cdist.CdistObjectExplorerError( - cdist_object, explorer, path, stderr_path, e) + cdist_object.explorers[explorer] = output def run_type_explorer(self, explorer, cdist_object): """Run the given type explorer for the given object and return @@ -234,18 +214,22 @@ class Explorer(object): def transfer_type_explorers(self, cdist_type): """Transfer the type explorers for the given type to the remote side.""" - if cdist_type.explorers: - if cdist_type.name in self._type_explorers_transferred: - self.log.trace(("Skipping retransfer of type explorers " - "for: %s"), cdist_type) - else: - source = os.path.join(self.local.type_path, - cdist_type.explorer_path) - destination = os.path.join(self.remote.type_path, - cdist_type.explorer_path) - self.remote.transfer(source, destination) - self.remote.run(["chmod", "0700", "%s/*" % (destination)]) - self._type_explorers_transferred.append(cdist_type.name) + try: + if cdist_type.explorers: + if cdist_type.name in self._type_explorers_transferred: + self.log.trace(("Skipping retransfer of type explorers " + "for: %s"), cdist_type) + else: + source = os.path.join(self.local.type_path, + cdist_type.explorer_path) + destination = os.path.join(self.remote.type_path, + cdist_type.explorer_path) + self.remote.mkdir(destination) + self.remote.transfer(source, destination) + self.remote.run(["chmod", "0700", "%s/*" % (destination)]) + self._type_explorers_transferred.append(cdist_type.name) + except cdist.Error as e: + raise cdist.CdistObjectError(cdist_object, e) def transfer_object_parameters(self, cdist_object): """Transfer the parameters for the given object to the remote side.""" @@ -254,4 +238,5 @@ class Explorer(object): cdist_object.parameter_path) destination = os.path.join(self.remote.object_path, cdist_object.parameter_path) + self.remote.mkdir(destination) self.remote.transfer(source, destination) diff --git a/cdist/core/manifest.py b/cdist/core/manifest.py index 07af0ef8..938ad8b8 100644 --- a/cdist/core/manifest.py +++ b/cdist/core/manifest.py @@ -96,7 +96,7 @@ class Manifest(object): """Executes cdist manifests. """ - def __init__(self, target_host, local, dry_run=False): + def __init__(self, target_host, local): self.target_host = target_host self.local = local @@ -117,9 +117,6 @@ class Manifest(object): self.log), } - if dry_run: - self.env['__cdist_dry_run'] = '1' - def _open_logger(self): self.log = logging.getLogger(self.target_host[0]) diff --git a/cdist/emulator.py b/cdist/emulator.py index 3cf82f84..4123a353 100644 --- a/cdist/emulator.py +++ b/cdist/emulator.py @@ -182,29 +182,6 @@ class Emulator(object): lockfname = lockfname.replace(os.sep, '_') self.flock_path = os.path.join(self.object_base_path, lockfname) - def _object_params_in_context(self): - ''' Get cdist_object parameters dict adopted by context. - Context consists of cdist_type boolean, optional, required, - optional_multiple and required_multiple parameters. If parameter - is multiple parameter then its value is a list. - This adaptation works on cdist_object.parameters which are read from - directory based dict where it is unknown what kind of data is in - file. If there is only one line in the file it is unknown if this - is a value of required/optional parameter or if it is one value of - multiple values parameter. - ''' - params = {} - if self.cdist_object.exists: - for param in self.cdist_object.parameters: - value = ('' if param in self.cdist_type.boolean_parameters - else self.cdist_object.parameters[param]) - if ((param in self.cdist_type.required_multiple_parameters or - param in self.cdist_type.optional_multiple_parameters) and - not isinstance(value, list)): - value = [value] - params[param] = value - return params - def setup_object(self): # Create object with given parameters self.parameters = {} @@ -216,13 +193,12 @@ class Emulator(object): # Make existing requirements a set so that we can compare it # later with new requirements. self._existing_reqs = set(self.cdist_object.requirements) - obj_params = self._object_params_in_context() - if obj_params != self.parameters: + if self.cdist_object.parameters != self.parameters: errmsg = ("Object %s already exists with conflicting " "parameters:\n%s: %s\n%s: %s" % ( self.cdist_object.name, " ".join(self.cdist_object.source), - obj_params, + self.cdist_object.parameters, self.object_source, self.parameters)) raise cdist.Error(errmsg) @@ -276,15 +252,14 @@ class Emulator(object): self.cdist_object.name, requirement, e.name, self.object_source))) raise - except core.cdist_object.MissingObjectIdError: + except core.cdist_object.MissingObjectIdError as e: self.log.error(("%s requires object %s without object id." " Defined at %s" % (self.cdist_object.name, requirement, self.object_source))) raise - self.log.debug("Recording requirement %s for %s", - requirement, self.cdist_object.name) + self.log.debug("Recording requirement: %s", requirement) # Save the sanitised version, not the user supplied one # (__file//bar => __file/bar) @@ -306,28 +281,13 @@ class Emulator(object): # get the type created before this one ... try: lastcreatedtype = typecreationorder[-2].strip() - # __object_name is the name of the object whose type - # manifest is currently executed - __object_name = self.env.get('__object_name', None) - if lastcreatedtype == __object_name: - self.log.debug(("Not injecting require for " - "CDIST_ORDER_DEPENDENCY: %s for %s," - " %s's type manifest is currently" - " being executed"), - lastcreatedtype, - self.cdist_object.name, - lastcreatedtype) + if 'require' in self.env: + self.env['require'] += " " + lastcreatedtype else: - if 'require' in self.env: - appendix = " " + lastcreatedtype - if appendix not in self.env['require']: - self.env['require'] += appendix - else: - self.env['require'] = lastcreatedtype - self.log.debug(("Injecting require for " - "CDIST_ORDER_DEPENDENCY: %s for %s"), - lastcreatedtype, - self.cdist_object.name) + self.env['require'] = lastcreatedtype + self.log.debug(("Injecting require for " + "CDIST_ORDER_DEPENDENCY: %s for %s"), + lastcreatedtype, self.cdist_object.name) except IndexError: # if no second last line, we are on the first type, # so do not set a requirement @@ -376,6 +336,4 @@ class Emulator(object): # But only if the user hasn't said otherwise. # Must prevent circular dependencies. if parent.name not in current_object.requirements: - self.log.debug("Recording autorequirement %s for %s", - current_object.name, parent.name) parent.autorequire.append(current_object.name) diff --git a/cdist/exec/local.py b/cdist/exec/local.py index f83c85df..a50fe072 100644 --- a/cdist/exec/local.py +++ b/cdist/exec/local.py @@ -259,8 +259,10 @@ class Local(object): util.log_std_fd(self.log, command, stderr, 'Local stderr') util.log_std_fd(self.log, command, stdout, 'Local stdout') return output - except (OSError, subprocess.CalledProcessError) as error: - raise cdist.Error(" ".join(command) + ": " + str(error.args[1])) + except subprocess.CalledProcessError as e: + util.handle_called_process_error(e, command) + except OSError as error: + raise cdist.Error(" ".join(command) + ": " + error.args[1]) finally: if message_prefix: message.merge_messages() diff --git a/cdist/exec/remote.py b/cdist/exec/remote.py index e0ef66ec..b75905ba 100644 --- a/cdist/exec/remote.py +++ b/cdist/exec/remote.py @@ -190,7 +190,7 @@ class Remote(object): self.log.trace( "Archiving mode desttarpath: %s", desttarpath) # transfer archive to the remote side - self.log.trace("Archiving mode: transferring") + self.log.trace("Archiving mode: transfering") self._transfer_file(tarpath, desttarpath) # extract archive at the remote self.log.trace("Archiving mode: extracting") @@ -203,20 +203,46 @@ class Remote(object): os.remove(tarpath) used_archiving = True if not used_archiving: - self._transfer_dir(source, destination) + if jobs: + self._transfer_dir_parallel(source, destination, jobs) + else: + self._transfer_dir_sequential(source, destination) elif jobs: raise cdist.Error("Source {} is not a directory".format(source)) else: self._transfer_file(source, destination) - def _transfer_dir(self, source, destination): - command = self._copy.split() + def _transfer_dir_commands(self, source, destination): for f in glob.glob1(source, '*'): + command = self._copy.split() path = os.path.join(source, f) - command.extend([path]) - command.extend(['{0}:{1}'.format( - _wrap_addr(self.target_host[0]), destination)]) - self._run_command(command) + command.extend([path, '{0}:{1}'.format( + _wrap_addr(self.target_host[0]), destination)]) + yield command + + def _transfer_dir_sequential(self, source, destination): + for command in self._transfer_dir_commands(source, destination): + self._run_command(command) + + def _transfer_dir_parallel(self, source, destination, jobs): + """Transfer a directory to the remote side in parallel mode.""" + self.log.debug("Remote transfer in {} parallel jobs".format( + jobs)) + self.log.trace("Multiprocessing start method is {}".format( + multiprocessing.get_start_method())) + self.log.trace(("Starting multiprocessing Pool for parallel " + "remote transfer")) + args = [ + (command, ) + for command in self._transfer_dir_commands(source, destination) + ] + if len(args) == 1: + self.log.debug("Only one dir entry, transfering sequentially") + self._run_command(args[0]) + else: + mp_pool_run(self._run_command, args, jobs=jobs) + self.log.trace(("Multiprocessing for parallel transfer " + "finished")) def run_script(self, script, env=None, return_output=False, stdout=None, stderr=None): @@ -248,15 +274,15 @@ class Remote(object): # variable declarations # cdist command prepended with variable assignments expects - # POSIX shell (bourne, bash) at the remote as user default shell. - # If remote user shell isn't POSIX shell, but for e.g. csh/tcsh + # posix shell (bourne, bash) at the remote as user default shell. + # If remote user shell isn't poxis shell, but for e.g. csh/tcsh # then these var assignments are not var assignments for this # remote shell, it tries to execute it as a command and fails. # So really do this by default: # /bin/sh -c 'export ; command' # so that constructed remote command isn't dependent on remote # shell. Do this only if env is not None. env breaks this. - # Explicitly use /bin/sh, because var assignments assume POSIX + # Explicitly use /bin/sh, because var assignments assume poxis # shell already. # This leaves the posibility to write script that needs to be run # remotely in e.g. csh and setting up CDIST_REMOTE_SHELL to e.g. @@ -304,7 +330,6 @@ class Remote(object): try: if self.quiet_mode: stderr = subprocess.DEVNULL - close_stderr = False if return_output: output = subprocess.check_output(command, env=os_environ, stderr=stderr).decode() @@ -318,8 +343,10 @@ class Remote(object): util.log_std_fd(self.log, command, stdout, 'Remote stdout') return output - except (OSError, subprocess.CalledProcessError) as error: - raise cdist.Error(" ".join(command) + ": " + str(error.args[1])) + except subprocess.CalledProcessError as e: + util.handle_called_process_error(e, command) + except OSError as error: + raise cdist.Error(" ".join(command) + ": " + error.args[1]) except UnicodeDecodeError: raise DecodeError(command) finally: diff --git a/cdist/exec/util.py b/cdist/exec/util.py index c96f757b..2f2aa38c 100644 --- a/cdist/exec/util.py +++ b/cdist/exec/util.py @@ -127,7 +127,6 @@ def call_get_output(command, env=None, stderr=None): return (_call_get_stdout(command, env, stderr), None) -# Currently not used. def handle_called_process_error(err, command): # Currently, stderr is not captured. # errout = None diff --git a/cdist/inventory.py b/cdist/inventory.py index 138a2034..7da306fa 100644 --- a/cdist/inventory.py +++ b/cdist/inventory.py @@ -315,7 +315,7 @@ class InventoryHost(Inventory): hostpath = self._host_path(host) self.log.trace("hostpath: {}".format(hostpath)) if self.action == "add" and not os.path.exists(hostpath): - self._new_hostpath(hostpath) + self._new_hostpath(hostpath) else: if not os.path.isfile(hostpath): raise cdist.Error(("Host path \'{}\' is" diff --git a/cdist/log.py b/cdist/log.py index 5d431130..dba1ad2f 100644 --- a/cdist/log.py +++ b/cdist/log.py @@ -22,7 +22,6 @@ import logging import sys -import datetime # Define additional cdist logging levels. @@ -96,42 +95,15 @@ class DefaultLog(logging.Logger): self.log(logging.TRACE, msg, *args, **kwargs) -class TimestampingLog(DefaultLog): - - def filter(self, record): - """Add timestamp to messages""" - - super().filter(record) - now = datetime.datetime.now() - timestamp = now.strftime("%Y%m%d%H%M%S.%f") - record.msg = "[" + timestamp + "] " + str(record.msg) - - return True - - class ParallelLog(DefaultLog): FORMAT = '%(levelname)s: [%(process)d]: %(message)s' -class TimestampingParallelLog(TimestampingLog, ParallelLog): - pass - - def setupDefaultLogging(): del logging.getLogger().handlers[:] logging.setLoggerClass(DefaultLog) -def setupTimestampingLogging(): - del logging.getLogger().handlers[:] - logging.setLoggerClass(TimestampingLog) - - -def setupTimestampingParallelLogging(): - del logging.getLogger().handlers[:] - logging.setLoggerClass(TimestampingParallelLog) - - def setupParallelLogging(): del logging.getLogger().handlers[:] logging.setLoggerClass(ParallelLog) diff --git a/cdist/preos.py b/cdist/preos.py deleted file mode 100644 index 46b45554..00000000 --- a/cdist/preos.py +++ /dev/null @@ -1,101 +0,0 @@ -import os -import os.path -import sys -import inspect -import argparse -import cdist -import logging - - -_PREOS_CALL = "commandline" -_PREOS_NAME = "_preos_name" -_PREOS_MARKER = "_cdist_preos" -_PLUGINS_DIR = "preos" -_PLUGINS_PATH = [os.path.join(os.path.dirname(__file__), _PLUGINS_DIR), ] -cdist_home = cdist.home_dir() -if cdist_home: - cdist_home_preos = os.path.join(cdist_home, "preos") - if os.path.isdir(cdist_home_preos): - _PLUGINS_PATH.append(cdist_home_preos) -sys.path.extend(_PLUGINS_PATH) - - -log = logging.getLogger("PreOS") - - -def preos_plugin(obj): - """It is preos if _PREOS_MARKER is True and has _PREOS_CALL.""" - if hasattr(obj, _PREOS_MARKER): - is_preos = getattr(obj, _PREOS_MARKER) - else: - is_preos = False - - if is_preos and hasattr(obj, _PREOS_CALL): - yield obj - - -def scan_preos_dir_plugins(dir): - for fname in os.listdir(dir): - if os.path.isfile(os.path.join(dir, fname)): - fname = os.path.splitext(fname)[0] - module_name = fname - try: - module = __import__(module_name) - yield from preos_plugin(module) - clsmembers = inspect.getmembers(module, inspect.isclass) - for cm in clsmembers: - c = cm[1] - yield from preos_plugin(c) - except ImportError as e: - log.warning("Cannot import '{}': {}".format(module_name, e)) - - -def find_preos_plugins(): - for dir in _PLUGINS_PATH: - yield from scan_preos_dir_plugins(dir) - - -def find_preoses(): - preoses = {} - for preos in find_preos_plugins(): - if hasattr(preos, _PREOS_NAME): - preos_name = getattr(preos, _PREOS_NAME) - else: - preos_name = preos.__name__.lower() - preoses[preos_name] = preos - return preoses - - -def check_root(): - if os.geteuid() != 0: - raise cdist.Error("Must be run with root privileges") - - -class PreOS(object): - preoses = None - - @classmethod - def commandline(cls, argv): - - if not cls.preoses: - cls.preoses = find_preoses() - - parser = argparse.ArgumentParser( - description="Create PreOS", prog="cdist preos") - parser.add_argument('preos', help='PreOS to create, one of: {}'.format( - set(cls.preoses))) - args = parser.parse_args(argv[1:2]) - - preos_name = args.preos - if preos_name in cls.preoses: - preos = cls.preoses[preos_name] - func = getattr(preos, _PREOS_CALL) - if inspect.ismodule(preos): - func_args = [preos, argv[2:], ] - else: - func_args = [argv[2:], ] - log.info("Running preos : {}".format(preos_name)) - func(*func_args) - else: - log.error("Unknown preos: {}, available preoses: {}".format( - preos_name, set(cls.preoses.keys()))) diff --git a/cdist/preos/debootstrap/__init__.py b/cdist/preos/debootstrap/__init__.py deleted file mode 100644 index 6d340b4a..00000000 --- a/cdist/preos/debootstrap/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from debootstrap.debootstrap import Debian, Ubuntu, Devuan diff --git a/cdist/preos/debootstrap/debootstrap.py b/cdist/preos/debootstrap/debootstrap.py deleted file mode 100644 index f53dd4a7..00000000 --- a/cdist/preos/debootstrap/debootstrap.py +++ /dev/null @@ -1,239 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# 2016 Darko Poljak (darko.poljak at ungleich.ch) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# - -import cdist -import cdist.config -import cdist.core -import cdist.preos -import argparse -import cdist.argparse -import logging -import os -import subprocess - - -class Debian(object): - _preos_name = 'debian' - _cdist_preos = True - - _files_dir = os.path.join(os.path.dirname(__file__), "files") - - @classmethod - def default_args(cls): - default_remote_exec = os.path.join(cls._files_dir, "remote-exec.sh") - default_remote_copy = os.path.join(cls._files_dir, "remote-copy.sh") - default_init_manifest = os.path.join( - cls._files_dir, "init-manifest-{}".format(cls._preos_name)) - - defargs = argparse.Namespace() - defargs.arch = 'amd64' - defargs.bootstrap = False - defargs.configure = False - defargs.cdist_params = '-v' - defargs.rm_bootstrap_dir = False - defargs.suite = 'stable' - defargs.remote_exec = default_remote_exec - defargs.remote_copy = default_remote_copy - defargs.manifest = default_init_manifest - - return defargs - - @classmethod - def get_parser(cls): - defargs = cls.default_args() - cdist_parser = cdist.argparse.get_parsers() - parser = argparse.ArgumentParser( - prog='cdist preos {}'.format(cls._preos_name), - parents=[cdist_parser['loglevel'], cdist_parser['beta']]) - parser.add_argument('target_dir', nargs=1, - help=("target directory where PreOS will be " - "bootstrapped")) - parser.add_argument( - '-a', '--arch', - help="target debootstrap architecture, by default '{}'".format( - defargs.arch), dest='arch', default=defargs.arch) - parser.add_argument( - '-B', '--bootstrap', - help='do bootstrap step', - dest='bootstrap', action='store_true', default=defargs.bootstrap) - parser.add_argument( - '-C', '--configure', - help='do configure step', - dest='configure', action='store_true', default=defargs.configure) - parser.add_argument( - '-c', '--cdist-params', - help=("parameters that will be passed to cdist config, by default" - " '{}' is used".format(defargs.cdist_params)), - dest='cdist_params', default=defargs.cdist_params) - parser.add_argument( - '-D', '--drive-boot', - help='create bootable PreOS on specified drive', - dest='drive') - parser.add_argument( - '-e', '--remote-exec', - help=("remote exec that cdist config will use, by default " - "internal script is used"), - dest='remote_exec', default=defargs.remote_exec) - parser.add_argument( - '-i', '--init-manifest', - help=("init manifest that cdist config will use, by default " - "internal init manifest is used"), - dest='manifest', default=defargs.manifest) - parser.add_argument( - '-k', '--keyfile', action="append", - help=("ssh key files that will be added to cdist config; " - "'__ssh_authorized_keys root ...' type is appended to " - "initial manifest"), - dest='keyfile') - parser.add_argument( - '-m', '--mirror', - help='use specified mirror for debootstrap', - dest='mirror') - parser.add_argument( - '-P', '--root-password', - help='Set specified password for root, generated by default', - dest='root_password') - parser.add_argument('-p', '--pxe-boot-dir', help='PXE boot directory', - dest='pxe_boot_dir') - parser.add_argument( - '-r', '--rm-bootstrap-dir', - help='remove target directory after finishing', - dest='rm_bootstrap_dir', action='store_true', - default=defargs.rm_bootstrap_dir) - parser.add_argument( - '-S', '--script', - help='use specified script for debootstrap', - dest='script') - parser.add_argument('-s', '--suite', - help="suite used for debootstrap, " - "by default '{}'".format(defargs.suite), - dest='suite', default=defargs.suite) - parser.add_argument( - '-y', '--remote-copy', - help=("remote copy that cdist config will use, by default " - "internal script is used"), - dest='remote_copy', default=defargs.remote_copy) - parser.epilog = cdist.argparse.EPILOG - - return parser - - @classmethod - def update_env(cls, env): - pass - - @classmethod - def commandline(cls, argv): - log = logging.getLogger(cls.__name__) - - parser = cls.get_parser() - args = parser.parse_args(argv) - if args.script and not args.mirror: - raise cdist.Error("script option cannot be used without " - "mirror option") - - args.command = cls._preos_name - cdist.argparse.check_beta(vars(args)) - - cdist.preos.check_root() - - args.target_dir = os.path.realpath(args.target_dir[0]) - args.os = cls._preos_name - args.remote_exec = os.path.realpath(args.remote_exec) - args.remote_copy = os.path.realpath(args.remote_copy) - args.manifest = os.path.realpath(args.manifest) - if args.keyfile: - new_keyfile = [os.path.realpath(x) for x in args.keyfile] - args.keyfile = new_keyfile - if args.pxe_boot_dir: - args.pxe_boot_dir = os.path.realpath(args.pxe_boot_dir) - - cdist.argparse.handle_loglevel(args) - log.debug("preos: {}, args: {}".format(cls._preos_name, args)) - try: - env = vars(args) - new_env = {} - for key in env: - if key == 'verbose' and env[key]: - if env[key] >= 3: - new_env['debug'] = "yes" - elif env[key] == 2: - new_env['verbose'] = "yes" - elif not env[key]: - new_env[key] = '' - elif isinstance(env[key], bool) and env[key]: - new_env[key] = "yes" - elif isinstance(env[key], list): - val = env[key] - new_env[key + "_cnt"] = str(len(val)) - for i, v in enumerate(val): - new_env[key + "_" + str(i)] = v - else: - new_env[key] = str(env[key]) - env = new_env - env.update(os.environ) - cls.update_env(env) - log.debug("preos: {} env: {}".format(cls._preos_name, env)) - cmd = os.path.join(cls._files_dir, "code") - info_msg = ["Running preos: {}, suite: {}, arch: {}".format( - cls._preos_name, args.suite, args.arch), ] - if args.mirror: - info_msg.append("mirror: {}".format(args.mirror)) - if args.script: - info_msg.append("script: {}".format(args.script)) - if args.bootstrap: - info_msg.append("bootstrapping") - if args.configure: - info_msg.append("configuring") - if args.pxe_boot_dir: - info_msg.append("creating PXE") - if args.drive: - info_msg.append("creating bootable drive") - log.info(info_msg) - log.debug("cmd={}".format(cmd)) - subprocess.check_call(cmd, env=env, shell=True) - except subprocess.CalledProcessError as e: - log.error("preos {} failed: {}".format(cls._preos_name, e)) - - -class Ubuntu(Debian): - _preos_name = "ubuntu" - - @classmethod - def default_args(cls): - defargs = super().default_args() - defargs.suite = 'xenial' - return defargs - - -class Devuan(Debian): - _preos_name = "devuan" - - @classmethod - def default_args(cls): - defargs = super().default_args() - defargs.suite = 'jessie' - return defargs - - @classmethod - def update_env(cls, env): - env['DEBOOTSTRAP_DIR'] = os.path.join(cls._files_dir, - 'devuan-debootstrap') diff --git a/cdist/preos/debootstrap/files/code b/cdist/preos/debootstrap/files/code deleted file mode 100755 index 9e37003b..00000000 --- a/cdist/preos/debootstrap/files/code +++ /dev/null @@ -1,274 +0,0 @@ -#!/bin/sh -## -## 2016 Darko Poljak (darko.poljak at ungleich.ch) -## -## This file is part of cdist. -## -## cdist is free software: you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, either version 3 of the License, or -## (at your option) any later version. -## -## cdist is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with cdist. If not, see . - -set -e - -if [ "${debug}" ] -then - set -x - cdist_params="${cdist_params} -d" -fi - -bootstrap_dir="${target_dir}" - -case "${os}" in - ubuntu|debian|devuan) - # nothing, those are valid values - ;; - *) - echo "ERROR: invalid os value: ${os}" >&2 - exit 1 - ;; -esac - -check_bootstrap_dir() { - if [ ! -e "$1" ] - then - echo "ERROR: bootstrap directory $1 does not exist" >&2 - exit 1 - fi -} - -# bootstrap -if [ "${bootstrap}" ] -then - if [ "${DEBOOTSTRAP_DIR}" ] - then - debootstrap_cmd="${DEBOOTSTRAP_DIR}/debootstrap" - else - command -v debootstrap 2>&1 > /dev/null || { - echo "ERROR: debootstrap not found" >&2 - exit 1 - } - debootstrap_cmd="debootstrap" - fi - - # If PreOS on drive then do not check for directory emptiness. - # Partition can at least contain 'lost+found' directory. - if [ ! "${drive}" ] - then - if [ -e "${bootstrap_dir}" ] - then - dir_content=$(ls -A "${bootstrap_dir}" | wc -l) - else - dir_content=0 - fi - if [ "${dir_content}" -ne 0 ] - then - echo "ERROR: "${bootstrap_dir}" not empty " >&2 - exit 1 - fi - fi - - if [ "${verbose}" -o "${debug}" ] - then - echo "bootstrapping..." - fi - mkdir -p "${bootstrap_dir}" - "${debootstrap_cmd}" --include=openssh-server --arch=${arch} ${suite} ${bootstrap_dir} \ - ${mirror} ${script} - if [ "${verbose}" -o "${debug}" ] - then - echo "bootstrap finished" - fi -fi - -chroot_mount() { - mount -t proc none "${bootstrap_dir}/proc" || true - mount -t sysfs none "${bootstrap_dir}/sys" || true - mount -o bind /dev "${bootstrap_dir}/dev" || true - mount -t devpts none "${bootstrap_dir}/dev/pts" || true -} - -chroot_umount() { - umount "${bootstrap_dir}/dev/pts" || true - umount "${bootstrap_dir}/dev" || true - umount "${bootstrap_dir}/sys" || true - umount "${bootstrap_dir}/proc" || true -} - -TRAPFUNC="umount \"${bootstrap_dir}/dev/pts\" || true; \ -umount \"${bootstrap_dir}/dev\" || true; \ -umount \"${bootstrap_dir}/sys\" || true; \ -umount \"${bootstrap_dir}/proc\" || true;" - -# config -if [ "${configure}" ] -then - if [ ! -f "${manifest}" ] - then - echo "ERROR: ${manifest} does not exist" >&2 - exit 1 - fi - if [ ! -f "${remote_exec}" ] - then - echo "ERROR: ${remote_exec} does not exist" >&2 - exit 1 - fi - if [ ! -f "${remote_copy}" ] - then - echo "ERROR: ${remote_copy} does not exist" >&2 - exit 1 - fi - - if [ "${keyfile_cnt}" -a "${keyfile_cnt}" -gt 0 ] - then - i="$((keyfile_cnt - 1))" - keyfiles="" - while [ "${i}" -ge 0 ] - do - kf_var="keyfile_${i}" - eval kf='$'"${kf_var}" - if [ ! -f "${kf}" ] - then - echo "ERROR: ${kf} does not exist" >&2 - exit 1 - fi - key=$(cat "${kf}") - keyfiles="${keyfiles} --key '${key}'" - i=$((i - 1)) - done - ssh_auth_keys_line="__ssh_authorized_keys root ${keyfiles}\n" - else - ssh_auth_keys_line="" - fi - - check_bootstrap_dir "${bootstrap_dir}" - - if [ "${verbose}" -o "${debug}" ] - then - echo "configuring..." - fi - - trap "${TRAPFUNC}" 0 1 2 3 15 - - chroot_mount - - chroot "${bootstrap_dir}" /usr/bin/apt-get update - - if [ "${drive}" ] - then - grub_manifest_line="__package grub-pc --state present\n" - grub_kern_params_line="__line linux_kernel_params \ ---file /etc/default/grub \ ---line 'GRUB_CMDLINE_LINUX_DEFAULT=\"quiet splash net.ifnames=0\"'\n" - else - grub_manifest_line="" - grub_kern_params_line="" - fi - grub_lines="${grub_manifest_line}${grub_kern_params_line}" - - printf "${ssh_auth_keys_line}${grub_lines}" \ - | cat "${manifest}" - |\ - cdist config \ - ${cdist_params} -i - \ - --remote-exec "${remote_exec}" \ - --remote-copy "${remote_copy}" \ - "${bootstrap_dir}" - - # __hostname with systmed uses hostnamectl which needs dbus running - # set hostname explicitly here instead - printf "preos\n" > "${bootstrap_dir}/etc/hostname" - - chroot "${bootstrap_dir}" /usr/bin/apt-get autoclean - chroot "${bootstrap_dir}" /usr/bin/apt-get clean - chroot "${bootstrap_dir}" /usr/bin/apt-get autoremove - - chroot_umount - - trap - 0 1 2 3 15 - - if [ "${verbose}" -o "${debug}" ] - then - echo "configuring finished" - fi -fi - -if [ "${pxe_boot_dir}" ] -then - check_bootstrap_dir "${bootstrap_dir}" - - if [ "${verbose}" -o "${debug}" ] - then - echo "creating pxe..." - fi - - mkdir -p "${pxe_boot_dir}" - cp "${bootstrap_dir}"/boot/vmlinuz-* "${pxe_boot_dir}/kernel" - cd "${bootstrap_dir}" - find . -print0 | cpio --null -o --format=newc | gzip -9 > "${pxe_boot_dir}/initramfs" - - mkdir -p "${pxe_boot_dir}/pxelinux.cfg" - cat < "${pxe_boot_dir}/pxelinux.cfg/default" - DEFAULT preos - LABEL preos - KERNEL kernel - APPEND utf8 load_ramdisk=1 root=/dev/ram nofb initrd=initramfs console=ttyS1,115200 net.ifnames=0 -EOPXEF - - cp "${bootstrap_dir}/usr/lib/PXELINUX/pxelinux.0" "${pxe_boot_dir}/pxelinux.0" - cp "${bootstrap_dir}/usr/lib/syslinux/modules/bios/ldlinux.c32" \ - "${pxe_boot_dir}/ldlinux.c32" - # network boot need all files world readable - chmod -R 644 "${pxe_boot_dir}"/* - - if [ "${verbose}" -o "${debug}" ] - then - echo "pxe creation finished" - fi -fi - -if [ "${drive}" ] -then - trap "${TRAPFUNC}" 0 1 2 3 15 - chroot_mount - chroot "${bootstrap_dir}" grub-install ${drive} - chroot "${bootstrap_dir}" /bin/sh -c "GRUB_DISABLE_OS_PROBER=true update-grub" - # set root password - if [ ! "${root_password}" ] - then - if ! which strings >/dev/null 2>&1 - then - printf "strings is missing\n" >&2 - exit 1 - fi - root_password="$(head -n 1000 /dev/urandom | strings | \ - grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n')" - printf "Generated root password (without quotes):'${root_password}'\n" - fi - chroot "${bootstrap_dir}" /bin/sh -c "echo \"root:${root_password}\" | \ - chpasswd" - # /etc/securetty must not be world writeable. - chmod 644 "${bootstrap_dir}"/etc/securetty - chroot_umount - trap - 0 1 2 3 15 -fi - -if [ "${rm_bootstrap_dir}" ] -then - if [ "${verbose}" -o "${debug}" ] - then - echo "removing bootstrap dir..." - fi - rm -r -f "${bootstrap_dir}" - if [ "${verbose}" -o "${debug}" ] - then - echo "removing bootstrap dir finished" - fi -fi diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/Makefile b/cdist/preos/debootstrap/files/devuan-debootstrap/Makefile deleted file mode 100644 index 85168031..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# avoid dpkg-dev dependency; fish out the version with sed -VERSION := $(shell sed 's/.*(\(.*\)).*/\1/; q' debian/changelog) - -all: - -clean: - -DSDIR=$(DESTDIR)/usr/share/debootstrap -install: - mkdir -p $(DSDIR)/scripts - mkdir -p $(DESTDIR)/usr/sbin - - cp -a scripts/* $(DSDIR)/scripts/ - install -o root -g root -m 0644 functions $(DSDIR)/ - - sed 's/@VERSION@/$(VERSION)/g' debootstrap >$(DESTDIR)/usr/sbin/debootstrap - chown root:root $(DESTDIR)/usr/sbin/debootstrap - chmod 0755 $(DESTDIR)/usr/sbin/debootstrap diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/README b/cdist/preos/debootstrap/files/devuan-debootstrap/README deleted file mode 100644 index 4d8c3049..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/README +++ /dev/null @@ -1,65 +0,0 @@ -README for debootstrap -====================== - -See the manpage for (some) documentation. - -Running debootstrap from source -------------------------------- - -You can run debootstrap from its source tree without installing it. This -can be useful if you want a quick way to make a Debian chroot on another -system, or if you are testing modifications to debootstrap. - -First, get the source. - -* Either by using git - git clone https://anonscm.debian.org/git/d-i/debootstrap.git - -* Or by visiting - and downloading the tar.gz file - -Then in the debootstrap source directory: - - export DEBOOTSTRAP_DIR=`pwd` - sudo ./debootstrap stable my-stable-dir - -If you are running a multi-stage boot strap (for example for a QEMU -rootfs) you don't even need root: - - export DEBOOTSTRAP_DIR=`pwd` - fakeroot ./debootstrap --foreign --arch=armhf testing my-testing-dir http://deb.debian.org/debian - -Of course you will need to execute the second stage as root to finish the bootstrap: - - (on foreign hardware) - /debootstrap/debootstrap --second-stage - - -Future ------- - - * Cross-strap support - so you can bootstrap a filesystem to the - point where it will successfully boot, and finish installing itself - without having to be running the target architecture or OS yourself. - - debootstrap --arch powerpc sarge ./sarge-ppc-chroot ... - - on an i386 system, boot a powerpc box with sarge-ppc-chroot as its - root files system, and have it "work". The cross-hurd package does - something similar, and should be replaced by this feature. - - * There should be some (better) way of telling debootstrap what "base" - packages you want to install -- this varies between making a chroot, - doing an install, and doing a buildd. Also, some installs want - different base packages (to setup networking, or kernels, eg) - - -NMUing ------- - -If there's a problem with debootstrap that you need fixed, feel free to do -an NMU to fix it. Usual rules: try not to break anything, and mail the -patch to the BTS. Don't worry about asking first though. - -However, note that debootstrap is now team maintained. Anyone in d-i can do -a release without the bother of a NMU. diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/TODO b/cdist/preos/debootstrap/files/devuan-debootstrap/TODO deleted file mode 100644 index e5fde0e4..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/TODO +++ /dev/null @@ -1,11 +0,0 @@ - -Features: - ++ second stage via chroot debootstrap/debootstrap - ++ debootstrap/deb file to record deb destinations/information - - -- configuration file - -- versus command line - -- support for sources (vs mirrors) - -- faux-pinning for packages - - ++ makedev in second stage diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/.gitignore b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/.gitignore deleted file mode 100644 index 39638d97..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -debootstrap -debootstrap-udeb -files -*.debhelper.log -*.substvars - diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/README.DevuanSource b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/README.DevuanSource deleted file mode 100644 index 6446a088..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/README.DevuanSource +++ /dev/null @@ -1,15 +0,0 @@ -To sync up with debians source for inspiration you should run the following: - - `git remote add alioth-git git://anonscm.debian.org/d-i/debootstrap.git` - `git fetch alioth-git` - -After that you can either cherry-pick or merge releases from debian. To -merge a release, it's do: - `git tag` to list the release tags -and - `git merge ` -followed by all the fixups and then commit with an appropriate message like - "Merging Release from debian" - -Copyright 2016 Daniel Reurich - diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/changelog b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/changelog deleted file mode 100644 index 8688197d..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/changelog +++ /dev/null @@ -1,2655 +0,0 @@ -debootstrap (1.0.87+devuan1.1) unstable; urgency=medium - - * add git to builddeps - - -- Daniel Reurich Fri, 13 Jan 2017 23:12:50 +1300 - -debootstrap (1.0.87+devuan1.0) unstable; urgency=high - - [ Julien Cristau ] - * Default to split /usr again, as merged-/usr breaks dpkg-shlibdeps - (closes: #844221). - - [ Riku Voipio ] - * remove scratchbox2 support (closes: #796189) - - -- Christian Perrier Wed, 16 Nov 2016 06:47:27 +0100 - -debootstrap (1.0.86+devuan1.0) unstable; urgency=high - - [ Daniel Reurich ] - * Restore Devuan Jessie version - * switch to 3.0 (git) source format - * set git-depth - * Add directions for inspiration from debians source - * removed file so we can build using git source format - * merge 1.0.86 for jessie - - -- Daniel Reurich Fri, 13 Jan 2017 15:58:19 +1300 - -debootstrap (1.0.86) unstable; urgency=high - - * Rework split_inline_sig by using shell built-ins instead of trying to - mix sed and tr together, which might work on regular systems but not - from inside the Debian Installer (Closes: #842591). Thanks to Ansgar - Burchardt for the proof of concept! - - -- Cyril Brulebois Sun, 30 Oct 2016 23:35:45 +0100 - -debootstrap (1.0.85-1+devuan1) unstable; urgency=medium - - * sync with debian upstream package - * add right keyrings with the new schema on devuan-keyring package - - -- Franco (nextime) Lanza Sat, 29 Oct 2016 23:21:57 +0200 - - -debootstrap (1.0.85) unstable; urgency=medium - - [ Julien Cristau ] - * Add support for downloading and validating InRelease files, by splitting - up detached signature from signed data. - * Switch default mirror to deb.debian.org. - - [ Colin Watson ] - * Add (Ubuntu) zesty as a symlink to gutsy. - - [ Ansgar Burchardt ] - * Add jessie-kfreebsd to merged-/usr blacklist. - * No longer Build-Depend on makedev. The code using it was already - removed in debootstrap 1.0.82. - * Do not use `tar -k` for older releases which might have file - conflicts between the packages to be installed. (Closes: #838388) - * Error out when seeing short options. (Closes: #548880) - * Add oldoldstable -> sid script symlink. (Closes: #792734) - * Add buster -> sid and bullseye -> sid script symlinks. - * Only unpack and configure the base system when there are actually - packages to install. (Closes: #825034) - * debootstrap.8: Use stretch instead of wheezy in examples. - - [ Marco d'Itri ] - * Enable merged-/usr by default. (Closes: #839046) - - -- Julien Cristau Fri, 21 Oct 2016 20:22:49 +0200 - -debootstrap (1.0.84) unstable; urgency=medium - - [ Ansgar Burchardt ] - * Add support for xz-compressed Packages indices. (Closes: #837649) - - -- Christian Perrier Thu, 06 Oct 2016 06:59:38 +0200 - -debootstrap (1.0.83) unstable; urgency=medium - - [ Ansgar Burchardt ] - * functions: Validate that the requested suite is listed in the - Release file's Suite or Codename field. (Closes: #837075) - * Add support for merged-/usr, enabled by a new --merged-usr option. - (Closes: #810301) - * Feign install of dpkg in second stage. This avoids problems when - using dpkg-deb together with busybox' tar. (Closes: #837185) - * README: Use https://. - - [ Steve McIntyre ] - * Update Standards-Version to 3.9.8 (no changes needed) - - -- Steve McIntyre <93sam@debian.org> Tue, 13 Sep 2016 13:16:41 +0100 - -debootstrap (1.0.82) unstable; urgency=medium - - [ Alex Bennée ] - * Excise all devices.tar.gz code. Closes: #830869 - - -- Christian Perrier Thu, 08 Sep 2016 07:09:56 +0200 - -debootstrap (1.0.81) unstable; urgency=medium - - [ Luca Falavigna ] - * Add (Ubuntu) yakkety as a symlink to gutsy. - - -- Christian Perrier Tue, 03 May 2016 06:51:57 +0200 - -debootstrap (1.0.80-1+devuan1) unstable; urgency=medium - - * sync with debian upstream package. - - -- Franco (nextime) Lanza Sun, 24 Apr 2016 06:16:29 +0200 - -debootstrap (1.0.80) unstable; urgency=medium - - [ Jon Boden ] - * scripts/gutsy: Support kfreebsd & hurd arches on Ubuntu targets - (closes: #818748) - - -- Christian Perrier Tue, 22 Mar 2016 19:27:45 +0100 - -debootstrap (1.0.79) unstable; urgency=medium - - [ Samuel Thibault ] - * hurd: move setting up dev and servers firmlink to setup_proc stage. Also - firmlink proc there. Thanks Gabriele Giacone for all the investigation! - (Closes: #768102) - - -- Christian Perrier Fri, 19 Feb 2016 07:23:59 +0100 - -debootstrap (1.0.78+nmu1) unstable; urgency=medium - - * Non-maintainer upload. - * Split setup_devices in setup_devices (which now only deals with static - device nodes) and setup_dynamic_devices, and move the calls to - setup_devices from the beginning of the second stage to the end of the - first stage. - setup_dynamic_devices mounts the appropriate filesystems which provide - dynamic device nodes for the architectures which need one in - debootstrap (kfreebsd and hurd). - This fixes a bug in --second-stage introduced in 1.0.34 and exposed - by the devices-related changes of 1.0.76: the second stage debootstrap - runs "dpkg --print-architecture >/dev/null" at the very beginning of - the program when /dev is still empty, so it creates an empty regular - file in place of /dev/null and this will cause mknod to fail later. - (Closes: #813232) - - -- Marco d'Itri Wed, 17 Feb 2016 01:23:23 +0100 - -debootstrap (1.0.78) unstable; urgency=high - - * Use HTTPS for Vcs-* URLs, and link to cgit rather than gitweb. - * Don't call mknod with the --mode option, it's not supported in - busybox. Use -m instead - fixes the broken fix for #812811. - Closes: #813124. Urgency high to get this fix propagated quickly - - it's breaking d-i installs right now. Adding myself to uploaders and - uploading. - - -- Steve McIntyre <93sam@debian.org> Fri, 29 Jan 2016 16:36:00 +0000 - -debootstrap (1.0.77) unstable; urgency=medium - - [ Marco d'Itri ] - * Fix permissions on device nodes (Closes: #812811). - - -- Cyril Brulebois Wed, 27 Jan 2016 20:22:05 +0100 - -debootstrap (1.0.76) unstable; urgency=medium - - [ Marco d'Itri ] - * Stop creating useless device nodes (Closes: #571136). - - -- Cyril Brulebois Sun, 24 Jan 2016 08:55:18 +0100 - -debootstrap (1.0.75-1+devuan1) unstable; urgency=medium - - * sync with debian upstream package - - -- Franco (nextime) Lanza Wed, 02 Dec 2015 04:05:36 +0100 - -debootstrap (1.0.75) unstable; urgency=medium - - * Stop cleaning KEEP_DEBOOTSTRAP_DIR twice, as spotted by Chris Lamb - (Closes: #804415). - * Add Tanglu support (Closes: #771687), thanks to Matthias Klumpp. At - the moment, the following extra suites are recognized: - - aequorea - - bartholomea - - chromodoris - - dasyatis - - -- Cyril Brulebois Wed, 11 Nov 2015 18:49:28 +0100 - -debootstrap (1.0.74) unstable; urgency=medium - - [ Colin Watson ] - * Add (Ubuntu) xenial as a symlink to gutsy. - - -- Christian Perrier Tue, 03 Nov 2015 07:09:23 +0100 - -debootstrap (1.0.73) unstable; urgency=medium - - * Generate a deburis file with (package, version, uri) tuples, similar - to the existing debpaths. - - -- Cyril Brulebois Thu, 22 Oct 2015 12:43:35 +0200 - -debootstrap (1.0.72-1+devuan1) unstable; urgency=medium - - * Rebase on debian 1.0.70 debootstrap version - * Added Daniel Reurich in Uploaders - * Integrating Daniel Reurich patches for d-i - * Updated manpage with Daniel Reurich changes - - -- Franco (nextime) Lanza Thu, 21 May 2015 05:45:36 +0200 - -debootstrap (1.0.72) unstable; urgency=medium - - [ Iain Lane ] - * Add (Ubuntu) wily as a symlink to gutsy (closes: #787117). - - [ Colin Watson ] - * Fix resolve_deps and setup_available to work in the --foreign case - (closes: #757819, LP: #1450980). - - -- Colin Watson Tue, 28 Jul 2015 14:32:19 +0100 - -debootstrap (1.0.71-1+devuan1) unstable; urgency=medium - - * make devuan-baseconf and devuan-keyring requireds packages - * make sure we have sysvinit-core and not systemd in the chroot - - -- Franco (nextime) Lanza Fri, 01 May 2015 02:13:04 +0200 - -debootstrap (1.0.71) unstable; urgency=medium - - * Adjust sed call to render it more portable (missing ';'), making it - work with FreeBSD sed. Thanks to Nikolai Lifanov for the report and - the patch (Closes: #791802). - - -- Cyril Brulebois Fri, 10 Jul 2015 01:29:52 +0200 - -debootstrap (1.0.70-1+devuan1) unstable; urgency=medium - - * Debianization of debootstrap. - * added ceres script and link jessie and ascii to it - - -- Franco (nextime) Lanza Sat, 11 Apr 2015 08:03:36 +0200 - -debootstrap (1.0.70) unstable; urgency=medium - - * Use tr instead of (missing in d-i) xargs (Closes: #785693). Thanks, - Julian Schauder! - - -- Cyril Brulebois Tue, 19 May 2015 11:38:27 +0200 - -debootstrap (1.0.69-1+devuan1) unstable; urgency=medium - - * Fix package description. - - -- Franco (nextime) Lanza Sat, 07 Mar 2015 21:31:07 +0100 - -debootstrap (1.0.69) unstable; urgency=medium - - [ Cyril Brulebois ] - * Make sure to deduplicate package list in download_release to avoid - issues while counting downloaded packages. The failure path could lead - to printing some strange integer (Closes: #709751, #768445, #785276, - #774752). - This was reported to mostly happen whenever --no-resolve-deps is used. - * Add support for --force-check-gpg so that one can programmatically - make sure keyring checks are used and that no fallback to an https - mirror happens (Closes: #661501, #733179, #775454). - * Switch default mirror from ftp.us.debian.org to the new, official - http redirector service: httpredir.debian.org - * Make it possible to override the MAKEDEV variable (Closes: #734743). - Thanks, Wookey! - - [ Christian Perrier ] - * Update Standards to 3.9.6 (checked) - - -- Christian Perrier Mon, 18 May 2015 14:07:43 +0200 - -debootstrap (1.0.68-2+devuan1) unstable; urgency=medium - - * Added missing symlink. - - -- Franco (nextime) Lanza Sat, 07 Mar 2015 21:18:26 +0100 - -debootstrap (1.0.68-1+devuan1) unstable; urgency=medium - - * Added script for ascii. - - -- Franco (nextime) Lanza Sat, 07 Mar 2015 11:47:02 +0100 -debootstrap (1.0.68) unstable; urgency=medium - - [ Steven Chamberlain ] - * Support the jessie-kfreebsd suite, by using the same script as - jessie (a symlink to sid) (Closes: #784927). - - -- Christian Perrier Mon, 11 May 2015 07:46:19 +0200 - -debootstrap (1.0.67-1+devuan2) unstable; urgency=medium - - * Switch to quilt format - - -- Franco (nextime) Lanza Tue, 03 Mar 2015 07:44:11 +0100 - -debootstrap (1.0.67+devuan1) unstable; urgency=medium - - * Applied init freedom patch (debian bug 668001) - * moved to devuan - - -- Franco (nextime) Lanza Tue, 03 Mar 2015 07:09:36 +0100 - -debootstrap (1.0.67) unstable; urgency=medium - - [ Cyril Brulebois ] - * Apply patch by Jérémy Bobbio to support reproducible builds: specify - a modification time on the tar side, and add the -n option to gzip - (Closes: #774069). Thanks, Jérémy! - * Update setup_apt_sources to look at USE_COMPONENTS if COMPONENTS is - empty, fixing the empty sources.list bug with foreign architectures - (Closes: #732255, #773867). - - -- Christian Perrier Wed, 14 Jan 2015 07:03:17 +0100 - -debootstrap (1.0.66) unstable; urgency=low - - [ Cyril Brulebois ] - * Specify gzip compression in debian/source/options to allow for better - portability on other platforms (Closes: #770214). Thanks, Joey Hess! - * Specify gzip compression for debootstrap, and xz for debootstrap-udeb, - to mitigate the need for xz on non-Debian platforms (see: #770217). - - -- Christian Perrier Mon, 24 Nov 2014 09:15:50 +0100 - -debootstrap (1.0.65) unstable; urgency=medium - - [ Julien Cristau ] - * Add support for stretch. - - -- Christian Perrier Mon, 10 Nov 2014 09:24:56 +0100 - -debootstrap (1.0.64) unstable; urgency=medium - - * Add (Ubuntu) vivid as a symlink to gutsy. - - -- Colin Watson Mon, 20 Oct 2014 16:48:49 +0100 - -debootstrap (1.0.63) unstable; urgency=medium - - [ Joey Hess ] - * Move set -e out of shebang line. Closes: #762713 - - -- Christian Perrier Thu, 25 Sep 2014 06:44:16 +0200 - -debootstrap (1.0.62) unstable; urgency=medium - - [ Cyril Brulebois ] - * Fix reporting of package version in retrieval and validation steps - to cope with epochs. - - -- Christian Perrier Mon, 15 Sep 2014 11:40:54 +0200 - -debootstrap (1.0.61) unstable; urgency=medium - - * Fix "possibly the package $pkg is at fault" warnings to account for - changed error output in dpkg 1.17.2. - - -- Colin Watson Sun, 31 Aug 2014 22:07:49 +0100 - -debootstrap (1.0.60) unstable; urgency=medium - - [ Adam Conrad ] - * Add (Ubuntu) utopic as a symlink to gutsy. - - [ Guillem Jover ] - * Sync deb support with latest dpkg-deb (closes: #739136): - - Add uncompressed data.tar deb member support. - - Add uncompressed and xz control.tar deb member support. - - -- Colin Watson Tue, 06 May 2014 09:37:34 +0100 - -debootstrap (1.0.59) unstable; urgency=medium - - * Install ca-certificates as well as apt-transport-https for HTTPS - installations. This makes it possible to copy certificates that were - built into the installer to /usr/local/share/ca-certificates/ and thus - have them continue to be trusted after installation. - - -- Colin Watson Thu, 13 Feb 2014 13:42:54 +0000 - -debootstrap (1.0.58) unstable; urgency=medium - - * Policy version 3.9.5: no changes required. - * Install apt-transport-https if installing from an HTTPS mirror - (LP: #1135163). It may still be necessary to copy certificates into - place, but there's at least a reasonable chance that somebody installing - from HTTPS may want to keep using it, and we have to install - apt-transport-https at this point otherwise they won't be able to do - that end-to-end. - - -- Colin Watson Tue, 11 Feb 2014 17:46:41 +0000 - -debootstrap (1.0.57) unstable; urgency=medium - - * pkgdetails_perl: Only interpret percentages following whitespace, to - cope with GNU wget outputting the local file name (which may contain "%" - due to URL-encoding) after it finishes the download (LP: #1172101). - - -- Colin Watson Fri, 07 Feb 2014 16:12:23 +0000 - -debootstrap (1.0.56) unstable; urgency=low - - [ Tollef Fog Heen ] - * Install base-passwd and base-files in two calls rather than one to - avoid problems with home-built media with different ordering in - Packages. Thanks to Jo Shields for pointing this out and providing - the workaround. Closes: #601670. LP: #1001131. - - [ Joey Hess ] - * When deboostrapping Debian, and the debian-archive-keyring is not - available, switch the default mirror to a https url. This way at - least the CA level of security is available even for users who - have no way to check gpg keys in the WoT. The https mirror is - currently https://mirrors.kernel.org/debian. - * Avoid writing https urls into sources.list, as apt does not support https. - - -- Christian Perrier Mon, 30 Dec 2013 08:00:41 +0100 - -debootstrap (1.0.55) unstable; urgency=low - - [ Matthias Klose ] - * Add (Ubuntu) trusty as a symlink to gutsy. - - -- Christian Perrier Tue, 22 Oct 2013 13:43:23 +0200 - -debootstrap (1.0.53) unstable; urgency=low - - [ Dmitrijs Ledkovs ] - * Set debian source format to '3.0 (native)'. - * Bump debhelper compat level to 9. - * Set Vcs-* to canonical format. - - [ Christian Perrier ] - * Update Standards to 3.9.4 (checked) - - -- Christian Perrier Sun, 14 Jul 2013 13:06:33 +0200 - -debootstrap (1.0.52) unstable; urgency=low - - * scripts/gutsy: Make the fake initctl pass through "initctl version" - calls, used by such things as invoke-rc.d to figure out whether it's - running under Upstart (LP: #1182540). - * scripts/sid, scripts/gutsy: Add a policy-rc.d, matching that in - debian-installer-utils. This is the primary way to disable daemon - startup. - - -- Colin Watson Wed, 22 May 2013 16:55:59 +0100 - -debootstrap (1.0.51) unstable; urgency=low - - [ Scott Kitterman ] - * Add (Ubuntu) saucy as a symlink to gutsy (closes: #706989). - - [ Colin Watson ] - * Clarify location of pkgdetails.c in error message (closes: #708771). - * Resolve mount point symlinks relative to the target chroot before - unmounting them (closes: #702861, #703037, #704744). - - -- Colin Watson Sat, 18 May 2013 23:18:08 +0100 - -debootstrap (1.0.50) unstable; urgency=low - - [ Hector Oron ] - * Report package version information on package retrieve and validation. - Closes: #697675 - - -- Christian Perrier Fri, 17 May 2013 13:34:34 +0200 - -debootstrap (1.0.49) unstable; urgency=medium - - * Add support for jessie. Closes: #706788 - - -- Joey Hess Sat, 04 May 2013 23:37:52 -0400 - -debootstrap (1.0.48) unstable; urgency=low - - * Team upload - - [ Julien Cristau ] - * Disable InRelease support. gpgv won't give us back the signed data, and - full gpg is not available inside d-i (closes: #703889). - * Move extract_release_components to after signature verification. - Suggested by Ansgar Burchardt. - - -- Didier Raboud Thu, 04 Apr 2013 16:17:57 +0200 - -debootstrap (1.0.47) unstable; urgency=low - - * Team upload - * Properly decrypt the InRelease file when downloading from an archive - where InRelease is used. This longstanding bug was masked by former - APT behaviour and was revealed only with recent APT versions - Closes: #703146 - Thanks to Michael Vogt for the analysis and patch - * Add a dependency on gpg because of the above change. - - -- Christian Perrier Wed, 20 Mar 2013 21:34:29 +0100 - -debootstrap (1.0.46) unstable; urgency=low - - * Team upload. - * Use `which` to find out sh only if /bin/sh does not exist. - - -- Samuel Thibault Thu, 27 Dec 2012 15:47:16 +0100 - -debootstrap (1.0.45) unstable; urgency=low - - [ Joey Hess ] - * Better support use on Android by not hardcoding /bin/sh - in a test file that's created, and instead putting in the - actual path to sh. Closes: #694310 Thanks, Shawn Landden - - -- Christian Perrier Sat, 22 Dec 2012 12:56:32 +0100 - -debootstrap (1.0.44) unstable; urgency=low - - * Remove double quotes to fix for loop on GNU/kFreeBSD, thanks to - Oleg Ginzburg (Closes: #693718). - - -- Cyril Brulebois Tue, 20 Nov 2012 23:55:53 +0100 - -debootstrap (1.0.43) unstable; urgency=low - - [ Joey Hess ] - * Fix "arc" typo. Closes: #686680 - - [ Colin Watson ] - * Add (Ubuntu) raring as a symlink to gutsy. - - [ Christian Perrier ] - * Add myself to Uploaders and drop Anthony Towns who is no - longer active in debootstrap maintenance for a few years. Thanks - for your work, Anthony. - * Bump Standards to 3.9.3 (checked) - * Replace XC-Package-Type by Package-Type in debian/control - - -- Christian Perrier Sat, 27 Oct 2012 12:46:46 +0200 - -debootstrap (1.0.42) unstable; urgency=low - - * Downgrade the absence of an InRelease file from a warning to an info - message. For now, debootstrap can cope fine without, and it's possible - there are Debian mirrors that don't have InRelease; Ubuntu doesn't quite - have InRelease support yet either (LP: #1017398). - - -- Colin Watson Tue, 03 Jul 2012 15:34:57 +0100 - -debootstrap (1.0.41) unstable; urgency=low - - [ Mehdi Dogguy ] - * Add support for InRelease files (Closes: #638682) - - -- Joey Hess Thu, 21 Jun 2012 13:16:22 -0400 - -debootstrap (1.0.40) unstable; urgency=low - - [ Joey Hess ] - * When installation or configuration of a package fails, output a message - that points the user to the log file. Attempt to grep out the first - package that dpkg failed on and show its name too. Closes: #472704 - - [ Colin Watson ] - * Add (Ubuntu) quantal as a symlink to gutsy. - - -- Colin Watson Thu, 26 Apr 2012 17:44:44 +0100 - -debootstrap (1.0.39) unstable; urgency=low - - * Retry corrupted downloads rather than carrying on almost regardless. - Patch mostly due to Michael Gilbert, rearranged somewhat by me (closes: - #618920). - * Stop at the end of the retrieval phase if any packages failed to - download. - - -- Colin Watson Tue, 13 Mar 2012 17:21:13 +0000 - -debootstrap (1.0.38) unstable; urgency=low - - [ Joey Hess ] - * Improve error message when a decompressor is not available, - to indicate which package has been built with bzip today. - Closes: #644719 - - [ Otavio Salvador ] - * Fix --print-debs support when using --foreign param. Closes: - #551837. - - [ Colin Watson ] - * pkgdetails_perl: Use the last of a sequence of stanzas for the same - package name, rather than the first (closes: #649319). - - -- Colin Watson Mon, 21 Nov 2011 13:20:53 +0000 - -debootstrap (1.0.37) unstable; urgency=low - - * Add (Ubuntu) precise as a symlink to gutsy. - - -- Colin Watson Wed, 05 Oct 2011 21:58:37 +0100 - -debootstrap (1.0.36) unstable; urgency=low - - * Guess host OS based on uname for non-Debian systems. Closes: #637363 - * Clarify "target" in usage message. - * Fix support for running debootstrap on a FreeBSD host to create a kFreeBSD - chroot or jail. Thanks, Arno Toell. - * Search PATH for programs, rather than checking hardcoded locations. - * Support using md5 and shaN programs, as found on FreeBSD, in addition - to md5sum and shaNsum. - * When FreeBSD (not kfreebsd) is the host, don't chroot to mount special - filesystems. - * When debootstrapping on FreeBSD, warn if necessary modules are not - loaded. Thanks, Arno Toell. - * Workaround for umount bug #634107, which broke pbuilder and "debootstrap ." - Closes: #631087 - - -- Joey Hess Sun, 21 Aug 2011 18:39:26 -0400 - -debootstrap (1.0.35) unstable; urgency=low - - [ Robert Millan ] - * Don't build devices.tar.gz if building on GNU/kFreeBSD (closes: - #637297). - * Don't use --arch when we specifically care about the host architecture - (closes: #637298). - - -- Colin Watson Wed, 10 Aug 2011 13:04:41 +0100 - -debootstrap (1.0.34) unstable; urgency=low - - * Add more information regarding the version and architecture in case - a download fails. Closes: #633625. - * add /usr/sbin and /sbin to PATH for fakechroot variant. Closes: - #588773 - * Move setup_devices to second stage of bootstrap. Closes: #498731, - #531316 - - -- Otavio Salvador Thu, 28 Jul 2011 19:13:10 +0200 - -debootstrap (1.0.33) unstable; urgency=low - - [ Joey Hess ] - * Mention minbase variant in --help. Closes: #632418 - * Use md5sums for sarge, which did not consistently have sha1sums - everywhere. Closes: #633158 - - [ Colin Watson ] - * Improve text of error message when decompression command is not - available. - - -- Otavio Salvador Sun, 24 Jul 2011 10:33:56 +0200 - -debootstrap (1.0.32) unstable; urgency=low - - * Use md5sums for woody and potato, which only had those checksums - in the Packages files. Closes: #627365 - - -- Joey Hess Mon, 30 May 2011 13:57:46 -0400 - -debootstrap (1.0.31) unstable; urgency=low - - [ Mark Hymers ] - * Don't use the Build-Essential: yes field in Debian, use the - build-essential package. Closes: #619700. - - [ Colin Watson ] - * If ubuntu-keyring is installed, check Release signatures against it when - bootstrapping Ubuntu gutsy and later. - * Recommend ubuntu-keyring rather than debian-archive-keyring on - Ubuntu-derived systems. - - -- Colin Watson Fri, 20 May 2011 09:45:48 +0100 - -debootstrap (1.0.30) unstable; urgency=low - - [ Joey Hess ] - * Recommend debian-archive-keyring, and if it is installed, - default to checking gpg signatures of the Release file against it - when bootstrapping sid, squeeze, wheezy, etch, and lenny. - Closes: #560038 - * Add --no-check-gpg option that can be used to disable release file - verification. Closes: #624229 - * Needs base-installer 1.117. - * Add a warning message if the keyring file is not available, and - --no-check-gpg is not specified. - * Clear all global variables used for options, so that unclean - environment doesn't break debootstrap. Closes: #621657 - * Removed the --boot-floppies switch and mode. Assuming this has - not been used in 10 years. - - [ Colin Watson ] - * Resolve dependencies from all requested components (LP: #740167). - - -- Joey Hess Tue, 26 Apr 2011 17:10:00 -0400 - -debootstrap (1.0.29) unstable; urgency=low - - [ Joey Hess ] - * Support bootstrapping oldstable. (Lenny could already be bootstrapped - using that suite name.) - - [ Colin Watson ] - * Add (Ubuntu) oneiric as a symlink to gutsy. - - -- Colin Watson Tue, 22 Mar 2011 10:58:49 +0000 - -debootstrap (1.0.28) unstable; urgency=low - - [ Miguel Figueiredo ] - * Fix for ar usage, thanks to Guillem Jover. Closes: #598729 - - [ Joey Hess ] - * Remove 5 second sleeps when debootstrap finds additional required - dependencies. d-i just got that much faster. - * Use SHA checksums. Defaulting to SHA256, and configurable by - SHA_SIZE environment variable. Closes: #614315 - * If a sha256sum program is not available, fall back to sha1sum. - This is to support debootstrap use on embedded systems, which are more - likely to have the latter. - * Avoid new(?) warning from dpkg about missing Maintainer field when - feigning install of a package. - - -- Joey Hess Mon, 21 Feb 2011 20:48:46 -0400 - -debootstrap (1.0.27) unstable; urgency=low - - [ Miguel Figueiredo ] - * Fix bug and typo on --private-key - Patch by Jonathan Klee. - - [ Jeremie Koenig ] - * Hurd support: - - Use the newer setup-translators script and firmlink - $TARGET/{dev,servers} in setup_devices_hurd; - - Don't attempt to build devices.tar.gz, which is not needed. - - -- Otavio Salvador Mon, 07 Feb 2011 19:40:24 -0200 - -debootstrap (1.0.26) unstable; urgency=low - - [ Christian Perrier ] - * Consistently use tab indenting in scripts/gutsy and scripts/sid - Patch by Karl Goetz. Closes: #601821 - * Fix a typo in the debootstrap script - Patch by Karl Goetz. Closes: #601822 - - [ Joey Hess ] - * sid: Remove old workaround for etch era coreutils/textutils md5sum - diversion problem. (#329394) - - -- Otavio Salvador Fri, 12 Nov 2010 10:07:41 -0200 - -debootstrap (1.0.25) unstable; urgency=low - - * Remove debug statement that slipped in. - * Add test to guard against devices.tar.gz being empty. - * /dev/MAKEDEV cannot be relied on (udev likes to make it a symlink to - true). Always use /sbin/MAKEDEV. Closes: #598080 - - -- Joey Hess Sun, 26 Sep 2010 13:18:31 -0400 - -debootstrap (1.0.24) unstable; urgency=low - - [ Miguel Figueiredo ] - * Apply patches from by Jonathan Klee and Guillaume Chauvel - to add support to https (closes: #521196). - - [ Colin Watson ] - * Add (Ubuntu) natty as a symlink to gutsy. - - [ Joey Hess ] - * Add support for wheezy. Closes: #597461 - - -- Joey Hess Sun, 19 Sep 2010 21:40:00 -0400 - -debootstrap (1.0.23) unstable; urgency=low - - * Add (Ubuntu) maverick as a symlink to gutsy. - * Add ${misc:Depends}. - - -- Colin Watson Wed, 19 May 2010 13:35:34 +0100 - -debootstrap (1.0.22) unstable; urgency=low - - * Redo release since it ended up with testing directory in tar.gz. - - -- Otavio Salvador Mon, 22 Feb 2010 16:52:49 -0300 - -debootstrap (1.0.21) unstable; urgency=low - - [ Otavio Salvador ] - * Apply patch from Clint Adams to add support for - gz/bz2/xz data.tar (closes: #458663). - - [ Guillem Jover ] - * Refactor deb extractors into two new functions. - * Use dpkg-deb if available instead of ar (closes: #557296). - * Add an --extractor option to override the automatic extractor selection. - - [ Otavio Salvador ] - * Document new --extractor option in manpage. - * Apply patch from Vagrant Cascadian not - fail if resolv.conf is a broken symlink (closes: #390647). - - [ Frans Pop ] - * Use tab indentation in scripts/debian/sid to reduce its size (relevant - for Debian Installer). - * Add apt to base packages for the buildd variant as it is no longer marked - Build-Essential. - - [ Otavio Salvador ] - * Apply patch from Andres Salomon to honor - --components when using mirror_style 'main' (closes: #561283). - * Apply patch from Andres Salomon to fix - iteration through components in download_main (closes: #561298). - - [ Joey Hess ] - * Allow the suite to be stable, testing, or unstable when debootstrapping - Debian. Closes: #288109 - * Make scripts directory in source tree look like installed directory, - and add a section to README explaining an easy way to run - debootstrap w/o installing it. Closes: #345762 - * Convert rules file to use dh with overrides. - * Remove binary-basedebs target from debian/rules. - This target has been broken in multiple ways since 2007. While I - accidentially partially fixed it with the above changes, this is evidence - it's dead code that can be safely removed. - - -- Otavio Salvador Sun, 21 Feb 2010 23:11:06 -0300 - -debootstrap (1.0.20) unstable; urgency=low - - * For recent Ubuntu versions, move $TARGET/sbin/initctl aside in the same - way we do start-stop-daemon, so that attempts to control Upstart jobs - won't inadvertently affect jobs in the host system. - * Rename EXAMPLE section in debootstrap(8) to EXAMPLES (closes: #548458). - - -- Colin Watson Sun, 04 Oct 2009 21:23:07 +0100 - -debootstrap (1.0.19) unstable; urgency=low - - * Ignore failures from dpkg --predep-package. It exits 1 if there are no - suitable packages available, which isn't an error for us, but in_target - complains anyway, so just use in_target_nofail; the termination - condition is handled immediately afterwards anyway. - - -- Colin Watson Thu, 24 Sep 2009 19:57:05 +0100 - -debootstrap (1.0.18) unstable; urgency=low - - * Only use dpkg from the chroot, as there is no guarantee dpkg is - available outside of the chroot (d-i installation for example). - - -- Aurelien Jarno Wed, 23 Sep 2009 11:37:01 +0200 - -debootstrap (1.0.17) unstable; urgency=low - - * Remove boneheaded use of sudo left over from testing (closes: #547949). - - -- Colin Watson Tue, 22 Sep 2009 20:10:19 +0100 - -debootstrap (1.0.16) unstable; urgency=low - - [ Colin Watson ] - * Cope with pre-dependencies of included packages that aren't in Priority: - required (closes: #487908). - * Upgrade to debhelper v7. (Override rules get pretty hairy for this - package, so I haven't switched to dh(1).) - * Use ports.ubuntu.com as default mirror on sparc for Ubuntu hardy and - beyond (LP: #431145). - * Add (Ubuntu) lucid as a symlink to gutsy. - - [ Frans Pop ] - * Makefile: remove unused ARCH variable. - - -- Colin Watson Mon, 21 Sep 2009 16:28:40 +0100 - -debootstrap (1.0.15) unstable; urgency=low - - * On Linux, clear out /etc/mtab on exit if it's not a symlink. Should fix - problems Wouter Verhelst and Martin Michlmayr are seeing with - initramfs-tools MODULES=dep, although it probably isn't a perfect - solution. - - -- Colin Watson Thu, 23 Jul 2009 16:45:00 +0100 - -debootstrap (1.0.14) unstable; urgency=low - - * Apply patch from Felix Zielcke to use "dpkg - --print-architecture" to avoid deprecation warning. Closes: #531680. - * Reference squeeze instead of sarge in manpage. Based on a patch from - Geoff Simmons . Closes: #534575. - * Apply patch from Riku Voipio to add support for - scratchbox variant. Closes: #536820. - - -- Otavio Salvador Wed, 22 Jul 2009 12:34:54 -0300 - -debootstrap (1.0.13) unstable; urgency=low - - [ Otavio Salvador ] - * Apply patch from Luca Favatella to improve - coding style. - - [ Colin Watson ] - * Add (Ubuntu) karmic as a symlink to gutsy. - - -- Colin Watson Fri, 24 Apr 2009 20:08:24 +0100 - -debootstrap (1.0.12) unstable; urgency=low - - [ Otavio Salvador ] - * Improve code to choose between libc packages. Thanks to Luca Favatella - for first version of the patch. - - [ Colin Watson ] - * Remove partial support for emitting translated progress messages with - gettext. Don't panic; d-i still has all the support necessary for this. - debootstrap's own support for doing this outside d-i with gettext's - shell bindings has been completely broken ever since it was added in - 2003, though, and nobody has complained. Fixing it would require a big - pile of infrastructure and some non-trivial patches, plus arranging to - copy all the translations over from base-installer, and it just doesn't - seem worth it, so lose the cruft (LP: #188690). - * Export PATH, just to make sure. It isn't necessarily exported by shells - running from init=/bin/sh or similar, and the upstream bash maintainer - is unwilling to export it by default; it's easy enough to do so here - (LP: #320188). - - -- Colin Watson Tue, 17 Mar 2009 16:38:46 +0000 - -debootstrap (1.0.11) unstable; urgency=low - - * Add (Ubuntu) jaunty as a symlink to gutsy. - * Clarify that --second-stage is needed to complete the bootstrapping - process after --foreign. - * Fix --make-tarball= option (closes: #484869). - * Fix old Debian scripts and all Ubuntu scripts to cope with Anthony's - change in 1.0.8 to make --second-stage not bother recalculating required - and base. - * Rename 'repeat' to 'repeatn', since 'repeat' is a reserved word in zsh; - although strictly speaking this seems like an incompatibility in zsh - when linked to /bin/sh (closes: #340058). - * Fix --unpack-tarball= option (thanks, Torsten Landschoff; closes: - #500759). - * Fix handling of relative DEBOOTSTRAP_DIR (thanks, Mikhail Gusarov; - closes: #503460). - * Cope with ancient versions of chroot(8) that don't call chdir() (thanks, - Patrik Arvhult; closes: #350635). - * Recommend gnupg for --keyring option (thanks, Robert Millan; closes: - #467571). - * Note that you can't --include packages with non-required Pre-Depends - (see #487908). - * Mention /sys in EXAMPLE section of manual page, and use "defaults" - rather than "none" as the mount options for /proc (thanks, Raúl Sánchez - Siles; closes: #410787). - * Add /dev/console to devices.tar.gz (after all, MAKEDEV's 'consoleonly' - was added for boot-floppies in the first place; see - https://lists.ubuntu.com/archives/ubuntu-devel/2009-January/027230.html). - * Add support for squeeze (closes: #513488). - - -- Colin Watson Wed, 18 Feb 2009 23:46:12 +0000 - -debootstrap (1.0.10) unstable; urgency=low - - [ Joey Hess ] - * Avoid "broken pipe" errors in bootstrap.log from the the smallyes function. - The errors themselves are inherent to how the function is used, so just - suppress them. Closes: #480560. - - [ Frans Pop ] - * Do not cache Release and Release.gpg files. Closes: #488424. - * Abort if a Packages file failed to verify. - * Update standards version to 3.8.0; no other changes needed. - - -- Frans Pop Wed, 02 Jul 2008 17:44:25 +0200 - -debootstrap (1.0.9) unstable; urgency=low - - [ Frans Pop ] - * Error out on unrecognized options to avoid invalid options to be - recognized as arguments. - - [ Colin Watson ] - * Use 'chown 0:0' in all scripts rather than deprecated 'chown 0.0' - (thanks, Evan Klitzke). - * Add (Ubuntu) intrepid as a symlink to gutsy. - - -- Colin Watson Tue, 29 Apr 2008 19:36:19 +0100 - -debootstrap (1.0.8) unstable; urgency=low - - [ Frans Pop ] - * Change Priority for the udeb to extra in line with overrides file. - - [ Colin Watson ] - * Partially revert r50134; there are people who depend on being able to - use the "upstream" Makefile on non-Debian systems. Create necessary - directories in the Makefile rather than relying on dh_installdirs to do - it (LP: #172645). - * Use ftp.us.debian.org rather than ftp.debian.org - (http://lists.debian.org/debian-devel-announce/2007/12/msg00002.html). - - [ Anthony Towns ] - * Add minbase variant for the sid script that only install apt (and - its dependencies) instead of all of base. (Closes: Bug#351912, - Bug#452654) - * Make --second-stage not bother recalculating required and base as - it's not needed. - * Make --arch and other arguments accept both "--arch i386" and - "--arch=i386" forms of specifying a parameter to avoid the - inconsistency. - - [ Stephen R. Marenka ] - * Allow installation of etch-m68k. (Closes: Bug#458965) - - [ Colin Watson ] - * Add minbase variant for Ubuntu gutsy/hardy; see Anthony's change above. - * Minor manual page formatting improvements. - - -- Colin Watson Tue, 15 Jan 2008 11:19:34 +0000 - -debootstrap (1.0.7) unstable; urgency=low - - * No longer include full devices tarball in udeb. - * Also try 'udpkg --print-architecture' when determining the target - architecture. - * Utility pkgdetails moved from debootstrap-udeb to bootstrap-base so that - the udeb can become 'Architecture: all'. - * Change /usr/lib/debootstrap to /usr/share/debootstrap. Closes: #430615. - * Use tab indentation in debootstrap and functions saving 3kB (relevant for - Debian Installer). - * Fix various inconsistencies in build scripts. - * Fix dpkg-genchanges warning 'missing Priority for source files'. - * Update Standards-Version to 3.7.2. No changes needed. - * Changes in udeb require base-installer 1.85. - - -- Frans Pop Wed, 14 Nov 2007 12:15:45 +0100 - -debootstrap (1.0.6) unstable; urgency=low - - * Ensure that the target directory exists in check_sane_mount. - * Don't ignore 'make clean' errors. (The Makefile is always present.) - - -- Colin Watson Sun, 21 Oct 2007 10:50:59 +0100 - -debootstrap (1.0.5) unstable; urgency=low - - [ Colin Watson ] - * Don't rely on GNU sed's s///I extension (closes: #350583). - - [ Joey Hess ] - * Skip the noexec/nodev test when running --print-debs or other operations - that do not involve building systems. - - -- Joey Hess Sat, 20 Oct 2007 23:10:34 -0400 - -debootstrap (1.0.4) unstable; urgency=low - - [ Neil Williams ] - * Add --second-stage-target option that allows embedded to test for - installations in a chroot on the device (closes: #445157). - - [ Colin Watson ] - * Add (Ubuntu) hardy as a symlink to gutsy. - * Unmount /lib/init/rw on exit (closes: #391604). - * Cope if uncompressed Packages is missing from Release (closes: #402380). - * Don't rely on XSI test(1) extensions. - * Add support for ssh:/// URLs (thanks, Steffen Joeris; closes: #434893). - * Fix Ubuntu hoary and breezy scripts to unmount /dev etc. on exit - (closes: #327708). - * Emit an error if we cannot create working devices or executables on the - target (based on work by Bastian Kleineidam; closes: #233798). - - -- Colin Watson Fri, 19 Oct 2007 14:57:37 +0100 - -debootstrap (1.0.3) unstable; urgency=low - - * Ignore errors when unmounting filesystems, to avoid stopping at the - first one with problems. - - -- Colin Watson Tue, 21 Aug 2007 12:32:37 +0100 - -debootstrap (1.0.2) unstable; urgency=low - - [ Joey Hess ] - * Document --components in man page. - * Update man page, as packages listed in --include should now be auto - dep-resolved by default. - - [ Colin Watson ] - * Extensive quoting fixes, allowing installation to a target containing - spaces (closes: #387673). - * scripts/debian/sid: Handle libc0.3 on hurd-i386 (thanks, Michael Banck; - closes: #314304). - * functions: Stub out /proc setup and add device setup for the Hurd - (thanks, Michael Banck; closes: #314311). - * Add --version option (closes: #294484). - - [ Otavio Salvador ] - * Fix bunzip2 path. Thanks Martín Ferrari by - the patch (closes: #436218). - - -- Otavio Salvador Tue, 07 Aug 2007 20:12:55 -0300 - -debootstrap (1.0.1) unstable; urgency=low - - * scripts/ubuntu/gutsy: Determine buildd variant dynamically using - Build-Essential: yes. - * scripts/ubuntu/gutsy.fakechroot: Remove devmapper postinst hack, no - longer needed. - * scripts/ubuntu/*.fakechroot: Merge into the corresponding main scripts - as variants. - - -- Colin Watson Fri, 20 Jul 2007 11:55:22 +0100 - -debootstrap (1.0.0) unstable; urgency=low - - [ Anthony Towns ] - * Make debootstrap team maintained under the d-i banner. - * Add Joey, Frans and Junichi as uploaders, remove JHM (not in the - d-i group). - * Make pkgdetails.c not need C99 extensions. (Closes: Bug#398977) - * Fix am_doing_phase implementation in debootstrap script. Thanks to - Tero Janka for spotting the problem and the fix. (Closes: Bug#409881) - - [ Joey Hess ] - * Drop support for sarge from the udeb. - * Update README.Debian: - - One todo item is done. (I think cross-strap is too, but unsure.) - - Reword NMU policy to note that it's team-maintained now. - * ACK my prior NMU. Closes: #418600 - * If /dev/MAKEDEV DNE, as on certain s390 machines, use /sbin/MAKEDEV. - Closes: #420908 - Note that /dev/MAKEDEV is still the correct location, and is still tried - first so that building works on all FHS systems, as noted in #190239. - - [ Colin Watson ] - * Add support for Ubuntu dapper (Closes: #342838), edgy, feisty, and - gutsy. Exclude everything but gutsy from the udeb. - * Fix "deboostrap" typo in debootstrap(8) (thanks, Adam Conrad). - * Fix "htp" typo in temporary /etc/apt/sources.list. - * Drop support for woody from the udeb too. - * When removing $TARGET/debootstrap, debootstrap.log is still open as - stdout/stderr and needs to remain so, but after unlinking it some NFS - servers implement this by a temporary file in the same directory, which - makes it impossible to rmdir that directory. Moving it instead works - around the problem (thanks, Steven McCoy; - https://launchpad.net/bugs/65003). - * Fix formatting error in debootstrap(8) (.R is not a macro). - * Reorganise scripts into scripts/debian/ and scripts/ubuntu/ directories - in the source tree to declutter the top level. - * Add default_mirror function; reorganise the debootstrap script a little - so that it works. Set the default mirror for Ubuntu suites to - http://archive.ubuntu.com/ubuntu, and the default mirror for Debian - etch/lenny/sid architectures other than amd64 and i386 to - http://ftp.us.debian.org/debian (per ajt; see bug #363049). - * Add devices created by fd to devices-std.tar.gz, so that - /dev/std{in,out,err} is available conveniently in chroots with /proc and - /dev/pts mounted (thanks, Matthias Klose). - * Document --keyring and --make-tarball. (Closes: #368988) - * Update Ubuntu mirrors: warty/hoary/breezy => old-releases.ubuntu.com, - unsupported architectures => ports.ubuntu.com. - * Add myself to Uploaders. - * Bump to 1.0.0. Nobody uses debootstrap in production, do they? - - [ Joey Hess ] - * Remove the extended package description (aka bloat) from the udeb. - - -- Colin Watson Sat, 23 Jun 2007 02:19:27 +0100 - -debootstrap (0.3.3.3) unstable; urgency=low - - * NMU - * Add support for lenny. - - -- Joey Hess Tue, 10 Apr 2007 15:24:15 -0400 - -debootstrap (0.3.3.2) unstable; urgency=low - - * NMU with maintainer approval - * Remove --force-auto-select option for 'sid' script as it is no longer - supported by dpkg. Closes: #409527. - - -- Frans Pop Fri, 16 Feb 2007 20:43:36 +0100 - -debootstrap (0.3.3.1) unstable; urgency=low - - * NMU with maintainer approval - * functions/get_debs: build list of available packages from all specified - sources; this allows debootstrap to also use e.g. custom versions of base - packages from a source of local packages included on an installation CD. - Closes: #398762. - - -- Frans Pop Thu, 16 Nov 2006 05:30:43 +0100 - -debootstrap (0.3.3) unstable; urgency=low - - * Include kFreeBSD and fakechroot support from 0.3.2.1 and 0.3.2.2 NMUs, - thanks to Otavio Salvador and Piotr Roszatycki. (Closes: Bug#319100, - Bug#328446, Bug#204652, Bug#315044, Bug#Bug#319799) - - * Require target to be specified in all cases; document usage of target - for --print-debs. (Closes: Bug#335922, Bug#337230) - - * Use ln -sf when symlinking awk for woody and sarge. (Closes: Bug#299048) - - -- Anthony Towns Sun, 6 Nov 2005 04:12:39 +1000 - -debootstrap (0.3.2.2) unstable; urgency=low - - * NMU - * Added relicensed fakechroot variant. Closes: #204652. - - -- Piotr Roszatycki Sat, 29 Oct 2005 11:29:00 +0200 - -debootstrap (0.3.2.1) unstable; urgency=low - - * NMU with maintainer approval - * Applied patch from Robert Millan to add support to - Debian GNU/kFreeBSD. Closes: #319799 - - -- Otavio Salvador Fri, 28 Oct 2005 16:14:57 -0200 - -debootstrap (0.3.2) unstable; urgency=low - - * Revert fakechroot NMUs (0.3.1.1, 0.3.1.3, 0.3.1.7) due to incompatible - license requirements (GPL) (Reopens: Bug#204652) - - * Changes from 0.3.1.2 NMU, thanks to Joey Hess: (Closes: Bug#314810) - + Fix incorrect use of "$@" in local. Closes: #314157, #314547 - + Fix fd redirection in download progress code. See #314373 - + Remove md5sums file from udeb. Closes: #314378 - + Fix debian-installer mode warning code. Closes: #314340 - - * Changes from 0.3.1.4 NMU, thanks to Joey Hess: - + Wrap eval statement in exit_function in parens, working around - bug #315444 in busybox sh. Closes: #314373 - - * Changes from 0.3.1.5 NMU, thanks to Anibal Monsalve Salazar: - + Fixed "--variant=buildd option does not work" for pbuilder, - closes: #314858. Patch by Matt Kraai . - - * Changes from 0.3.1.6 NMU, thanks to Joey Hess: - + Patch from Colin to redirect status messages to stderr when running - --print-debs. Closes: #315875 - + Restore logging to stderr in debian-installer mode. Closes: #314160 - - * Changes from 0.3.1.8 NMU, thanks to Petter Reinholdtsen: - + [functions] Mount /sys if it exist and is supported by the kernel. - Patch from Cajus Pollmeier, Colin Watson and Ubuntu. (Closes: #289105) - + [debootstrap] Document --resolve-deps in usage info. (Closes: #328161) - + [etch] Replace libsigc++-1.2-5c102 with libsigc++-1.2-5c2. (Closes: #334506) - + [etch] Remove pppoe from base, and only install - ipchains on m68k. Patch from Sven Luther. (Closes: #239390) - + [sarge] Remove duplicate entries for m68k and amd64. Patch from - Frans Pop. (Workaround for bug #319777) - + [etch] Add support for ppc64. The patch for 'sid' did no longer - apply. Patch from Andreas Jochens. (Closes: #313353) - + [sarge,etch,sid] Set DEBCONF_NONINTERACTIVE_SEEN=true during build, to - avoid questions during upgrade. (Closes: #238301) - + Add script for breezy. Patch from Colin Watson. (Closes: #315940) - - * Changes from 0.3.1.9 NMU, thanks to Joey Hess: - + Replace the etch script with a copy of the sid script, which pulls in - gnupg, so the installed etch system has a usable apt. Closes: #334521 - - * Create /dev/ptmx in minimal devices tarball. (Closes: Bug#317072) - - * Don't create empty available files, since old dpkg and new kernels can't - deal with them. (Closes: Bug#308169, Bug#329468) - - * Bump Standards-Version. Bump debhelper compatability level to 4. - * Cleanup debian/rules, thanks to Joey Hess. (Closes: Bug#314863) - - * Emit error message if no pkgdetails is available. (Closes: Bug#326831) - - * Turn on --resolve-deps by default. Add --no-resolve-deps as an option. - Combined with the previous changes to make the etch script dynamically - determine base, this should resolve all the "can't install " - bugs. (Closes: Bug#280210, Bug#308361, Bug#318281, Bug#323362, - Bug#318254, Bug#313292, Bug#334683, Bug#248578, Bug#289635) - - * md5sum doesn't exist when coreutils is unpacked but not configured; - cp it across so it's available for --second-stage. (Closes: Bug#329394) - - * Catch failures in "dpkg --status-fd" (Closes: Bug#317447, Bug#323661) - - * Make "without" work right for duplicates (Closes: Bug#316884, - Bug#319777) - - * Simplify and correct file descriptor handling and debootstrap.log - behaviour. - - * Delete $TARGET with --print-debs and --make-tarball. (Closes: Bug#328369) - - * Add a --make-tarball option. (Closes: Bug#152845) - - * Create a default sources.list for apt. (Closes: Bug#283234, Bug#315225) - - * Update manpage to talk about woody instead of sarge. (Closes: Bug#315862) - - * Use partial/ directory when downloading. (Closes: Bug#109176) - - -- Anthony Towns Sun, 23 Oct 2005 14:49:08 +1000 - -debootstrap (0.3.1) unstable; urgency=low - - * sid script updated: - - Determine base dynamically (Priority: required for required packages, - Priority: important for base packages, Build-Essential: yes for buildd - variant base). (Closes: Bug#88984, Bug#193134) - - Use fine grained dpkg progress display, thanks again to Colin Watson. - (Closes: Bug#229314, Bug#231109, Bug#244563) - - * dpkg output (etc) goes to /var/log/bootstrap.log in the target, rather - than stdout. This is probably difficult for frontends to capture - at present. - - * Parsing of Packages file sped up. (Yay!) - - * debootstrap.deb now arch: all (Closes: Bug#122465, Bug#131552) - - perl implementation of pkgdetails used by preference - - devices.tar.gz reduced to minimal set of devices; frontends should - setup udev or supply their own devices or similar in future - - /usr/lib/debootstrap/arch not shipped - - none of the above applies to udebs yet; though the devices.tar.gz - change will eventually - - * Support for verifying based on Release.gpg files (--keyring). Thanks - to Colin Watson. (Closes: Bug#313383) - - -- Anthony Towns Tue, 14 Jun 2005 00:22:55 +1000 - -debootstrap (0.3.0) unstable; urgency=low - - * The Gernot Heiser release, dedicated to everyone who drinks enough to - lose their better judgement, and those of us who didn't have any in - the first place. - - * Major update. New features: - + Use $TARGET/debootstrap directory for state info - (--keep-debootstrap-dir) - + Support for cross-strapping (--foreign / --second-stage) - (Closes: Bug#202529) - + Support for resolving dependencies (--resolve-deps) - + Support for Debian etch, and Ubuntu warty and hoary (Closes: Bug#312417) - + Support for handling variants within the main suite script - + Support for other versions of base packages in /v/c/apt/archives - + Initial support for fine-grained dpkg progress display, thanks to - Colin Watson (currently only for warty and hoary) - + Initial support for determining base system dynamically. - + No longer display "debootstrap.invalid" when working with - Release/Packages files. (Closes: Bug#241795, Bug#256255) - + Ignores failures for on_exit cleanup commands. (Closes: Bug#253387, - Bug#253468, Bug#308774) - + Early reporting of unavailable packages. - + More efficient parsing of Packages files. - + Generalised additions and exclusions. (Closes: Bug#191793) - + Handles symlinked configuration files in /etc a little better. - (Closes: Bug#161987, Bug#252907, Bug#272257) - - * Dropped support for slink. - - * Use ln -fs for mawk/awk link. (Closes: Bug#248398, Bug#258524) - - * Dropped mail-transport-agent, and hence mailx and at from sid/etch base. - (Closes: Bug#168473) - * Dropped ipchains for i386 (Closes: Bug#266119) - * Other minor changes to meet dependencies, also. (Closes: Bug#312701) - - * Minor manpage fixes. (Closes: Bug#285777) - * Add check for specifying no components (CloseS: Bug#283810) - - * Include 0.2.45 NMUs, thanks to Steve Langasek. - (Closes: Bug#295571, Bug#283752, Bug#278158) - - -- Anthony Towns Sun, 12 Jun 2005 23:49:58 +1000 - -debootstrap (0.2.45-0.2) unstable; urgency=low - - * Non-maintainer upload. - * [sarge, sid] Replace libparted1.6-0 with libparted1.6-12 for ia64, - to keep up with the ABI changes for that package. (Closes: #295571) - * [sarge, sid] include pciutils on hppa as well, per request of the - hppa folks. (Closes: #283752) - - -- Steve Langasek Fri, 25 Feb 2005 22:23:30 -0800 - -debootstrap (0.2.45-0.1) unstable; urgency=low - - * Non-maintainer upload. - * [sarge, sid] Drop libgnutls10 and libgcrypt7, since they are no - longer needed by exim4. (Closes: #278158). - - -- Steve Langasek Thu, 20 Jan 2005 21:20:22 -0800 - -debootstrap (0.2.45) unstable; urgency=high - - * Acknowledge NMUs. (Closes: #270135) - * [woody.buildd] Corrected ia64 special cases. Patch by Brett Johnson - . (Closes: #271894) - - -- J.H.M. Dassen (Ray) Sat, 18 Sep 2004 13:49:23 +0200 - -debootstrap (0.2.44.2) unstable; urgency=low - - * NMU again, this time using the makedev in unstable instead of the - experimental so devices.tar.gz isn't empty on ia64... oops... /o\ - - -- Bdale Garbee Tue, 14 Sep 2004 20:03:56 -0600 - -debootstrap (0.2.44.1) unstable; urgency=low - - * NMU to resolve d-i inability to install sid on ia64 - * add pciutils to the base package list for ia64, to avoid having to regress - efibootmgr in unstable, closes: #270315, #268490 - - -- Bdale Garbee Mon, 13 Sep 2004 15:11:11 -0500 - -debootstrap (0.2.44) unstable; urgency=high - - * [sarge] Removed "gcc-3.0-base" and "libstdc++3" for HPPA as they have been - removed from sarge as well on that arch. (Closes: #268917) - - -- J.H.M. Dassen (Ray) Mon, 30 Aug 2004 08:53:30 +0200 - -debootstrap (0.2.43) unstable; urgency=high - - * [sarge] Added back libgnutls10 in order not to break d-i testing. - (Closes: #268578, #268663). - - -- J.H.M. Dassen (Ray) Sun, 29 Aug 2004 09:08:48 +0200 - -debootstrap (0.2.42) unstable; urgency=high - - * Acknowledge NMUs. (Closes: #262137, #262165, #262178, #262375) - * [sarge] Switch to libgnutls11 so exim4 can switch. (Closes: #268325) - * [sid] Removed "gcc-3.0-base" and "libstdc++3" for HPPA as they have been - removed from sid. (Closes: #268049) - * [Makefile] Make the regular video devices on all archs. (Closes: #265081) - * [Makefile,debootstrap] Switched away from deprecated chown syntax; - switched away from XSIisms '-a' and '-o'. (Closes: #256098) - * [debootstrap.8] Use '\-' rather than '-' in options. (Closes: #263955) - Confirmed that the "exlude" typo has already been fixed. (Closes: #254108) - Applied patch by Javier Fernández-Sanguino Peña - for "file" URL documentation and a more complete example. (Closes: #226662) - - -- J.H.M. Dassen (Ray) Fri, 27 Aug 2004 15:40:02 +0200 - -debootstrap (0.2.41-0.2) unstable; urgency=low - - * Non-maintainer upload - * [sarge, sid] Add missing libgcrypt11 to base, needed by libgnutls11 - in sid and needed in sarge for opencdk8 to be rebuilt against it - (closes: #262375, #262178). - - -- Steve Langasek Fri, 30 Jul 2004 20:26:57 -0700 - -debootstrap (0.2.41-0.1) unstable; urgency=low - - * Non-maintainer upload with consent of JHM. - * Pull libfribidi0 back out of base, it's opportunistically installed - by d-i now for the locales that need it (closes: #262137). - * Re-add bootloaders on ia64, sparc, mips, hppa, and m68k to base, - because debian-installer isn't ready for this change (closes: #262165). - - -- Steve Langasek Thu, 29 Jul 2004 14:14:33 -0700 - -debootstrap (0.2.41) unstable; urgency=high - - * High urgency upload as per tbm's request. - * [sarge, sid] No longer install setserial, as it causes problems on some - systems (e.g. #212646) and there is a consensus it is no longer needed in - a base environment. - * [sarge, sid] Removed aboot, aboot-base, elilo, efibootmgr, silo, dvhtool, - delo, palo, vmelilo. As per the consensus reached in the thread starting - with http://lists.debian.org/debian-boot/2004/04/msg00634.html, the - installation of boot loaders is now debian-installer's responsibility. - (Closes: #247906) - * [sarge, sid] Added libfribidi0 to base to make debconf localisation into - right to left languages possible. (Closes: #253229) - * [sarge.buildd] Drop libdb4.0 for libdb4.2 as needed by perl. - * [sid] Added libgnutls11 as libgnutls10 is being phased out. - * [Makefile] Include /dev/ida on ia64. (Closes: #258055) - - -- J.H.M. Dassen (Ray) Thu, 29 Jul 2004 20:37:37 +0200 - -debootstrap (0.2.40) unstable; urgency=medium - - * [woody.buildd] Ensure the on_exit umounting of /dev/pts doesn't mess up - an otherwise OK exit status. (Closes: #260699) - * Acknowledge NMUs. (Closes: #258350, #260253) - - -- J.H.M. Dassen (Ray) Thu, 22 Jul 2004 21:53:20 +0200 - -debootstrap (0.2.39.2) unstable; urgency=low - - * Non-maintainer upload. - * [sarge, sid] Drop quik from powerpc, as debian-installer handles this - now (closes: #260253). - - -- Colin Watson Thu, 22 Jul 2004 16:56:19 +0100 - -debootstrap (0.2.39.1) unstable; urgency=low - - * NMU - * add passwd to sid.buildd,sarge.buildd as bash depends on them - - -- Junichi Uekawa Fri, 9 Jul 2004 09:07:28 +0900 - -debootstrap (0.2.39) unstable; urgency=medium - - * [sarge,sid] Dropped libdb2. Thanks Matt Zimmerman. (Closes: #250813) - * [sarge,sid] Dropped libident. Thanks LaMont Jones. (Closes: #251320) - * [sarge,sid] Dropped slang1. Thanks LaMont Jones. (Closes: #251328) - * [woody.buildd] Install libperl5.6. Thanks Rene Engelhard. (Closes: #251702) - * [sarge.buildd] Install libc6.1 rather than libc6 on alpha. Thanks Rene - Engelhard. (Closes: #251703) - - Goswin von Brederlow - * Copy script for sarge to sid - * Add handling for amd64 to sarge/sid scripts - * Dropped gcc-3.2-base. (Closes: #250836) - - -- J.H.M. Dassen (Ray) Sat, 5 Jun 2004 10:02:50 +0200 - -debootstrap (0.2.38.1) unstable; urgency=low - - * NMU. - * [sarge] Add libdb4.2 since apt-utils (0.5.25) depends on this. - - -- Otavio Salvador Thu, 20 May 2004 22:18:41 -0300 - -debootstrap (0.2.38) unstable; urgency=medium - - * [woody.buildd] Readd libgdbmg1 (for perl-modules). - - -- J.H.M. Dassen (Ray) Fri, 7 May 2004 10:55:13 +0200 - -debootstrap (0.2.37) unstable; urgency=medium - - * [debian/control] Bumped makedev build dependency so as not to get pty - permissions problems. (Closes: #246709) - * [sid, sid.buildd] Add/switch to libdb4.2 for the new perl packages. - * Acknowledge NMU 0.2.36.1. (Closes: #246368) - - -- J.H.M. Dassen (Ray) Tue, 4 May 2004 07:58:02 +0200 - -debootstrap (0.2.36.1) unstable; urgency=low - - * Non-maintainer upload with maintainer permission. - * [sarge, sid] Drop yaboot from powerpc, as debian-installer handles this - now (closes: #246368). - - -- Colin Watson Fri, 30 Apr 2004 00:05:02 +0100 - -debootstrap (0.2.36) unstable; urgency=high - - Joey Hess : - * [sid, sarge] Add a subst_package function, and use it to replace libc6 - with libc6.1 on alpha and ia64, to avoid reordering libc in the required - list and work around bug #238963. (Closes: #245680) - - -- J.H.M. Dassen (Ray) Sun, 25 Apr 2004 18:37:42 +0200 - -debootstrap (0.2.35) unstable; urgency=high - - * [sarge, sid] Dropped syslinux. (Closes: #205379) - * [woody, woody.buildd] Removed libgdbmg1. (Closes: #244447) - * [debootstrap, functions] Sync at the end of debootstrap. (Closes: #225742) - - -- J.H.M. Dassen (Ray) Thu, 22 Apr 2004 16:51:49 +0200 - -debootstrap (0.2.34) unstable; urgency=high - - * [sid] Dropped libpci1 and libpci2 as the pciutils dependency change has - been reverted. (Closes: #244344) - - -- J.H.M. Dassen (Ray) Thu, 22 Apr 2004 08:14:28 +0200 - -debootstrap (0.2.33) unstable; urgency=high - - * [sid] Added libpci1 and libpci2 for all archs where pciutils is installed, - as pciutils now depends on them. (Closes: #244344) - - -- J.H.M. Dassen (Ray) Sun, 18 Apr 2004 09:41:23 +0200 - -debootstrap (0.2.32) unstable; urgency=high - - * [sarge, sid] No longer try to filter out console-tools on s390. While - console-tools is basically useless on s390, base-config depends on it. - (Closes: #241727) - - -- J.H.M. Dassen (Ray) Fri, 9 Apr 2004 16:26:23 +0200 - -debootstrap (0.2.31) unstable; urgency=medium - - * [sarge] Exim has changed GnuTLS dependencies. Added libgnutls10, - libgcrypt7, libgpg-error0, libopencdk8, libtasn1-2; dropped libgnutls7, - libgcrypt1, libtasn1-0. - * [sarge] Removed libgnutls7, libgcrypt1, libtasn1-0. - - -- J.H.M. Dassen (Ray) Tue, 23 Mar 2004 22:47:28 +0100 - -debootstrap (0.2.30) unstable; urgency=medium - - * [sarge, sid] aboot needs aboot-base. (Closes: #236368, #239302) - - -- J.H.M. Dassen (Ray) Mon, 22 Mar 2004 21:10:31 +0100 - -debootstrap (0.2.29) unstable; urgency=low - - * NMU with permission of maintainer. - * Added {woody,sarge,sid}.buildd scripts to create build chroots. - Closes: #236418. - * Added --variant=buildd option for convenient access to these scripts. - - -- Daniel Schepler Wed, 10 Mar 2004 02:29:27 -0800 - -debootstrap (0.2.28) unstable; urgency=medium - - * [sid] Exim has changed GnuTLS dependencies. Added libgnutls10, libgcrypt7, - libgpg-error0, libopencdk8, libtasn1-2; dropped libgnutls7, libgcrypt1, - libtasn1-0. - * [sarge,sid] Dropped lilo, mbr, modconf, libdevmapper1.00 as - debian-installer handles the bootloader installation and modules - configuration. (Closes: #232667, #232672, #232673) - - -- J.H.M. Dassen (Ray) Tue, 24 Feb 2004 09:57:35 +0100 - -debootstrap (0.2.27) unstable; urgency=medium - - * [sarge] Lilo now needs libdevmapper1.00; Removed libopencdk8, libgcrypt7, - libgpg-error0. - - -- J.H.M. Dassen (Ray) Sat, 14 Feb 2004 01:19:48 +0100 - -debootstrap (0.2.26) unstable; urgency=medium - - * [sarge] Removed gcc-3.2-base. (Closes: #230697) - * [sid] Lilo now needs libdevmapper1.00 . - - -- J.H.M. Dassen (Ray) Tue, 3 Feb 2004 08:27:54 +0100 - -debootstrap (0.2.25) unstable; urgency=high - - * [functions] Unmount proc/bus/usb, not proc/usb. (Closes: #229122) - - -- J.H.M. Dassen (Ray) Fri, 30 Jan 2004 18:01:29 +0100 - -debootstrap (0.2.24) unstable; urgency=high - - * [functions, sarge, sid] Try to unmount proc/usb, dev/shm, dev/pts on exit; - don't fail when there's nothing to unmount. - (Closes: #229122, #229901, #229907) - * [woody] Don't fail when there's no dev/pts to unmount. - * [sarge, sid] Don't install pcmcia-cs as debian-installer takes care of - that where needed. (Closes: #221907) - * [sid] Removed libopencdk8, libgcrypt7, libgpg-error0. - * [sarge] libopencdk8 (needed for exim4-daemon-light via libgnutls7) - Depends: libgcrypt7, libgpg-error0. (Closes: #229989) - - -- J.H.M. Dassen (Ray) Wed, 28 Jan 2004 18:48:02 +0100 - -debootstrap (0.2.23) unstable; urgency=high - - * [sarge] Dropped libopencdk4 in favour of libopencdk8 as gnutls has switched. - - -- J.H.M. Dassen (Ray) Thu, 1 Jan 2004 01:30:02 +0100 - -debootstrap (0.2.22) unstable; urgency=high - - * [sid] libopencdk8 Depends: libgcrypt7, libgpg-error0. - - -- J.H.M. Dassen (Ray) Wed, 31 Dec 2003 12:35:03 +0100 - -debootstrap (0.2.21) unstable; urgency=high - - * [sarge] Added coreutils' new predependencies libacl1 and libattr1; removed - libsasl2 as it is no longer needed. - - -- J.H.M. Dassen (Ray) Sun, 28 Dec 2003 22:54:08 +0100 - -debootstrap (0.2.20) unstable; urgency=high - - * [sarge] base-config now Depends: aptitude; aptitude Depends: - libsigc++-1.2-5c102. - - -- J.H.M. Dassen (Ray) Sun, 28 Dec 2003 15:11:31 +0100 - -debootstrap (0.2.19) unstable; urgency=high - - * [sid] base-config now Depends: aptitude; aptitude Depends: - libsigc++-1.2-5c102. - - -- J.H.M. Dassen (Ray) Wed, 24 Dec 2003 09:03:44 +0100 - -debootstrap (0.2.18) unstable; urgency=low - - * Thanks to Steinar Gunderson and Matt Kraii for the NMU fixing some - d-i related problems. (Closes: Bug#220150) - * Acknowledge that the problems really are fixed now. (Closes: - Bug#213669, Bug#209273, Bug#210912) - - * Fix downloading of Packages files to retry if bz2 or gz isn't available - on the mirror. (Closes: Bug#194592) - - -- Anthony Towns Sat, 15 Nov 2003 00:13:13 +1000 - -debootstrap (0.2.17.1) unstable; urgency=high - - * NMU - * [sarge,sid] Display only the package name when retrieving packages. - (Closes: #213669, #209273) - * [sarge,sid] Added progress information for downloading package - details. (Closes: #210912) - - -- Steinar H. Gunderson Mon, 10 Nov 2003 15:11:09 +0100 - -debootstrap (0.2.17) unstable; urgency=high - - * [sarge] Fixed typo: libreadlin4 -> libreadline4. (Closes: #219655) - - -- J.H.M. Dassen (Ray) Sat, 8 Nov 2003 23:23:37 +0100 - -debootstrap (0.2.16) unstable; urgency=high - - * [sarge,sid] libreadline4 is required for amiga-fdisk on powerpc. - (Closes: #218533) - * [sarge,sid] Put libreadline4 in required rather than base for ia64. - - -- J.H.M. Dassen (Ray) Wed, 5 Nov 2003 08:09:41 +0100 - -debootstrap (0.2.15) unstable; urgency=high - - * ia64 fixes by Richard Hirst : (Closes: #218533) - * [sarge, sid] Add libreadline4 to base for ia64 as parted needs it. - * [sarge, sid] Remove gcc-2.96-base from required for ia64. - - -- J.H.M. Dassen (Ray) Sat, 1 Nov 2003 12:58:34 +0100 - -debootstrap (0.2.14) unstable; urgency=high - - * [sarge] Made exim4 the default MTA. (Closes: #217657) - * [sarge] Removed libstdc++2.10-glibc2.2, libldap2 . - * [sid] Dropped libopencdk4 in favour of libopencdk8 as gnutls has switched. - - -- J.H.M. Dassen (Ray) Tue, 28 Oct 2003 09:56:27 +0100 - -debootstrap (0.2.13) unstable; urgency=high - - * [sarge] Added libtextwrap1 for tasksel. - - -- J.H.M. Dassen (Ray) Wed, 22 Oct 2003 08:10:37 +0200 - -debootstrap (0.2.12) unstable; urgency=high - - * [sarge, sid] Add libreadline4 to required for m68k as amiga-fdisk needs - it. (Closes: #216617) - - -- J.H.M. Dassen (Ray) Mon, 20 Oct 2003 10:05:09 +0200 - -debootstrap (0.2.11) unstable; urgency=high - - * [sid] Added libc6-sparc64 lib64gcc1 lib64ncurses5 to base for sparc. - (Closes: #215590) - * [sarge, sid] Dropped libreadline as bash no longer depends on it. - * [sid] Dropped libstdc++2.10-glibc2.2 and its associated special cases as - it is no longer needed. - - -- J.H.M. Dassen (Ray) Wed, 15 Oct 2003 19:42:58 +0200 - -debootstrap (0.2.10) unstable; urgency=high - - * [sid] Fixed /usr/sbin/sendmail symlink to point to exim4. (Closes: #213734) - - -- J.H.M. Dassen (Ray) Sat, 4 Oct 2003 15:47:31 +0200 - -debootstrap (0.2.9) unstable; urgency=high - - * [sarge] Added libgdbm3 for man-db. - - -- J.H.M. Dassen (Ray) Thu, 2 Oct 2003 23:57:09 +0200 - -debootstrap (0.2.8) unstable; urgency=high - - * [sid] Added libtextwrap1 for tasksel; removed libsasl2 as it is no longer - needed. - - -- J.H.M. Dassen (Ray) Thu, 2 Oct 2003 07:57:16 +0200 - -debootstrap (0.2.7) unstable; urgency=high (fixes RC d-i bug) - - * [sarge] Reinstated special-case for libperl5.8; it is still needed for - non-i386 until sarge has perl >= 5.8.0-20. (Closes: #213280) - * [debian/control] Updated Standards-Version; fixed removal of slink and - potato scripts from udeb. - * [debian/control] Updated priorities; debootstrap-udeb is required (for - debian-installer). - * [debian/rules] Fixed dpkg-distaddfile accordingly. - - -- J.H.M. Dassen (Ray) Tue, 30 Sep 2003 14:31:57 +0200 - -debootstrap (0.2.6) unstable; urgency=low - - * [sarge] Added e2fslibs, libcomerr2, libss2, libuuid1 for e2fsprogs. - - -- J.H.M. Dassen (Ray) Fri, 26 Sep 2003 13:50:58 +0200 - -debootstrap (0.2.5) unstable; urgency=low - - * [sid] Added libgdbm3 for man-db. - * [sarge, sid] Dropped special-case for libperl5.8 (Closes: #210425). - * [sid] Make exim4 the default MTA as it is configured through debconf. - (Closes: #208047) - * [sid] Removed libldap2 which is no longer needed. - - -- J.H.M. Dassen (Ray) Sun, 21 Sep 2003 13:30:49 +0200 - -debootstrap (0.2.4) unstable; urgency=low - - * [sid] Added coreutils' new predependencies libacl1 and libattr1. - * [debian/README.Debian] Corrected example invocation. (Closes: #206142) - * [debian/README.Debian] Fixed a typo. - - -- J.H.M. Dassen (Ray) Wed, 20 Aug 2003 10:28:49 +0200 - -debootstrap (0.2.3) unstable; urgency=low - - * [sarge] Add new dependencies of debconf: debconf-i18n - liblocale-gettext-perl libtext-wrapi18n-perl libtext-charwidth-perl. - * Acknowledge NMU. (Closes: #203370) - - -- J.H.M. Dassen (Ray) Sat, 16 Aug 2003 20:15:40 +0200 - -debootstrap (0.2.2-0.1) unstable; urgency=low - - * NMU. - * Fix typo in woody script. (Closes: #203370) - - -- Petter Reinholdtsen Tue, 29 Jul 2003 20:29:01 +0200 - -debootstrap (0.2.2) unstable; urgency=low - - * [debian/changelog] Included entries for NMUs 0.1.17.31 through .34 whose - changes were incorporated by aj already. - * [Makefile] Invoke MAKEDEV through its FHS location (noted by Matt - Zimmerman). (Closes: #190239) - * Acknowledge older NMUs whose changes have been incoporated. - (Closes: #135675, #161695, #191849) - - -- J.H.M. Dassen (Ray) Tue, 29 Jul 2003 18:31:49 +0200 - -debootstrap (0.2.1) unstable; urgency=low - - * The Day of the Daffodils release. - - * Accept NMUs up to 0.1.17.30. Thanks guys! (Closes: Bug#148377, - Bug#150161, Bug#150492, Bug#153962, Bug#154463, Bug#155906, - Bug#160879, Bug#161469, Bug#161469, Bug#161722, Bug#163860, - Bug#172118, Bug#176221, Bug#179504, Bug#179725, Bug#185397, - Bug#187893, Bug#188053, Bug#189472, Bug#189551, Bug#190108, - Bug#191288, Bug#193794, Bug#193806, Bug#195012, Bug#195742, - Bug#199333, Bug#201066) - * JHM added to Uploaders. - - * Change the info/error/warning/progress calls to include a unique word - for each string, a printf format string, and any arguments to the - printf string. - * Add support for debian-installer interaction - - * Add some support for l10n. Gettext is used if it's available; no - translations are included as of yet. This support doesn't - affect debian-installer, which has its own stuff for i18n, nor - boot-floppies. (Closes: Bug#125647) - - * Some initial support for cross-bootstrapping in the sid script. - - * Use dpkg --print-installation-architecture instead of - --print-architecture. (Closes: Bug#138526, Bug#159720) - - * Add new dependencies of debconf: debconf-i18n liblocale-gettext-perl - libtext-wrapi18n-perl libtext-charwidth-perl. (Closes: Bug#201066) - * Add new dependencies of libldap2: libgnutls7 libgcrypt1 liblzo1 - libopencdk4 libtasn1-0 zlib1g. (Closes: Bug#201663) - * Remove libgdbmg1. (Closes: Bug#202304) - * Add new dependecies of e2fsprogs: e2fslibs libcomerr2 libss2 libuuid1. - (Closes: Bug#203033) - * Add wget to base. (Closes: Bug#145635) - * Switch from netkit-ping to iputils-ping. - - * Changed the manpage a little. (Closes: Bug#126864) - * Updated README.Debian. - - -- Anthony Towns Tue, 29 Jul 2003 18:15:24 +1000 - -debootstrap (0.1.17.34) unstable; urgency=medium - - * [sid] Added e2fsprogs' new predependencies (e2fslibs, libcomerr2, libss2, - libuuid1). - * [sarge] Removed libgdbmg1 as it is no longer needed. - - -- J.H.M. Dassen (Ray) Sun, 27 Jul 2003 09:20:49 +0200 - -debootstrap (0.1.17.33) unstable; urgency=medium - - * [sid] Removed libgdbmg1 as it is no longer needed. - * [sarge] libldap2 now Depends: libgnutls7, libsasl2; added those and their - dependencies (libgcrypt1 liblzo1 libopencdk4 libtasn1-0 zlib1g). Dropped - libsasl7 in favour of libsasl2. - - -- J.H.M. Dassen (Ray) Mon, 21 Jul 2003 19:00:28 +0200 - -debootstrap (0.1.17.32) unstable; urgency=medium - - * [sid] libldap2 now Depends: libgnutls7; added that and its dependencies - (libgcrypt1 liblzo1 libopencdk4 libtasn1-0 zlib1g); dropped libssl0.9.7 . - - -- J.H.M. Dassen (Ray) Thu, 17 Jul 2003 07:05:09 +0200 - -debootstrap (0.1.17.31) unstable; urgency=medium - - * [sid] Follow debconf changes. debconf now Depends: debconf-i18n | - debconf-english; debconf-i18n having Priority: important and - debconf-english having Priority: extra, so we satisfy the dependency - through debconf-i18n. debconf-i18n in turn pulls in three additional - packages: liblocale-gettext-perl, libtext-wrapi18n-perl, - libtext-charwidth-perl . - - -- J.H.M. Dassen (Ray) Sun, 13 Jul 2003 08:52:55 +0200 - -debootstrap (0.1.17.30) unstable; urgency=medium - - * [sarge] - * Added sysv-rc for /usr/sbin/update-rc.d . - * Added initscripts to satisfy sysvinit's predependency. - * libparted1.6-0 has replaced libparted1.4 on ia64. (Closes: #197957) - - -- J.H.M. Dassen (Ray) Mon, 30 Jun 2003 07:05:22 +0200 - -debootstrap (0.1.17.29) unstable; urgency=medium - - * [sid] libconsole has replaced console-tools-libs. (Closes: #195722) - * [sarge] libperl5.6 has been replaced by libperl5.8 . (Closes: #195588) - - -- J.H.M. Dassen (Ray) Mon, 2 Jun 2003 00:40:54 +0200 - -debootstrap (0.1.17.28) unstable; urgency=medium - - * [sarge] libnewt0.51 has replaced libnewt0; it requires slang1a-utf8. - - -- J.H.M. Dassen (Ray) Wed, 28 May 2003 07:42:14 +0200 - -debootstrap (0.1.17.27) unstable; urgency=medium - - * urgency medium to not hold up .26 with that longer as necessary - * [sarge] added libtext-iconv-perl (this is the second part - from .22) (closes: #184539) - - -- Rene Engelhard Mon, 19 May 2003 00:08:48 +0200 - -debootstrap (0.1.17.26) unstable; urgency=medium - - * [sarge] libpcap0.7 has replaced libpcap0. - - -- J.H.M. Dassen (Ray) Sun, 18 May 2003 23:23:46 +0200 - -debootstrap (0.1.17.25) unstable; urgency=medium - - * [sarge] Added libblkid1 (for e2fsprogs). - - -- J.H.M. Dassen (Ray) Sun, 4 May 2003 12:44:00 +0200 - -debootstrap (0.1.17.24) unstable; urgency=medium - - * [sid] Updates for new whiptail: - * Replaced libnewt0 by libnewt0.51. - * Added slang1a-utf8. - - -- J.H.M. Dassen (Ray) Tue, 29 Apr 2003 19:04:51 +0200 - -debootstrap (0.1.17.23) unstable; urgency=medium - - * [sid] - * Added sysv-rc for /usr/sbin/update-rc.d . - * Added initscripts to satisfy sysvinit's predependency. - * For exim, dropped libsasl7 in favour of libsasl2. - * Added libssl0.9.7 for libsasl2. - - -- J.H.M. Dassen (Ray) Tue, 22 Apr 2003 06:56:25 +0200 - -debootstrap (0.1.17.22) unstable; urgency=low - - * [sid] added libtext-iconv-perl which is needed to display - localized po-debconf templates actually localized. - This needs a second step later for sarge but that only is possible - after libtext-iconv-perl 1.2-2 went into sarge. - - -- Rene Engelhard Fri, 18 Apr 2003 16:25:17 +0200 - -debootstrap (0.1.17.21) unstable; urgency=medium - - * [sarge, sid] Added gcc-3.3-base (as it is needed for current libstdc++5). - - -- J.H.M. Dassen (Ray) Fri, 18 Apr 2003 08:11:55 +0200 - -debootstrap (0.1.17.20) unstable; urgency=medium - - * [woody, sarge, sid] Add devfsd on s390 as that architecture uses devfs by - default. (Closes: #180252) - * [sarge] Removed the dummy fileutils package. - - -- J.H.M. Dassen (Ray) Mon, 7 Apr 2003 19:59:42 +0200 - -debootstrap (0.1.17.19) unstable; urgency=medium - - * [sid] Added libblkid1 (for e2fsprogs). - - -- J.H.M. Dassen (Ray) Sun, 6 Apr 2003 21:43:29 +0200 - -debootstrap (0.1.17.18) unstable; urgency=medium - - * [sarge] Added libgcc1, libstdc++5, gcc-3.2-base; dropped aptitude, - libsigc++0 . - * Debootstrap has depended on binutils since 0.1.17.3. (Closes: #184304) - - -- J.H.M. Dassen (Ray) Wed, 19 Mar 2003 06:55:56 +0100 - -debootstrap (0.1.17.17) unstable; urgency=medium - - * NMU - * Really drop aptitude from the sid script, not just libsigc++0. - - -- J.H.M. Dassen (Ray) Tue, 4 Feb 2003 06:49:36 +0100 - -debootstrap (0.1.17.16) unstable; urgency=medium - - * NMU - * Drop aptitude from the sid script (base-config 1.51 dropped its dependency - on it) and libsigc++0 (which was only needed for aptitude). This makes - "pbuilder create --distribution sid" work again. (Closes: #177221, #177998). - - -- J.H.M. Dassen (Ray) Sun, 2 Feb 2003 20:41:35 +0100 - -debootstrap (0.1.17.15) unstable; urgency=low - - * NMU - * For gcc-transition, libgcc1 and libstdc++5 and gcc-3.2-base - required by groff-base, and potentially other packages compiled with - gcc-3.2. - - -- Junichi Uekawa Mon, 13 Jan 2003 15:39:55 +0900 - -debootstrap (0.1.17.14) unstable; urgency=low - - * NMU - * Remove debootstrap-udeb's dependency on retriever. - - -- Tollef Fog Heen Sat, 7 Dec 2002 14:53:52 +0100 - -debootstrap (0.1.17.13) unstable; urgency=low - - * NMU - * sarge: Removed shellutils, textutils and added coreutils instead. - Verified that the result works for "pbuilder create --distribution sarge" - (Closes: #163789) - Fileutils is still in there for now, due to sarge's debconf versioned - dependency on it. - - -- J.H.M. Dassen (Ray) Tue, 8 Oct 2002 23:17:47 +0200 - -debootstrap (0.1.17.12) unstable; urgency=low - - * NMU - * Fix shell variable quoting problem, to change $10 -> ${10} - (closes: #161468) - - -- Junichi Uekawa Sat, 21 Sep 2002 13:39:47 +0900 - -debootstrap (0.1.17.11) unstable; urgency=low - - * NMU - * sarge: added libdb1-compat. - - -- J.H.M. Dassen (Ray) Sat, 21 Sep 2002 00:37:36 +0200 - -debootstrap (0.1.17.10) unstable; urgency=low - - * NMU - * sid: Removed shellutils, fileutils, and added coreutils for required - target (closes: #161332) - * sid: change libperl5.6 to libperl5.8 (closes: #158606) - - -- Junichi Uekawa Wed, 18 Sep 2002 21:41:36 +0900 - -debootstrap (0.1.17.9) unstable; urgency=low - - * NMU - * Added "libdb1-compat" to sid and verified that the resulting package is - usable for "pbuilder create --distribution sid". - - -- J.H.M. Dassen (Ray) Sat, 14 Sep 2002 15:09:10 +0200 - -debootstrap (0.1.17.8) unstable; urgency=low - - * NMU - * The "it didn't change the way the installer worked" release. - * Makefile: create $(DESTDIR)/usr/share/man/man8 before attempting to - install a file to it (Closes: #139543) - * functions: fix race condition in smallyes() implementation; thanks to Matt - Zimmerman for the analysis. "Sometimes, dpkg finishes executing before - smallyes runs, and it loops forever while echo fails repeatedly due to the - broken pipe." To fix this race, we simply swap the loop condition and - body, so that if the echo fails, smallyes() exits cleanly. I further - changed "true" to ":" to save the expense of an extra process for shells - where "true" is not a built-in. - (Closes: #139529) - - -- Branden Robinson Thu, 29 Aug 2002 12:50:08 -0500 - -debootstrap (0.1.17.7) unstable; urgency=low - - * NMU - * Forked "sid" target from "sarge" target, changed "libcap0" to the now - current "libpcap0.7" and verified that the result works with pbuilder. - (Closes: #156574) - - -- J.H.M. Dassen (Ray) Wed, 21 Aug 2002 11:01:52 +0200 - -debootstrap (0.1.17.6) unstable; urgency=low - - * NMU - * add dselect to required (I found out that it is actually required - for pbuilder create to work) (closes: #154527) - * change DEBIAN_FRONTEND=Noninteractive to "noninteractive" (closes: #154794) - * add sh* patch from Yaegashi (closes: #155142) - - -- Junichi Uekawa Thu, 8 Aug 2002 19:23:04 +0900 - -debootstrap (0.1.17.5) unstable; urgency=low - - * NMU - * mistake in the last upload, sorry aj. - sid points to sarge, not woody. (closes: #149971) - - -- Junichi Uekawa Sat, 27 Jul 2002 17:22:05 +0900 - -debootstrap (0.1.17.4) unstable; urgency=low - - * NMU - * add "sarge" target (closes: #153957) - - -- Junichi Uekawa Tue, 23 Jul 2002 18:03:01 +0900 - -debootstrap (0.1.17.3) unstable; urgency=low - - * NMU - * Depend on binutils (closes: #138489) - * Sleep is optional (closes: #150468) - * POSIXify a bit more (closes: #150487) - * Add support for --components (closes: #116801) - - -- Tollef Fog Heen Thu, 20 Jun 2002 00:13:06 +0200 - -debootstrap (0.1.17.2) unstable; urgency=low - - * NMU - * Make sid script not a symlink from woody script - * add aptitude and libsigc++0 to base for sid. (closes: #149971) - - -- Junichi Uekawa Sat, 15 Jun 2002 12:46:11 +0900 - -debootstrap (0.1.17.1) unstable; urgency=low - - * NMU - * Add udeb support (closes: #143874) - - -- Tollef Fog Heen Tue, 28 May 2002 14:15:41 +0200 - -debootstrap (0.1.17) unstable; urgency=high - - * Includes changes from NMUs. Thanks to Stefan Gybas and Eduard Bloch. - (Closes: Bug#130764, Bug#135676, Bug#134306, Bug#133882, Bug#131768, - Bug#117980, Bug#133298, Bug#130668, Bug#111175, Bug#131147, Bug#95143, - Bug#130482) - - * Don't use PIPESTATUS to work out if wget succeeded, since that's a - bashism and we're seriously not allowed bashisms. Duh. This should - help with all those "Malformed release" problems. Thanks to Phil - Blundell and Chris Tillman for spotting this. (Closes: Bug#136729) - - * Apply patch from Matt Zimmerman to get rid of some irritating warnings - that can show up sometimes due to sed getting it's output stream closed - on it. (Closes: Bug#131478) - - * Don't use "export foo=bar" on a single line since it's a bashism. - (Closes: Bug#138187) - - * Made the "smallyes" usage independent of --boot-floppies. Too much - code duplication otherwise. - - * Install ipchains on arches that have 2.2.x kernels by default, and - iptables on arches that have 2.4.x kernels by default. Some arches - have both. (Closes: Bug#134478) - - * Don't rm malformed Release files, rename them to something obvious - instead so people can have a hope at seeing what's going on. (Closes: - Bug#131756) - - * Error out on missing entries in Release files. (Closes: Bug#136886) - - * Fix basedeb creation to not bother building devices tarball. (Closes: - Bug#137243) - - * Workaround for ldconfig no longer needed, so removed. (Closes: Bug#135819) - * Workaround for /dev/initctl was never needed and stupid, so removed. - - * Make sure devices.tar.gz is gzip -9'ed. (Closes: Bug#136687) - - * Use any "main" components found in Release file, eg "main", - "non-US/main", "local/main". (Closes: Bug#116801) - - * Add parted to base for ia64. (Closes: Bug#138246) - - * Moved the "successful!" message and sleep hack for boot-floppies from - the woody script to the debootstrap script itself. - - -- Anthony Towns Thu, 14 Mar 2002 18:28:24 +1000 - -debootstrap (0.1.16.4) unstable; urgency=low - - * NMU, needed for boot-floppies 3.0.20 - * Added cciss and ataraid device files, closes: #135675 - * Applied the patch from Matt Zimmermann to fix --include, closes: #134306 - * Mail suppression fixed in previous release, closes: #133882 - - -- Eduard Bloch Sun, 3 Mar 2002 12:21:19 +0100 - -debootstrap (0.1.16.3) unstable; urgency=low - - * non-maintainer-upload - * require newer makedev, fixes build problems on m86k and arm - * unsets $TMP, $TEMP and $TMPDIR in the beginning, closes: #131768, #117980 - * added gcc-2.96-base to ia64's required packages list, closes: #133298 - - -- Eduard Bloch Tue, 12 Feb 2002 19:30:47 +0100 - -debootstrap (0.1.16.2) unstable; urgency=low - - * non-maintainer-upload - * added modification suggested by Branden Robinson and Matt Kraai terminate - cat (now tail) better, closes: #130668 - * provides options to install additional packages, or exclude some from the - list. May be needed in boot-floppies soon. Closes: #111175, #131147 - * --verbose option, closes: #95143 - * added additional devices to the device list, especially input and usb - needed for modern device drivers (Joysticks, USB, Scanners) - * added pppoeconf to the packages list, better choice for DSL users - * forced remove of dev/initctl, prevents breaking on re-installation - - -- Eduard Bloch Mon, 28 Jan 2002 19:14:41 +0100 - -debootstrap (0.1.16.1) unstable; urgency=high - - * non-maintainer upload for boot-floppies 3.0.19 - * Fixed list of base and required packages for s390 - * setup_devices(): don't fail if devices.tar.gz is not present and we - are using devfs - * disable handling of /dev/initctl for boot-floppies, closes: #130482 - - -- Stefan Gybas Thu, 24 Jan 2002 15:17:42 +0100 - -debootstrap (0.1.16) unstable; urgency=low - - * Include NMUs 0.1.15.1 - .9, thanks to Adam di Carlo, Ethan Benson and - Bdale Garbee. (Closes: Bug#113265, Bug#119314, Bug#119251) - * Many bugs were fixed in the NMUs. Closes them properly. (Closes: - Bug#89673, Bug#97174, Bug#99229, Bug#105980, Bug#106062, Bug#106102, - Bug#106106, Bug#106134, Bug#106711, Bug#106877, Bug#107262, - Bug#107404, Bug#107447, Bug#109670, Bug#110312, Bug#111001, - Bug#111065, Bug#112778, Bug#112795, Bug#112842, Bug#113444, - Bug#114056, Bug#114653, Bug#115467, Bug#115481, Bug#115557, - Bug#115581, Bug#115699, Bug#116061, Bug#116424, Bug#119769, - Bug#119947, Bug#121724, Bug#123958, Bug#125954, Bug#126018, - Bug#126630, Bug#126799) - - * Informative error for people who type `--boot-floppies' when running - by hand. (Closes: Bug#107548) - * Create dev/initctl in target, and setup a cat process to dump anything - sent to it to /dev/null so that if init is run in the chroot, - it doesn't try doing anything too clever to talk to the real - init. (Closes: Bug#120597) - * Create awk symlink since base-files insists on having it available. - (Closes: Bug#127934) - - * Use DEBOOTSTRAP_DIR to work out where /usr/lib/debootstrap is. - * So, in theory, to create basedeb tarballs, you should be able to unpack - the source and say: - . - fakeroot debian/rules binary-basedebs SUITE=woody VERSION=3.0 \ - MIRROR="http://ftp.debian.org/debian" ARCHES="i386 powerpc" - (Closes: Bug#127546) - - -- Anthony Towns Sun, 20 Jan 2002 21:04:37 +1000 - -debootstrap (0.1.15.9) unstable; urgency=high - - * non-maintainer upload - * debian/rules: new 'basedebs' target that makes basedebs.tgz and 1.44 - split images for base per arch - * functions: better return value handling during wget (wgetprogress) - * repeat() had a useless eval, removed, which simplifies some silly - quoting - * incorrect error message in in_target_msg(), closes: #119769 - * debian/changelog: remove obsolete "local variables" - * additional progress message when validating the release file after - download - * when the downloaded release file is invalid, make sure to delete it - closes: #119947 - * debian/rules: minor fixes and cosmetics - * upgrade wget from Recommends to Depends, closes: #126799 - * depend on binutils, for 'ar', closes: #123958 - - -- Adam Di Carlo Fri, 4 Jan 2002 20:01:58 -0500 - -debootstrap (0.1.15.8) unstable; urgency=high - - * non-maintainer upload - * Fix progress bar hooks to enable proper progress on basedebs.tgz - installation as well as actual base installation and extraction. - * trap signals so cleanup is still performed. - * When in --boot-floppies mode echo a Success info message to stdout, so - it will show up on /dev/tty4, this is so users watching tty4 stop - being confused when things just stop at completion. - * Replace $TARGET/sbin/start-stop-daemon with a shell script instead of - /bin/true, this shell script announces that its a fake noop version so - users will know whats wrong if debootstrap aborts before completion. - - -- Ethan Benson Sat, 3 Nov 2001 23:14:08 -0900 - -debootstrap (0.1.15.7) unstable; urgency=high - - * non-maintainer upload - * when reporting errors in 'in_target', don't chop down to the first - 50 characters - * woody: when in boot-floppies mode, provide more user-friendly warning - messages, using new 'in_target_msg' function - * woody: more info messages for the core/required/base package - installation part - * instead of 'ln -s' we should be using 'ln -sf'; this would prevent - running debootstrap twice in the same target dir; closes: #111065 - * before mounting proc, umount it just in case; normally this shouldn't - be needed if on_exit is working all the time, but I find without this, - sometimes problems are caused - * woody/i386 needs psmisc for pcmcia-cs (critical bug!) - * --download-only mode can be run as non-root; closes: #116424 - * tested some problems which I couldn't reproduce - closes: #115699 - - -- Adam Di Carlo Wed, 24 Oct 2001 16:05:39 -0400 - -debootstrap (0.1.15.6) unstable; urgency=medium - - * non-maintainer upload - * smaller and wiser version of smallyes(), thanks to Herbert Xu - * woody base includes pcmcia-cs for i386 and powerpc (closes: #114653) - * wget progress bar support (closes: #116061) - - -- Adam Di Carlo Thu, 18 Oct 2001 15:14:02 -0400 - -debootstrap (0.1.15.5) unstable; urgency=high - - * From Ethan Benson: - * pipe yes output into dpkg runs inside install_debs() this way on_exit - works in --boot-floppies mode. (Closes: #112842, #115481) - * Add libpcap0 to base, ppp depends on it now. (Closes: #114056) - - * From Adam Di Carlo: - * Potato installation on non-i386 was broken, need libc6 - (closes: #112778); however, there are other ways the Potato base - install doesn't represent quite what Potato boot-floppies would - consider base - * apply patch from Tommi Virtanen which improves the 'smallyes' - function; apparently this fixes a console-tools postinst loop, - although I haven't seen that (closes: #115581) - * get rid of some line continuators in potato and woody scripts, they - were obscuring some problems - - -- Adam Di Carlo Mon, 15 Oct 2001 01:56:16 -0400 - -debootstrap (0.1.15.4) unstable; urgency=high - - * more fixed for the benefits of boot-floppies - * add telnetd on s390; yes, it's gross, but it's needed for - installation, to connect from the line mode console - closes: #112795 - - -- Adam Di Carlo Sun, 23 Sep 2001 16:11:03 -0400 - -debootstrap (0.1.15.3) unstable; urgency=high - - * Fix deficient command line option parsing, optional arguments no - longer have to be declared in a specific order, for example before you - could not put --arch before --download-only, now you can. - * Add --help option and useful help output. - * Stop using dirname, basename, and yes, they are being removed from - busybox. - * Fix many many quoting bugs. - * Fix debootstrap man page (Closes: #107404, #109670) - * Add ftp support (Closes: #110312) - * Don't waste time downloading useless non-free/contrib (Closes: #89673) - * Path cleanup (Closes: #97174) - * Add pppconfig to woody base (Closes: #111001) - * Remove syslinux from base (Closes: #107447) - * Eliminate useless warning about creating exim.conf (Closes: #99229) - * Don't use "here documents" (they create tmp files in /tmp which could - be very well be full on boot-floppies). - * Don't use echo -n it is not portable. - * Set umask to 022. - * All patches from Ethan Benson, I am just the builder! - These have been tested with boot-floppies and work properly. - - -- Adam Di Carlo Sat, 22 Sep 2001 12:30:02 -0400 - -debootstrap (0.1.15.2) unstable; urgency=low - - * quoting required in one place for the new ash (Closes: Bug#106062) - * s390 support (Closes: Bug#107262) - * remove some packages from Woody's base that aren't needed: - - update (not needed with modern kernels, Closes: Bug#106877) - - syslinux (Closes: Bug#107477) - - ldso (should be pulled in by libc6, Closes: Bug#106102) - * kinks in mipsel base worked themselves out (Closes: Bug#106711) - - -- Adam Di Carlo Wed, 8 Aug 2001 12:04:40 -0400 - -debootstrap (0.1.15.1) unstable; urgency=low - - * add efibootmgr on ia64, as per bug 105980. - - -- Bdale Garbee Fri, 3 Aug 2001 14:13:23 -0600 - -debootstrap (0.1.15) unstable; urgency=low - - * Do progress indications (by bytes) for Packages downloads and .deb - downloads. (Closes: Bug#101886) - * Don't use seq. Silly busybox. - * Add pppoe to base. (Closes: Bug#102378) - * No point keeping around the "sid.is-broken" file. - - -- Anthony Towns Wed, 27 Jun 2001 21:29:29 +1000 - -debootstrap (0.1.14) unstable; urgency=low - - * Make in_target_nofail kill stderr. No more "/dev/pts: not mounted" error. - Yay. :) - - * Refactor woody, potato and slink scripts; do away with - woody.debs. Change the way the scripts work. (Now they define - functions which debootstrap calls. Much nicer) - * Support --download-only option. - * Support resuming downloads of Release and Packages files, even gzipped - ones. - * Support null: (Packages files assumed to be named for a debootstrap.invalid - host) - * Always use the deboostrap.invalid name, and use that in - /etc/apt/sources.list. Remove /etc/apt/sources.list after the base - system is build. - * All this should be enough to support basedeb.tgz installs on - debootstrap's behalf. Some more stuff would be useful, but isn't - immediately necessary. (Closes: Bug#102217) - - * Add ia64 support and fix libc6 == libc6.1 problem. (Closes: Bug#101829) - - * Be a little more careful with permissions on devs tarball. Hopefully. - (Closes: Bug#102308) - - * Don't worry if md5sum from stdin adds a " -" after the md5sum. Should - make debootstrap more usable on non-Debian Linuxes. - - -- Anthony Towns Mon, 25 Jun 2001 18:38:35 +1000 - -debootstrap (0.1.13) unstable; urgency=low - - * Add symlink for sid.debs. - * Fix the special casing for hppa. (Closes: Bug#101604) - * Remove groff from base. (Closes: Bug#101173) - * Retry partially successful downloads a couple of times. - (Closes: Bug#101476) - * Minor wording changes wrt downloading Release file (Closes: Bug#101705) - - -- Anthony Towns Thu, 21 Jun 2001 12:08:10 +1000 - -debootstrap (0.1.12) unstable; urgency=high - - * Split determination of base into a separate script to enable further - innovation! Come on, tell me that doesn't excite you! - - * Add groff-base to base. (Closes: Bug#100112, Bug#100123) - * Remove libstdc++2.10 and some other hopefully unnecessary debs - (Closes: Bug#99708) - - * Remove lilo.conf special casing. Change some warnings to info messages. - - -- Anthony Towns Sun, 10 Jun 2001 01:22:12 +1000 - -debootstrap (0.1.11) unstable; urgency=low - - * Add dhcp-client to base. (Closes: Bug#100083) - - -- Anthony Towns Sat, 9 Jun 2001 00:11:26 +1000 - -debootstrap (0.1.10) unstable; urgency=low - - * Don't abort build on devfs systems: the makedev we build-dep on should - be recent enough. (Closes: Bug#97713) - * Check for malformed release files. Thanks to Martin Michlmayr for the - patch. (Closes: Bug#97707) - * Use --force-confold when installing base. That is: if you want the - conffile from the package to be there at the end, don't create a - file in the first place. I'm not convinced this is right. - (Closes: Bug#99025) - - -- Anthony Towns Mon, 28 May 2001 14:43:07 +1000 - -debootstrap (0.1.9) unstable; urgency=low - - * Abort build on devfs systems (MAKEDEV fails for no good reason) - (Closes: Bug#97713) - - * Add support for mips and mipsel (Closes: Bug#97711) - * Add some support for hppa (install palo in base) - - * Don't install ldso (Closes: Bug#97708) - * Don't install libopenldap1 or libopenldap-runtime (replaced by libldap2) - (Closes: Bug#98050) - * Do install libdb3 and libcap1. - * Install klogd too. (But only as part of base. Move sysklogd to base too) - - * Setup a dummy lilo.conf on i386 only. (Closes: Bug#97710, Bug#98052) - - * Trim a trailing / for target and url. - - -- Anthony Towns Sun, 20 May 2001 13:33:34 +1000 - -debootstrap (0.1.8) unstable; urgency=low - - * Add adduser and base-config into base. base-config unfortunately depends - on perl instead of perl-base. (Closes: Bug#96439) - * Force LANG=C. Need to work out how i18n should be handled. - * Kludge potato install so it's noninteractive. Thanks to Colin Watson - for the patch. (Closes: Bug#94441) - * Get rid of dh_testversion. - * Make a sid script (just a symlink to the woody script). - - -- Anthony Towns Wed, 9 May 2001 20:33:00 +1000 - -debootstrap (0.1.7) unstable; urgency=low - - * Don't worry if umounting /dev/pts fails. - * Add debootstrap(8) manpage, thanks to Matt Kraai. (Closes: Bug#86238) - * Add a blank line to the end of the faked /var/lib/dpkg/status. Spotted - by Richard Hirst. - * Added console-tools and console-data into the base system. - * Move /etc/exim.conf to /etc/exim/exim.conf so that sendmail doesn't - give errors, even if debconf tries to use it before exim is - configured. Gack. - * Add fdutils back into base. - - -- Anthony Towns Mon, 30 Apr 2001 15:49:27 +1000 - -debootstrap (0.1.6) unstable; urgency=low - - * Only create stuff in /etc if it hasn't already been created. - - -- Anthony Towns Mon, 23 Apr 2001 18:02:55 +1000 - -debootstrap (0.1.5) unstable; urgency=low - - * Use "head -n X" instead of "head -X" to work with busybox. - (Closes: Bug#94575) - * Use s///I instead of s///i for case insensitivity, again for busybox. - (Closes: Bug#94579) - * Fixed typo that would have stopped debootstrap from falling back to an - uncompressed Packages file. - * Added libsasl7 and libldap2 to woody base, since woody exim now depends - on them. - - -- Anthony Towns Sun, 22 Apr 2001 01:47:00 +1000 - -debootstrap (0.1.4) unstable; urgency=low - - * If we've got a Release file, check that the Packages files we download - have the right md5sums. - * Build-Depend on new makedev, and don't hax0r powerpc devices as much. - (Closes: Bug#93836) - * Hopefully support arm chroots. (Closes: Bug#92592) Declare it to be - Arch: any, and see what dies. There's a chance that nothing will. Not - a *big* chance, but a chance. - * Fiddled with the base system some more. Added apt-utils so - preconfiguration will work. - * Added permission to NMU to the README.Debian. - * Mention file:/ URLs in README.Debian. (Closes: Bug#87099) - * Add a --boot-floppies option that changes the way the I/O happens, in - a way that's hopefully useful for boot-floppies. See README.Debian for - details. - * Also added a bit more output. - - -- Anthony Towns Mon, 26 Mar 2001 22:30:12 +1000 - -debootstrap (0.1.3) unstable; urgency=high - - * Switch from debconf-tiny to debconf, since that's what's now in - woody. (Using debconf-tiny probably makes the package unusable, hence - the urgency) Fixup perl, lilo and console-apt to cope with changes in - the base system in woody. Added ae, left nano and nvi. - * Add support for m68k, sparc and powerpc, based on Christian Steigies - patches and Adam Di Carlo's NMU (Closes: Bug#89883, Bug#91221) - - -- Anthony Towns Sun, 25 Mar 2001 14:29:02 +1000 - -debootstrap (0.1.2) unstable; urgency=low - - * Add support for slink. - * Fix support for woody (no lilo, console-*, different perl) - * Re-download Packages files every time (Closes: Bug#88438) - (Should this be changed to re-download things where the md5 doesn't match?) - - -- Anthony Towns Sun, 4 Mar 2001 19:42:29 +1000 - -debootstrap (0.1.1) unstable; urgency=low - - * Initial Release. (Closes: Bug#82245) - - * Called it debootstrap instead of debchroot, because it's more about - bootstrapping a Debian environment, whether that will end up being - in a chroot, or as a standalone system. Blame Adam di Carlo. :) - - -- Anthony Towns Tue, 30 Jan 2001 10:54:45 +1000 diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/compat b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/compat deleted file mode 100644 index ec635144..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/control b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/control deleted file mode 100644 index 6925a63c..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/control +++ /dev/null @@ -1,26 +0,0 @@ -Source: debootstrap -Section: admin -Priority: extra -Maintainer: Franco (nextime) Lanza -Uploaders: Franco (nextime) Lanza , Daniel Reurich -Build-Depends: debhelper (>= 9), makedev (>= 2.3.1-69) [linux-any], git -Standards-Version: 3.9.8 -Vcs-Browser: https://git.devuan.org/devuan-packages/debootstrap -Vcs-Git: https://git.devuan.org/devuan-packages/debootstrap.git - -Package: debootstrap -Architecture: all -Depends: ${misc:Depends}, wget -Recommends: gnupg, ${keyring}, devuan-keyring -Description: Bootstrap a basic Devuan system - debootstrap is used to create a Devuan base system from scratch, - without requiring the availability of dpkg or apt. It does this by - downloading .deb files from a mirror site, and carefully unpacking them - into a directory which can eventually be chrooted into. - -Package: debootstrap-udeb -Section: debian-installer -Package-Type: udeb -Architecture: all -Depends: ${misc:Depends}, mounted-partitions -Description: Bootstrap the Devuan system diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/copyright b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/copyright deleted file mode 100644 index b34963b1..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/copyright +++ /dev/null @@ -1,30 +0,0 @@ -This package was debianized by Anthony Towns on -Tue, 30 Jan 2001 10:54:45 +1000. - -It was written from scratch for Debian by Anthony Towns -based loosely on the code for constructing base tarballs as part of the -boot-floppies package. - -Copyright: - -Copyright (c) 2001-2005 Anthony Towns - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/debootstrap.docs b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/debootstrap.docs deleted file mode 100644 index e845566c..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/debootstrap.docs +++ /dev/null @@ -1 +0,0 @@ -README diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/debootstrap.manpages b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/debootstrap.manpages deleted file mode 100644 index d6a5e4ac..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/debootstrap.manpages +++ /dev/null @@ -1 +0,0 @@ -debootstrap.8 diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/gbp.conf b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/gbp.conf deleted file mode 100644 index ac8e799c..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/gbp.conf +++ /dev/null @@ -1,9 +0,0 @@ -[DEFAULT] -compression = xz -pristine-tar = false -upstream-tag = devuan/1.0.85 - -[git-buildpackage] -upstream-tree = tag -tarball-dir = ../tarballs/ -export-dir = ../build-area/ diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/rules b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/rules deleted file mode 100755 index 23bc4a61..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/rules +++ /dev/null @@ -1,47 +0,0 @@ -#! /usr/bin/make -f - -ifeq (0,$(shell dpkg-vendor --derives-from Ubuntu; echo $$?)) - KEYRING := ubuntu-keyring -else ifeq (0,$(shell dpkg-vendor --derives-from Devuan; echo $$?)) - KEYRING := devuan-keyring -else ifeq (0,$(shell dpkg-vendor --derives-from Tanglu; echo $$?)) - KEYRING := tanglu-archive-keyring -else - KEYRING := debian-archive-keyring -endif - -%: - dh $@ - -# need to be root to make devices, so build is done in install target -override_dh_auto_build: - -override_dh_auto_install: - dh_auto_build - - $(MAKE) install DESTDIR=$(CURDIR)/debian/debootstrap - $(MAKE) install DESTDIR=$(CURDIR)/debian/debootstrap-udeb - - # remove scripts not needed by d-i - -rm -f debian/debootstrap-udeb/usr/share/debootstrap/scripts/potato \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/woody \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/sarge \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/warty \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/hoary \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/breezy \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/dapper \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/edgy \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/feisty \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/*.buildd \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/*.fakechroot \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/stable \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/testing \ - debian/debootstrap-udeb/usr/share/debootstrap/scripts/unstable - -override_dh_gencontrol: - dh_gencontrol -- -Vkeyring=$(KEYRING) - -# Specify gzip to mitigate #770217: -override_dh_builddeb: - dh_builddeb -pdebootstrap -- -Zgzip - dh_builddeb -pdebootstrap-udeb -- -Zxz diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/source/format b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/source/format deleted file mode 100644 index af745b31..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (git) diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debootstrap b/cdist/preos/debootstrap/files/devuan-debootstrap/debootstrap deleted file mode 100755 index 71c70540..00000000 --- a/cdist/preos/debootstrap/files/devuan-debootstrap/debootstrap +++ /dev/null @@ -1,703 +0,0 @@ -#!/bin/sh -set -e - -VERSION='@VERSION@' - -unset TMP TEMP TMPDIR || true - -# might not be exported if we're running from init=/bin/sh or similar -export PATH - -########################################################################### - -if [ -z "$DEBOOTSTRAP_DIR" ]; then - if [ -x /debootstrap/debootstrap ]; then - DEBOOTSTRAP_DIR=/debootstrap - else - DEBOOTSTRAP_DIR=/usr/share/debootstrap - fi -fi - -. $DEBOOTSTRAP_DIR/functions -exec 4>&1 - -LANG=C -USE_COMPONENTS=main -KEYRING="" -DISABLE_KEYRING="" -FORCE_KEYRING="" -VARIANT="" -MERGED_USR="no" -ARCH="" -HOST_ARCH="" -HOST_OS="" -KEEP_DEBOOTSTRAP_DIR="" -USE_DEBIANINSTALLER_INTERACTION="" -SECOND_STAGE_ONLY="" -PRINT_DEBS="" -CHROOTDIR="" -MAKE_TARBALL="" -EXTRACTOR_OVERRIDE="" -UNPACK_TARBALL="" -ADDITIONAL="" -EXCLUDE="" -VERBOSE="" -CERTIFICATE="" -CHECKCERTIF="" -PRIVATEKEY="" - - -DEF_MIRROR="http://packages.devuan.org/merged" -DEF_HTTPS_MIRROR="https://packages.devuan.org/merged" - -export LANG USE_COMPONENTS EXCLUDE -umask 022 - -########################################################################### - -## phases: -## finddebs dldebs printdebs first_stage second_stage - -RESOLVE_DEPS=true - -WHAT_TO_DO="finddebs dldebs first_stage second_stage" -am_doing_phase () { - # usage: if am_doing_phase finddebs; then ...; fi - local x; - for x in "$@"; do - if echo " $WHAT_TO_DO " | grep -q " $x "; then return 0; fi - done - return 1 -} - -########################################################################### - -usage_err() -{ - info USAGE1 "usage: [OPTION]... [ [