Compare commits

..

No commits in common. "master" and "ander/__rsync" have entirely different histories.

37 changed files with 153 additions and 1500 deletions

View file

@ -35,9 +35,9 @@ DOCS_SRC_DIR=./docs/src
SPEECHDIR=./docs/speeches SPEECHDIR=./docs/speeches
TYPEDIR=./cdist/conf/type TYPEDIR=./cdist/conf/type
SPHINXM=$(MAKE) -C $(DOCS_SRC_DIR) man SPHINXM=make -C $(DOCS_SRC_DIR) man
SPHINXH=$(MAKE) -C $(DOCS_SRC_DIR) html SPHINXH=make -C $(DOCS_SRC_DIR) html
SPHINXC=$(MAKE) -C $(DOCS_SRC_DIR) clean SPHINXC=make -C $(DOCS_SRC_DIR) clean
################################################################################ ################################################################################
# Manpages # Manpages

File diff suppressed because it is too large Load diff

View file

@ -27,18 +27,19 @@
str2bytes() { str2bytes() {
awk -F' ' ' awk -F' ' '
$2 == "B" || !$2 { print $1 } $2 == "B" || !$2 { print $1 }
$2 == "kB" { printf "%.f\n", ($1 * 1000) } $2 == "kB" { print $1 * 1000 }
$2 == "MB" { printf "%.f\n", ($1 * 1000 * 1000) } $2 == "MB" { print $1 * 1000 * 1000 }
$2 == "GB" { printf "%.f\n", ($1 * 1000 * 1000 * 1000) } $2 == "GB" { print $1 * 1000 * 1000 * 1000 }
$2 == "TB" { printf "%.f\n", ($1 * 1000 * 1000 * 1000 * 1000) } $2 == "TB" { print $1 * 1000 * 1000 * 1000 * 1000 }
$2 == "kiB" { printf "%.f\n", ($1 * 1024) } $2 == "kiB" { print $1 * 1024 }
$2 == "MiB" { printf "%.f\n", ($1 * 1024 * 1024) } $2 == "MiB" { print $1 * 1024 * 1024 }
$2 == "GiB" { printf "%.f\n", ($1 * 1024 * 1024 * 1024) } $2 == "GiB" { print $1 * 1024 * 1024 * 1024 }
$2 == "TiB" { printf "%.f\n", ($1 * 1024 * 1024 * 1024 * 1024) }' $2 == "TiB" { print $1 * 1024 * 1024 * 1024 * 1024 }'
} }
bytes2kib() { bytes2kib() {
awk '$0 > 0 { printf "%.f\n", ($0 / 1024) }' set -- "$(cat)"
test "$1" -gt 0 && echo $(($1 / 1024))
} }

View file

@ -1,7 +1,6 @@
#!/bin/sh -e #!/bin/sh
# #
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) # 2010-2011 Nico Schottelius (nico-cdist at schottelius.org)
# 2020-2021 Dennis Camera (dennis.camera at ssrq-sds-fds.ch)
# #
# This file is part of cdist. # This file is part of cdist.
# #
@ -18,22 +17,12 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>. # along with cdist. If not, see <http://www.gnu.org/licenses/>.
# #
#
# All os variables are lower case # All os variables are lower case
# #
#
rc_getvar() { case "$("$__explorer/os")" in
awk -F= -v varname="$2" '
function unquote(s) {
if (s ~ /^".*"$/ || s ~ /^'\''.*'\''$/)
return substr(s, 2, length(s) - 2)
else
return s
}
$1 == varname { print unquote(substr($0, index($0, "=") + 1)) }' "$1"
}
case $("${__explorer:?}/os")
in
amazon) amazon)
cat /etc/system-release cat /etc/system-release
;; ;;
@ -54,8 +43,6 @@ in
# sid versions don't have a number, so we decode by codename: # sid versions don't have a number, so we decode by codename:
case $(expr "$debian_version" : '\([a-z]\{1,\}\)/') case $(expr "$debian_version" : '\([a-z]\{1,\}\)/')
in in
trixie) echo 12.99 ;;
bookworm) echo 11.99 ;;
bullseye) echo 10.99 ;; bullseye) echo 10.99 ;;
buster) echo 9.99 ;; buster) echo 9.99 ;;
stretch) echo 8.99 ;; stretch) echo 8.99 ;;
@ -63,7 +50,7 @@ in
wheezy) echo 6.99 ;; wheezy) echo 6.99 ;;
squeeze) echo 5.99 ;; squeeze) echo 5.99 ;;
lenny) echo 4.99 ;; lenny) echo 4.99 ;;
*) echo 99.99 ;; *) exit 1
esac esac
;; ;;
*) *)
@ -72,23 +59,7 @@ in
esac esac
;; ;;
devuan) devuan)
devuan_version=$(cat /etc/devuan_version) cat /etc/devuan_version
case ${devuan_version}
in
(*/ceres)
# ceres versions don't have a number, so we decode by codename:
case ${devuan_version}
in
(chimaera/ceres) echo 3.99 ;;
(beowulf/ceres) echo 2.99 ;;
(ascii/ceres) echo 1.99 ;;
(*) exit 1
esac
;;
(*)
echo "${devuan_version}"
;;
esac
;; ;;
fedora) fedora)
cat /etc/fedora-release cat /etc/fedora-release
@ -97,20 +68,12 @@ in
cat /etc/gentoo-release cat /etc/gentoo-release
;; ;;
macosx) macosx)
# NOTE: Legacy versions (< 10.3) do not support options sw_vers -productVersion
sw_vers | awk -F ':[ \t]+' '$1 == "ProductVersion" { print $2 }'
;; ;;
freebsd) freebsd)
# Apparently uname -r is not a reliable way to get the patch level. # Apparently uname -r is not a reliable way to get the patch level.
# See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=251743 # See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=251743
if command -v freebsd-version >/dev/null 2>&1 freebsd-version
then
# get userland version
freebsd-version -u
else
# fallback to kernel release for FreeBSD < 10.0
uname -r
fi
;; ;;
*bsd|solaris) *bsd|solaris)
uname -r uname -r
@ -135,20 +98,7 @@ in
fi fi
;; ;;
ubuntu) ubuntu)
if command -v lsb_release >/dev/null 2>&1
then
lsb_release -sr lsb_release -sr
elif test -r /usr/lib/os-release
then
# fallback to /usr/lib/os-release if lsb_release is not present (like
# on minimized Ubuntu installations)
rc_getvar /usr/lib/os-release VERSION_ID
elif test -r /etc/lsb-release
then
# extract DISTRIB_RELEASE= variable from /etc/lsb-release on old
# versions without /usr/lib/os-release.
rc_getvar /etc/lsb-release DISTRIB_RELEASE
fi
;; ;;
alpine) alpine)
cat /etc/alpine-release cat /etc/alpine-release

View file

@ -28,7 +28,6 @@
# lsb_release may not be given in all installations # lsb_release may not be given in all installations
codename_os_release() { codename_os_release() {
# shellcheck disable=SC1090 # shellcheck disable=SC1090
# shellcheck disable=SC1091
. "$__global/explorer/os_release" . "$__global/explorer/os_release"
printf "%s" "$VERSION_CODENAME" printf "%s" "$VERSION_CODENAME"
} }

View file

@ -1,79 +0,0 @@
cdist-type__apt_pin(7)
======================
NAME
----
cdist-type__apt_pin - Manage apt pinning rules
DESCRIPTION
-----------
Adds/removes/edits rules to pin some packages to a specific distribution. Useful if using multiple debian repositories at the same time. (Useful, if one wants to use a few specific packages from backports or perhaps Debain testing... or even sid.)
REQUIRED PARAMETERS
-------------------
distribution
Specifies what distribution the package should be pinned to. Accepts both codenames (buster/bullseye/sid) and suite names (stable/testing/...).
OPTIONAL PARAMETERS
-------------------
package
Package name, glob or regular expression to match (multiple) packages. If not specified `__object_id` is used.
priority
The priority value to assign to matching packages. Deafults to 500. (To match the default target distro's priority)
state
Will be passed to underlying `__file` type; see there for valid values and defaults.
BOOLEAN PARAMETERS
------------------
None.
EXAMPLES
--------
.. code-block:: sh
# Add the bullseye repo to buster, but do not install any packages by default,
# only if explicitely asked for (-1 means "never" for apt)
__apt_pin bullseye-default \
--package "*" \
--distribution bullseye \
--priority -1
require="__apt_pin/bullseye-default" __apt_source bullseye \
--uri http://deb.debian.org/debian/ \
--distribution bullseye \
--component main
__apt_pin foo --package "foo foo-*" --distribution bullseye
__foo # Assuming, this installs the `foo` package internally
__package foo-plugin-extras # Assuming we also need some extra stuff
SEE ALSO
--------
:strong:`apt_preferences`\ (5)
:strong:`cdist-type__apt_source`\ (7)
:strong:`cdist-type__apt_backports`\ (7)
:strong:`cdist-type__file`\ (7)
AUTHORS
-------
Daniel Fancsali <fancsali@gmail.com>
COPYING
-------
Copyright \(C) 2021 Daniel Fancsali. 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.

View file

@ -1,63 +0,0 @@
#!/bin/sh -e
#
# 2021 Daniel Fancsali (fancsali@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 <http://www.gnu.org/licenses/>.
#
name="$__object_id"
os=$(cat "$__global/explorer/os")
state="$(cat "$__object/parameter/state")"
if [ -f "$__object/parameter/package" ]; then
package="$(cat "$__object/parameter/package")"
else
package=$name
fi
distribution="$(cat "$__object/parameter/distribution")"
priority="$(cat "$__object/parameter/priority")"
case "$os" in
debian|ubuntu|devuan)
;;
*)
printf "This type is specific to Debian and it's derivatives" >&2
exit 1
;;
esac
case $distribution in
stable|testing|unstable|experimental)
pin="release a=$distribution"
;;
*)
pin="release n=$distribution"
;;
esac
__file "/etc/apt/preferences.d/$name" \
--owner root --group root --mode 0644 \
--state "$state" \
--source - << EOF
Package: $package
Pin: $pin
Pin-Priority: $priority
EOF

View file

@ -1 +0,0 @@
present

View file

@ -1,2 +0,0 @@
state
package

View file

@ -1,2 +0,0 @@
distribution
priority

View file

@ -22,21 +22,7 @@
name="$__object_id" name="$__object_id"
destination="/etc/apt/sources.list.d/${name}.list" destination="/etc/apt/sources.list.d/${name}.list"
# There are special arguments to apt(8) to prevent aborts if apt woudn't been
# updated after the 19th April 2021 till the bullseye release. The additional
# arguments acknoledge the happend suite change (the apt(8) update does the
# same by itself).
#
# Using '-o $config' instead of the --allow-releaseinfo-change-* parameter
# allows backward compatablility to pre-buster Debian versions.
#
# See more: ticket #861
# https://code.ungleich.ch/ungleich-public/cdist/-/issues/861
apt_opts="-o Acquire::AllowReleaseInfoChange::Suite=true -o Acquire::AllowReleaseInfoChange::Version=true"
# run 'apt-get update' only if something changed with our sources.list file
# it will be run a second time on error as a redundancy messure to success
if grep -q "^__file${destination}" "$__messages_in"; then if grep -q "^__file${destination}" "$__messages_in"; then
printf 'apt-get %s update || apt-get %s update\n' "$apt_opts" "$apt_opts" printf 'apt-get update || apt-get update\n'
fi fi

View file

@ -18,23 +18,9 @@
# along with cdist. If not, see <http://www.gnu.org/licenses/>. # along with cdist. If not, see <http://www.gnu.org/licenses/>.
# #
# There are special arguments to apt(8) to prevent aborts if apt woudn't been
# updated after the 19th April 2021 till the bullseye release. The additional
# arguments acknoledge the happend suite change (the apt(8) update does the
# same by itself).
#
# Using '-o $config' instead of the --allow-releaseinfo-change-* parameter
# allows backward compatablility to pre-buster Debian versions.
#
# See more: ticket #861
# https://code.ungleich.ch/ungleich-public/cdist/-/issues/861
apt_opts="-o Acquire::AllowReleaseInfoChange::Suite=true -o Acquire::AllowReleaseInfoChange::Version=true"
# run 'apt-get update' if anything in /etc/apt is newer then /var/lib/apt/lists # run 'apt-get update' if anything in /etc/apt is newer then /var/lib/apt/lists
# it will be run a second time on error as a redundancy messure to success
cat << DONE cat << DONE
if find /etc/apt -mindepth 1 -cnewer /var/lib/apt/lists | grep . > /dev/null; then if find /etc/apt -mindepth 1 -cnewer /var/lib/apt/lists | grep . > /dev/null; then
apt-get $apt_opts update || apt-get $apt_opts update apt-get update || apt-get update
fi fi
DONE DONE

View file

@ -1 +0,0 @@
'file' has been deprecated in favour of 'line' in order to provide idempotency.

View file

@ -27,7 +27,7 @@ else
fi fi
case "$os" in case "$os" in
alpine|centos|fedora|gentoo|redhat|suse|ubuntu) alpine|centos|fedora|redhat|suse|gentoo)
if [ ! -x "$(command -v lsblk)" ]; then if [ ! -x "$(command -v lsblk)" ]; then
echo "lsblk is required for __filesystem type" >&2 echo "lsblk is required for __filesystem type" >&2
exit 1 exit 1

View file

@ -15,7 +15,7 @@ case $os in
# Differntation not needed anymore # Differntation not needed anymore
apt_source_distribution=stable apt_source_distribution=stable
;; ;;
10*|11*) 10*)
# Differntation not needed anymore # Differntation not needed anymore
apt_source_distribution=stable apt_source_distribution=stable
;; ;;

View file

@ -41,7 +41,7 @@ if [ -z "${certbot_fullpath}" ]; then
require="__apt_source/stretch-backports" __package_apt certbot \ require="__apt_source/stretch-backports" __package_apt certbot \
--target-release stretch-backports --target-release stretch-backports
;; ;;
10*|11*) 10*)
__package_apt certbot __package_apt certbot
;; ;;

View file

@ -81,24 +81,12 @@ aptget="DEBIAN_FRONTEND=noninteractive apt-get --quiet --yes -o Dpkg::Options::=
case "$state_should" in case "$state_should" in
present) present)
# There are special arguments to apt(8) to prevent aborts if apt woudn't been
# updated after the 19th April 2021 till the bullseye release. The additional
# arguments acknoledge the happend suite change (the apt(8) update does the
# same by itself).
#
# Using '-o $config' instead of the --allow-releaseinfo-change-* parameter
# allows backward compatablility to pre-buster Debian versions.
#
# See more: ticket #861
# https://code.ungleich.ch/ungleich-public/cdist/-/issues/861
apt_opts="-o Acquire::AllowReleaseInfoChange::Suite=true -o Acquire::AllowReleaseInfoChange::Version=true"
# following is bit ugly, but important hack. # following is bit ugly, but important hack.
# due to how cdist config run works, there isn't # due to how cdist config run works, there isn't
# currently better way to do it :( # currently better way to do it :(
cat << EOF cat << EOF
if [ ! -f /var/cache/apt/pkgcache.bin ] || [ "\$( stat --format %Y /var/cache/apt/pkgcache.bin )" -lt "\$( date +%s -d '-1 day' )" ] if [ ! -f /var/cache/apt/pkgcache.bin ] || [ "\$( stat --format %Y /var/cache/apt/pkgcache.bin )" -lt "\$( date +%s -d '-1 day' )" ]
then echo apt-get $apt_opts update > /dev/null 2>&1 || true then echo apt-get update > /dev/null 2>&1 || true
fi fi
EOF EOF
if [ -n "$version" ]; then if [ -n "$version" ]; then

View file

@ -37,7 +37,6 @@ assert () # If condition false,
then then
echo "Assertion failed: \"$1\"" echo "Assertion failed: \"$1\""
# shellcheck disable=SC2039 # shellcheck disable=SC2039
# shellcheck disable=SC3044
echo "File \"$0\", line $lineno, called by $(caller 0)" echo "File \"$0\", line $lineno, called by $(caller 0)"
exit $E_ASSERT_FAILED exit $E_ASSERT_FAILED
fi fi

View file

@ -41,19 +41,7 @@ fi
case "$type" in case "$type" in
yum) ;; yum) ;;
apt) apt)
# There are special arguments to apt(8) to prevent aborts if apt woudn't been echo "apt-get --quiet update"
# updated after the 19th April 2021 till the bullseye release. The additional
# arguments acknoledge the happend suite change (the apt(8) update does the
# same by itself).
#
# Using '-o $config' instead of the --allow-releaseinfo-change-* parameter
# allows backward compatablility to pre-buster Debian versions.
#
# See more: ticket #861
# https://code.ungleich.ch/ungleich-public/cdist/-/issues/861
apt_opts="-o Acquire::AllowReleaseInfoChange::Suite=true -o Acquire::AllowReleaseInfoChange::Version=true"
echo "apt-get --quiet $apt_opts update"
echo "apt-cache updated (age was: $currage)" >> "$__messages_out" echo "apt-cache updated (age was: $currage)" >> "$__messages_out"
;; ;;
pacman) pacman)

View file

@ -1,16 +0,0 @@
#!/bin/sh -e
if [ -f "$__object/parameter/file" ]
then
file="$( cat "$__object/parameter/file" )"
else
file="/$__object_id"
fi
if [ ! -e "$file" ]
then
echo "$file does not exist" >&2
exit 1
fi
cat "$file"

View file

@ -1,58 +0,0 @@
#!/bin/sh -e
if [ -f "$__object/parameter/file" ]
then
file="$( cat "$__object/parameter/file" )"
else
file="/$__object_id"
fi
script="$( cat "$__object/parameter/script" )"
if [ "$script" = '-' ]
then
script="$( cat "$__object/stdin" )"
fi
# since stdin is not available in explorer, we pull file from target with explorer
file_from_target="$__object/explorer/file"
sed_cmd='sed'
if [ -f "$__object/parameter/regexp-extended" ]
then
sed_cmd="$sed_cmd -E"
fi
# do sed dry run, diff result and if no change, then there's nothing to do
# also redirect diff's output to stderr for debugging purposes
if echo "$script" | "$sed_cmd" -f - "$file_from_target" | diff -u "$file_from_target" - >&2
then
exit 0
fi
# we can't use -i, because it's not posix, so we fly with tempfile and cp
# and we use cp because we want to preserve destination file's attributes
# shellcheck disable=SC2016
echo 'tmp="$__object/tempfile"'
echo "$sed_cmd -f - '$file' > \"\$tmp\" << EOF"
echo "$script"
echo 'EOF'
echo "cp \"\$tmp\" '$file'"
# shellcheck disable=SC2016
echo 'rm -f "$tmp"'
echo 'change' >> "$__messages_out"
if [ -f "$__object/parameter/onchange" ]
then
cat "$__object/parameter/onchange"
fi

View file

@ -1,57 +0,0 @@
cdist-type__sed(7)
==================
NAME
----
cdist-type__sed - Transform text files with ``sed``
DESCRIPTION
-----------
Transform text files with ``sed``.
REQUIRED MULTIPLE PARAMETERS
----------------------------
script
``sed`` script.
If ``-`` then the script is read from ``stdin``.
OPTIONAL PARAMETERS
-------------------
file
Path to the file. Defaults to ``$__object_id``.
onchange
Execute this command if ``sed`` changes file.
BOOLEAN PARAMETERS
------------------
regexp-extended
Use extended regular expressions in the script.
Might not be supported with every ``sed`` version.
EXAMPLES
--------
.. code-block:: sh
__sed /tmp/foobar --script 's/foo/bar/'
echo 's/foo/bar/' | __sed foobar --file /tmp/foobar --script -
AUTHORS
-------
Ander Punnar <ander-at-kvlt-dot-ee>
COPYING
-------
Copyright \(C) 2021 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.

View file

@ -1 +0,0 @@
regexp-extended

View file

@ -1,2 +0,0 @@
file
onchange

View file

@ -1 +0,0 @@
script

View file

@ -1,7 +1,6 @@
#!/bin/sh -e #!/bin/sh -e
# shellcheck disable=SC1090 # shellcheck disable=SC1090
# shellcheck disable=SC1091
file="$( . "$__type_explorer/file" )" file="$( . "$__type_explorer/file" )"
if [ -f "$file" ] if [ -f "$file" ]

View file

@ -1,4 +1,4 @@
#!/bin/sh -e #!/bin/sh -e
LC_ALL=C update-alternatives --display "${__object_id:?}" 2>/dev/null \ update-alternatives --display "$__object_id" 2>/dev/null \
| awk -F ' - ' '/priority [0-9]+$/ { print $1 }' | awk -F ' - ' '/priority [0-9]+$/ { print $1 }'

View file

@ -18,12 +18,12 @@ for altdir in \
/var/lib/dpkg/alternatives \ /var/lib/dpkg/alternatives \
/var/lib/alternatives /var/lib/alternatives
do do
if [ ! -f "$altdir/${__object_id:?}" ] if [ ! -f "$altdir/$__object_id" ]
then then
continue continue
fi fi
link="$( awk 'NR==2' "$altdir/${__object_id:?}" )" link="$( awk 'NR==2' "$altdir/$__object_id" )"
if [ -n "$link" ] if [ -n "$link" ]
then then
@ -31,12 +31,9 @@ do
fi fi
done done
if [ -z "$link" ] && [ -z "${__cdist_dry_run+dry run}" ] if [ -z "$link" ]
then then
# NOTE: ignore error for dry-runs because a package providing the link echo "unable to get link for $__object_id" >&2
# might be managed by another cdist object (which wasn't executed,
# because dry run…).
echo "unable to get link for ${__object_id:?}" >&2
exit 1 exit 1
fi fi

View file

@ -1,15 +1,11 @@
#!/bin/sh -e #!/bin/sh -e
path_is=$( path_is="$( update-alternatives --display "$__object_id" 2>/dev/null \
LC_ALL=C update-alternatives --display "${__object_id?}" 2>/dev/null \ | awk '/link currently points to/ {print $5}' )"
| awk '/link currently points to/ { print $5 }')
if [ -z "$path_is" ] && [ -z "${__cdist_dry_run+dry run}" ] if [ -z "$path_is" ]
then then
# NOTE: ignore error for dry-runs because a package providing the echo "unable to get current path for $__object_id" >&2
# alternative might be managed by another cdist object (which
# wasn't executed, because dry run…).
echo "unable to get current path for ${__object_id:?}" >&2
exit 1 exit 1
fi fi

View file

@ -1,6 +1,6 @@
#!/bin/sh -e #!/bin/sh -e
if [ -f "$( cat "${__object:?}/parameter/path" )" ] if [ -f "$( cat "$__object/parameter/path" )" ]
then then
echo 'present' echo 'present'
else else

View file

@ -18,39 +18,37 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>. # along with cdist. If not, see <http://www.gnu.org/licenses/>.
path_is="$( cat "${__object:?}/explorer/path_is" )" path_is="$( cat "$__object/explorer/path_is" )"
path_should="$( cat "${__object:?}/parameter/path" )" path_should="$( cat "$__object/parameter/path" )"
if [ "$path_is" = "$path_should" ] if [ "$path_is" = "$path_should" ]
then then
exit 0 exit 0
fi fi
if [ "$( cat "${__object:?}/explorer/path_should_state" )" = 'absent' ] \ if [ "$( cat "$__object/explorer/path_should_state" )" = 'absent' ] && [ -z "$__cdist_dry_run" ]
&& [ -z "${__cdist_dry_run+dry run}" ]
then then
echo "$path_should does not exist in target" >&2 echo "$path_should does not exist in target" >&2
exit 1 exit 1
fi fi
name=${__object_id:?} name="$__object_id"
if ! grep -Fxq "$path_should" "${__object:?}/explorer/alternatives" alternatives="$( cat "$__object/explorer/alternatives" )"
if ! echo "$alternatives" | grep -Fxq "$path_should"
then then
if [ -f "${__object:?}/parameter/install" ] if [ ! -f "$__object/parameter/install" ]
then then
link="$( cat "${__object:?}/explorer/link" )"
echo "update-alternatives --install '$link' '$name' '$path_should' 1000"
elif [ -z "${__cdist_dry_run+dry run}" ]
then
# NOTE: ignore error for dry-runs because a package providing the link
# to be installed might be managed by another cdist object (which
# wasn't executed, because dry run…).
echo "$path_should is not in $name alternatives." >&2 echo "$path_should is not in $name alternatives." >&2
echo 'Please install missing packages or use --install to add path to alternatives.' >&2 echo 'Please install missing packages or use --install to add path to alternatives.' >&2
exit 1 exit 1
fi fi
link="$( cat "$__object/explorer/link" )"
echo "update-alternatives --install '$link' '$name' '$path_should' 1000"
fi fi
echo "update-alternatives --set '$name' '$path_should'" echo "update-alternatives --set '$name' '$path_should'"

View file

@ -36,27 +36,25 @@ import threading
logging.OFF = logging.CRITICAL + 10 # disable logging logging.OFF = logging.CRITICAL + 10 # disable logging
logging.addLevelName(logging.OFF, 'OFF') logging.addLevelName(logging.OFF, 'OFF')
logging.VERBOSE = logging.INFO - 5 logging.VERBOSE = logging.INFO - 5
logging.addLevelName(logging.VERBOSE, 'VERBOSE') logging.addLevelName(logging.VERBOSE, 'VERBOSE')
def _verbose(self, msg, *args, **kwargs): def _verbose(msg, *args, **kwargs):
self.log(logging.VERBOSE, msg, args, **kwargs) logging.log(logging.VERBOSE, msg, *args, **kwargs)
logging.Logger.verbose = _verbose logging.verbose = _verbose
logging.TRACE = logging.DEBUG - 5 logging.TRACE = logging.DEBUG - 5
logging.addLevelName(logging.TRACE, 'TRACE') logging.addLevelName(logging.TRACE, 'TRACE')
def _trace(self, msg, *args, **kwargs): def _trace(msg, *args, **kwargs):
self.log(logging.TRACE, msg, *args, **kwargs) logging.log(logging.TRACE, msg, *args, **kwargs)
logging.Logger.trace = _trace logging.trace = _trace
class CdistFormatter(logging.Formatter): class CdistFormatter(logging.Formatter):

View file

@ -1,29 +1,6 @@
Changelog Changelog
--------- ---------
next:
* Explorer machine_type: Rewrite (Dennis Camera)
* New type: __sed (Ander Punnar)
* Type __apt_update_index: Fix complaint about suite change (Matthias Stecher)
* Type __package_update_index: Fix complaint about suite change (Matthias Stecher)
* Type __apt_source: Fix complaint about suite change (Matthias Stecher)
* Type __package_apt: Fix complaint about suite change (Matthias Stecher)
* Type __debconf_set_selections: Fix bug where --file was unsupported (Evilham)
* Types __letsencrypt_cert, __grafana_dashboard: Improve bullseye support (Evilham)
6.9.8: 2021-08-24
* Type __rsync: Rewrite (Ander Punnar)
* New type: __apt_pin (Daniel Fancsali)
* Explorer os_version: Convert Devuan ceres to version number (Dennis Camera)
* Core: Fix logging bug (Dennis Camera)
* Build: Improve Makefile compatibility (Evilham)
* Type __filesystem: Support ubuntu (Joachim Desroches)
* Explorer os_version: Fall back to os-release/lsb-release file on Ubuntu (Dennis Camera)
* Explorer memory: Fix conversion of large numbers (>= 2GiB) (Dennis Camera)
* Type __update_alternatives: Fix dry run and non-English systems (Dennis Camera)
* Explorer os_version: Fix for FreeBSD < 10.0 and for legacy Mac OS X versions (Dennis Camera)
* Explorer os_version: Add bookworm and trixie debian code names, fallback to 99.99 for unknown code name in sid (Ander Punnar)
6.9.7: 2021-07-10 6.9.7: 2021-07-10
* New type: __postgres_conf (Beni Ruef, Dennis Camera) * New type: __postgres_conf (Beni Ruef, Dennis Camera)
* Types __postgres_*: Improve OS support and do some cleanup (Dennis Camera) * Types __postgres_*: Improve OS support and do some cleanup (Dennis Camera)
@ -165,7 +142,7 @@ next:
* Type __pf_ruleset: Refactor (Kamila Součková, Evil Ham) * Type __pf_ruleset: Refactor (Kamila Součková, Evil Ham)
* Type __pf_apply: Deprecate type (Kamila Součková, Evil Ham) * Type __pf_apply: Deprecate type (Kamila Součková, Evil Ham)
* Configuration: Add notes to cdist.cfg.skeleton (Evil Ham) * Configuration: Add notes to cdist.cfg.skeleton (Evil Ham)
* Explorers cpu_cores, memory: Improve BSD support (Evil Ham) * Explorers cpu_cores, memory: Improve *BSD support (Evil Ham)
* Core: Remove debug logging noise (Evil Ham) * Core: Remove debug logging noise (Evil Ham)
6.5.4: 2020-04-11 6.5.4: 2020-04-11
@ -230,7 +207,7 @@ next:
* Documentation: PreOS english nitpicking (Evil Ham) * Documentation: PreOS english nitpicking (Evil Ham)
* Documentation: Add installing from source with signature verification (Darko Poljak) * Documentation: Add installing from source with signature verification (Darko Poljak)
* Core: preos: Support top command logging options, custom conf-dir option and CDIST_PATH env var (Darko Poljak) * Core: preos: Support top command logging options, custom conf-dir option and CDIST_PATH env var (Darko Poljak)
* Type __start_on_boot: Docs: remove unsupported BSD claim (Evil Ham) * Type __start_on_boot: Docs: remove unsupported *BSD claim (Evil Ham)
* New type: __openldap_server (Evil Ham) * New type: __openldap_server (Evil Ham)
6.2.0: 2019-11-30 6.2.0: 2019-11-30

View file

@ -12,7 +12,7 @@ This is the machine from which you will configure target hosts.
* /bin/sh: A POSIX like shell (for instance bash, dash, zsh) * /bin/sh: A POSIX like shell (for instance bash, dash, zsh)
* Python >= 3.5 * Python >= 3.5
* SSH client * SSH client
* sphinx with the rtd theme (for building html docs and/or the man pages) * sphinx (for building html docs and/or the man pages)
Target Hosts Target Hosts
~~~~~~~~~~~~ ~~~~~~~~~~~~

View file

@ -56,7 +56,7 @@ master_doc = 'index'
# General information about the project. # General information about the project.
project = 'cdist' project = 'cdist'
copyright = 'ungleich GmbH 2021' copyright = 'ungleich GmbH 2020'
# author = 'Darko Poljak' # author = 'Darko Poljak'
# The version info for the project you're documenting, acts as replacement for # The version info for the project you're documenting, acts as replacement for