forked from ungleich-public/cdist
Merge branch 'master' into preos
This commit is contained in:
commit
3b4258c34e
131 changed files with 1636 additions and 272 deletions
13
Makefile
13
Makefile
|
@ -20,6 +20,13 @@
|
||||||
|
|
||||||
A2XM=a2x -f manpage --no-xmllint -a encoding=UTF-8
|
A2XM=a2x -f manpage --no-xmllint -a encoding=UTF-8
|
||||||
A2XH=a2x -f xhtml --no-xmllint -a encoding=UTF-8
|
A2XH=a2x -f xhtml --no-xmllint -a encoding=UTF-8
|
||||||
|
# Create cross-links in html man pages
|
||||||
|
# We look for something like "cdist-type(7)" and make a href out of it
|
||||||
|
# The first matching group is the man page name and the second group
|
||||||
|
# is the man page section (1 or 7). The first three lines of the input
|
||||||
|
# (xml, DOCTYPE, head tags) are ignored, since the head tags contains
|
||||||
|
# the title of the page and should not contain a href.
|
||||||
|
CROSSLINK=sed --in-place '1,3!s/\([[:alnum:]_-]*\)(\([17]\))/<a href="..\/man\2\/\1.html">&<\/a>/g'
|
||||||
helper=./bin/build-helper
|
helper=./bin/build-helper
|
||||||
|
|
||||||
MANDIR=docs/man
|
MANDIR=docs/man
|
||||||
|
@ -86,6 +93,7 @@ MANSTATICALL=$(MANSTATICMAN) $(MANSTATICHTML)
|
||||||
# Creating the type html page
|
# Creating the type html page
|
||||||
%.html: %.text
|
%.html: %.text
|
||||||
$(A2XH) $^
|
$(A2XH) $^
|
||||||
|
$(CROSSLINK) $@
|
||||||
|
|
||||||
man: $(MANTYPEALL) $(MANREFALL) $(MANSTATICALL)
|
man: $(MANTYPEALL) $(MANREFALL) $(MANSTATICALL)
|
||||||
|
|
||||||
|
@ -99,7 +107,7 @@ man-dist: man check-date
|
||||||
cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7
|
cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7
|
||||||
cd ${MANWEBDIR} && git add . && git commit -m "cdist manpages update: $(CHANGELOG_VERSION)" || true
|
cd ${MANWEBDIR} && git add . && git commit -m "cdist manpages update: $(CHANGELOG_VERSION)" || true
|
||||||
|
|
||||||
man-fix-link: web-pub
|
man-latest-link: web-pub
|
||||||
# Fix ikiwiki, which does not like symlinks for pseudo security
|
# Fix ikiwiki, which does not like symlinks for pseudo security
|
||||||
ssh tee.schottelius.org \
|
ssh tee.schottelius.org \
|
||||||
"cd /home/services/www/nico/www.nico.schottelius.org/www/software/cdist/man && rm -f latest && ln -sf "$(CHANGELOG_VERSION)" latest"
|
"cd /home/services/www/nico/www.nico.schottelius.org/www/software/cdist/man && rm -f latest && ln -sf "$(CHANGELOG_VERSION)" latest"
|
||||||
|
@ -146,7 +154,8 @@ web-dist: web-blog web-doc
|
||||||
web-pub: web-dist man-dist speeches-dist
|
web-pub: web-dist man-dist speeches-dist
|
||||||
cd "${WEBDIR}" && make pub
|
cd "${WEBDIR}" && make pub
|
||||||
|
|
||||||
web-release-all: man-fix-link
|
web-release-all: man-latest-link
|
||||||
|
web-release-all-no-latest: web-pub
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Release: Mailinglist
|
# Release: Mailinglist
|
||||||
|
|
|
@ -104,6 +104,11 @@ eof
|
||||||
;;
|
;;
|
||||||
|
|
||||||
ml-release)
|
ml-release)
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "$0 ml-release version" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
version=$1; shift
|
version=$1; shift
|
||||||
|
|
||||||
to_a=cdist
|
to_a=cdist
|
||||||
|
@ -142,40 +147,22 @@ eof
|
||||||
|
|
||||||
freecode-release)
|
freecode-release)
|
||||||
version=$1; shift
|
version=$1; shift
|
||||||
api_token=$(awk '/machine freecode login/ { print $8 }' ~/.netrc)
|
|
||||||
|
|
||||||
printf "Enter tag list for freecode release %s> " "$version"
|
printf "Enter tag list for freecode release %s> " "$version"
|
||||||
read taglist
|
read taglist
|
||||||
|
|
||||||
printf "Enter changelog for freecode release %s> " "$version"
|
printf "Enter changelog for freecode release %s> " "$version"
|
||||||
read changelog
|
read changelog
|
||||||
|
|
||||||
echo "Submit preview"
|
echo "Submitting to freecode ..."
|
||||||
cat << eof
|
python2 ~/p/foreign/freecode-submit-2.7/freecode-submit -P cdist \
|
||||||
tag_list = $taglist
|
-v "$version" -c "$changelog" \
|
||||||
changelog = $changelog
|
-t "$taglist" \
|
||||||
version = $version
|
-n
|
||||||
eof
|
|
||||||
printf "Press enter to submit to freecode> "
|
|
||||||
read dummy
|
|
||||||
|
|
||||||
cat << eof | cfreecode-api release-add cdist
|
|
||||||
{
|
|
||||||
"auth_code": "$api_token",
|
|
||||||
"release": {
|
|
||||||
"tag_list": "$taglist",
|
|
||||||
"version": "$version",
|
|
||||||
"changelog": "$changelog",
|
|
||||||
"hidden_from_frontpage": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
eof
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
release-git-tag)
|
release-git-tag)
|
||||||
target_version=$($0 changelog-version)
|
target_version=$($0 changelog-version)
|
||||||
if git rev-parse --verify refs/tags/$target_version; then
|
if git rev-parse --verify refs/tags/$target_version 2>/dev/null; then
|
||||||
echo "Tag for $target_version exists, aborting"
|
echo "Tag for $target_version exists, aborting"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -256,7 +243,11 @@ eof
|
||||||
make pub
|
make pub
|
||||||
|
|
||||||
# publish man, speeches, website
|
# publish man, speeches, website
|
||||||
|
if [ "$masterbranch" = yes ]; then
|
||||||
make web-release-all
|
make web-release-all
|
||||||
|
else
|
||||||
|
make web-release-all-no-latest
|
||||||
|
fi
|
||||||
|
|
||||||
# Ensure that pypi release has the right version
|
# Ensure that pypi release has the right version
|
||||||
"$0" version
|
"$0" version
|
||||||
|
|
31
cdist/conf/explorer/cpu_cores
Executable file
31
cdist/conf/explorer/cpu_cores
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 Daniel Heule (hda at sfs.biz)
|
||||||
|
# 2014 Thomas Oettli (otho at sfs.biz)
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
# FIXME: other system types (not linux ...)
|
||||||
|
|
||||||
|
if [ -r /proc/cpuinfo ]; then
|
||||||
|
cores="$(cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l)"
|
||||||
|
if [ ${cores} -eq 0 ]; then
|
||||||
|
cores="1"
|
||||||
|
fi
|
||||||
|
echo "${cores}"
|
||||||
|
fi
|
31
cdist/conf/explorer/cpu_sockets
Executable file
31
cdist/conf/explorer/cpu_sockets
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 Daniel Heule (hda at sfs.biz)
|
||||||
|
# 2014 Thomas Oettli (otho at sfs.biz)
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
# FIXME: other system types (not linux ...)
|
||||||
|
|
||||||
|
if [ -r /proc/cpuinfo ]; then
|
||||||
|
sockets="$(cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)"
|
||||||
|
if [ ${sockets} -eq 0 ]; then
|
||||||
|
sockets="$(cat /proc/cpuinfo | grep "processor" | wc -l)"
|
||||||
|
fi
|
||||||
|
echo "${sockets}"
|
||||||
|
fi
|
|
@ -24,12 +24,12 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
# Use ip, if available
|
# Use ip, if available
|
||||||
if command -v ip; then
|
if command -v ip >/dev/null; then
|
||||||
ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
|
ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v ifconfig; then
|
if ! command -v ifconfig >/dev/null; then
|
||||||
# no ifconfig, nothing we could do
|
# no ifconfig, nothing we could do
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
54
cdist/conf/explorer/machine_type
Executable file
54
cdist/conf/explorer/machine_type
Executable file
|
@ -0,0 +1,54 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 Daniel Heule (hda at sfs.biz)
|
||||||
|
# 2014 Thomas Oettli (otho at sfs.biz)
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
# FIXME: other system types (not linux ...)
|
||||||
|
|
||||||
|
if [ -r /proc/cpuinfo ]; then
|
||||||
|
# this should only exist on virtual guest machines,
|
||||||
|
# tested on vmware, xen, kvm
|
||||||
|
if grep -q "hypervisor" /proc/cpuinfo; then
|
||||||
|
# this file is aviable in xen guest systems
|
||||||
|
if [ -r /sys/hypervisor/type ]; then
|
||||||
|
if grep -q -i "xen" /sys/hypervisor/type; then
|
||||||
|
echo virtual_by_xen
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -r /sys/class/dmi/id/product_name ]; then
|
||||||
|
if grep -q -i 'vmware' /sys/class/dmi/id/product_name; then
|
||||||
|
echo "virtual_by_vmware"
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
if grep -q -i 'bochs' /sys/class/dmi/id/product_name; then
|
||||||
|
echo "virtual_by_kvm"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "virtual_by_unknown"
|
||||||
|
else
|
||||||
|
echo "physical"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "unknown"
|
||||||
|
fi
|
27
cdist/conf/explorer/memory
Executable file
27
cdist/conf/explorer/memory
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 Daniel Heule (hda at sfs.biz)
|
||||||
|
# 2014 Thomas Oettli (otho at sfs.biz)
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
# FIXME: other system types (not linux ...)
|
||||||
|
|
||||||
|
if [ -r /proc/meminfo ]; then
|
||||||
|
echo "$(cat /proc/meminfo | grep "MemTotal:" | awk '{print $2}')"
|
||||||
|
fi
|
|
@ -25,7 +25,7 @@ destination="/$__object_id"
|
||||||
|
|
||||||
os=$("$__explorer/os")
|
os=$("$__explorer/os")
|
||||||
case "$os" in
|
case "$os" in
|
||||||
"freebsd")
|
"freebsd"|"openbsd")
|
||||||
# FIXME: should be something like this based on man page, but can not test
|
# FIXME: should be something like this based on man page, but can not test
|
||||||
stat -f "type: %ST
|
stat -f "type: %ST
|
||||||
owner: %Du %Su
|
owner: %Du %Su
|
||||||
|
@ -34,6 +34,15 @@ mode: %Op %Sp
|
||||||
size: %Dz
|
size: %Dz
|
||||||
links: %Dl
|
links: %Dl
|
||||||
" "$destination"
|
" "$destination"
|
||||||
|
;;
|
||||||
|
"macosx")
|
||||||
|
stat -f "type: %HT
|
||||||
|
owner: %Du %Su
|
||||||
|
group: %Dg %Sg
|
||||||
|
mode: %Lp %Sp
|
||||||
|
size: %Dz
|
||||||
|
links: %Dl
|
||||||
|
" "$destination"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
stat --printf="type: %F
|
stat --printf="type: %F
|
||||||
|
|
|
@ -25,13 +25,20 @@ destination="/$__object_id"
|
||||||
|
|
||||||
os=$("$__explorer/os")
|
os=$("$__explorer/os")
|
||||||
case "$os" in
|
case "$os" in
|
||||||
"freebsd")
|
"freebsd"|"openbsd")
|
||||||
# FIXME: should be something like this based on man page, but can not test
|
# FIXME: should be something like this based on man page, but can not test
|
||||||
stat -f "type: %ST
|
stat -f "type: %ST
|
||||||
owner: %Du %Su
|
owner: %Du %Su
|
||||||
group: %Dg %Sg
|
group: %Dg %Sg
|
||||||
mode: %Op %Sp
|
mode: %Op %Sp
|
||||||
" "$destination"
|
" "$destination"
|
||||||
|
;;
|
||||||
|
"macosx")
|
||||||
|
stat -f "type: %HT
|
||||||
|
owner: %Du %Su
|
||||||
|
group: %Dg %Sg
|
||||||
|
mode: %Lp %Sp
|
||||||
|
" "$destination"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
stat --printf="type: %F
|
stat --printf="type: %F
|
||||||
|
|
23
cdist/conf/type/__dog_vdi/explorer/list
Executable file
23
cdist/conf/type/__dog_vdi/explorer/list
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
name="$__object_id"
|
||||||
|
|
||||||
|
dog vdi list -r "$name"
|
42
cdist/conf/type/__dog_vdi/gencode-remote
Normal file
42
cdist/conf/type/__dog_vdi/gencode-remote
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
|
num_vdi_lines=$(wc -l < "$__object/explorer/list")
|
||||||
|
name="$__object_id"
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$num_vdi_lines" = 1 ]; then
|
||||||
|
state_is=present
|
||||||
|
else
|
||||||
|
state_is=absent
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ "$state_is" = "$state_should" ] && exit 0
|
||||||
|
|
||||||
|
case "$state_should" in
|
||||||
|
present)
|
||||||
|
size="$(cat "$__object/parameter/size")"
|
||||||
|
echo "dog vdi create '$name' '$size'"
|
||||||
|
;;
|
||||||
|
absent)
|
||||||
|
echo "dog vdi delete '$name'"
|
||||||
|
;;
|
||||||
|
esac
|
56
cdist/conf/type/__dog_vdi/man.text
Normal file
56
cdist/conf/type/__dog_vdi/man.text
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
cdist-type__dog_vdi(7)
|
||||||
|
======================
|
||||||
|
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
cdist-type__dog_vdi - Manage Sheepdog VM images
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
The dog program is used to create images for sheepdog
|
||||||
|
to be used in qemu.
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONAL PARAMETERS
|
||||||
|
-------------------
|
||||||
|
state::
|
||||||
|
Either "present" or "absent", defaults to "present"
|
||||||
|
size::
|
||||||
|
Size of the image in "dog vdi" compatible units.
|
||||||
|
|
||||||
|
Required if state is "present".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
--------
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
# Create a 50G size image
|
||||||
|
__dog_vdi nico-privat.sky.ungleich.ch --size 50G
|
||||||
|
|
||||||
|
# Create a 50G size image (more explicit)
|
||||||
|
__dog_vdi nico-privat.sky.ungleich.ch --size 50G --state present
|
||||||
|
|
||||||
|
# Remove image
|
||||||
|
__dog_vdi nico-privat.sky.ungleich.ch --state absent
|
||||||
|
|
||||||
|
# Remove image - keeping --size is ok
|
||||||
|
__dog_vdi nico-privat.sky.ungleich.ch --size 50G --state absent
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
- cdist-type(7)
|
||||||
|
- dog(8)
|
||||||
|
- qemu(1)
|
||||||
|
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
-------
|
||||||
|
Copyright \(C) 2014 Nico Schottelius. Free use of this software is
|
||||||
|
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
37
cdist/conf/type/__dog_vdi/manifest
Normal file
37
cdist/conf/type/__dog_vdi/manifest
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
|
|
||||||
|
case "$state_should" in
|
||||||
|
present)
|
||||||
|
if [ ! -f "$__object/parameter/size" ]; then
|
||||||
|
echo "Size is required when state is present" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
absent)
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported state: $state_should" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
1
cdist/conf/type/__dog_vdi/parameter/default/state
Normal file
1
cdist/conf/type/__dog_vdi/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
2
cdist/conf/type/__dog_vdi/parameter/optional
Normal file
2
cdist/conf/type/__dog_vdi/parameter/optional
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
state
|
||||||
|
size
|
|
@ -25,7 +25,7 @@ destination="/$__object_id"
|
||||||
|
|
||||||
os=$("$__explorer/os")
|
os=$("$__explorer/os")
|
||||||
case "$os" in
|
case "$os" in
|
||||||
"freebsd")
|
"freebsd"|"openbsd")
|
||||||
# FIXME: should be something like this based on man page, but can not test
|
# FIXME: should be something like this based on man page, but can not test
|
||||||
stat -f "type: %ST
|
stat -f "type: %ST
|
||||||
owner: %Du %Su
|
owner: %Du %Su
|
||||||
|
@ -33,6 +33,15 @@ group: %Dg %Sg
|
||||||
mode: %Op %Sp
|
mode: %Op %Sp
|
||||||
size: %Dz
|
size: %Dz
|
||||||
links: %Dl
|
links: %Dl
|
||||||
|
" "$destination"
|
||||||
|
;;
|
||||||
|
"macosx")
|
||||||
|
stat -f "type: %HT
|
||||||
|
owner: %Du %Su
|
||||||
|
group: %Dg %Sg
|
||||||
|
mode: %Lp %Sp
|
||||||
|
size: %Dz
|
||||||
|
links: %Dl
|
||||||
" "$destination"
|
" "$destination"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
|
@ -26,6 +26,7 @@ state::
|
||||||
|
|
||||||
branch::
|
branch::
|
||||||
Create this branch by checking out the remote branch of this name
|
Create this branch by checking out the remote branch of this name
|
||||||
|
Default branch is "master"
|
||||||
|
|
||||||
group::
|
group::
|
||||||
Group to chgrp to.
|
Group to chgrp to.
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
__package git --state present
|
__package git --state present
|
||||||
|
|
||||||
state_should="$(cat "$__object/parameter/state")"
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
|
owner="$(cat "$__object/parameter/owner")"
|
||||||
|
group="$(cat "$__object/parameter/group")"
|
||||||
|
mode="$(cat "$__object/parameter/mode")"
|
||||||
|
|
||||||
# Let __directory handle removal of git repos
|
# Let __directory handle removal of git repos
|
||||||
|
|
||||||
|
@ -33,7 +36,10 @@ case "$state_should" in
|
||||||
;;
|
;;
|
||||||
|
|
||||||
absent)
|
absent)
|
||||||
__directory "$__object_id" --state absent
|
__directory "$__object_id" --state absent \
|
||||||
|
--owner "$owner" \
|
||||||
|
--group "$group" \
|
||||||
|
--mode "$mode"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|
|
@ -21,6 +21,10 @@
|
||||||
# Retrieve the contents of /etc/hostname
|
# Retrieve the contents of /etc/hostname
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Almost any distribution
|
||||||
if [ -f /etc/hostname ]; then
|
if [ -f /etc/hostname ]; then
|
||||||
cat /etc/hostname
|
cat /etc/hostname
|
||||||
|
# SuSE
|
||||||
|
elif [ -f /etc/HOSTNAME ]; then
|
||||||
|
cat /etc/HOSTNAME
|
||||||
fi
|
fi
|
||||||
|
|
26
cdist/conf/type/__hostname/explorer/hostname_sysconfig
Executable file
26
cdist/conf/type/__hostname/explorer/hostname_sysconfig
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Retrieve the contents of /etc/hostname
|
||||||
|
#
|
||||||
|
|
||||||
|
if [ -f /etc/sysconfig/network ]; then
|
||||||
|
awk -F= '/^HOSTNAME=/ { print $2 }' /etc/sysconfig/network
|
||||||
|
fi
|
|
@ -28,14 +28,28 @@ fi
|
||||||
os=$(cat "$__global/explorer/os")
|
os=$(cat "$__global/explorer/os")
|
||||||
name_running=$(cat "$__global/explorer/hostname")
|
name_running=$(cat "$__global/explorer/hostname")
|
||||||
name_config=$(cat "$__object/explorer/hostname_file")
|
name_config=$(cat "$__object/explorer/hostname_file")
|
||||||
|
name_sysconfig=$(cat "$__object/explorer/hostname_sysconfig")
|
||||||
has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl")
|
has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl")
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# If everything is ok -> exit
|
# If everything is ok -> exit
|
||||||
#
|
#
|
||||||
if [ "$name_config" = "$name_should" -a "$name_running" = "$name_should" ]; then
|
case "$os" in
|
||||||
|
archlinux|debian|suse|ubuntu)
|
||||||
|
if [ "$name_config" = "$name_should" -a "$name_running" = "$name_should" ]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
;;
|
||||||
|
centos)
|
||||||
|
if [ "$name_sysconfig" = "$name_should" -a "$name_running" = "$name_should" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported os: $os" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Setup hostname
|
# Setup hostname
|
||||||
|
@ -45,6 +59,17 @@ echo changed >> "$__messages_out"
|
||||||
if [ "$has_hostnamectl" ]; then
|
if [ "$has_hostnamectl" ]; then
|
||||||
echo "hostnamectl set-hostname '$name_should'"
|
echo "hostnamectl set-hostname '$name_should'"
|
||||||
else
|
else
|
||||||
|
case "$os" in
|
||||||
|
archlinux|debian|ubuntu)
|
||||||
echo "hostname '$name_should'"
|
echo "hostname '$name_should'"
|
||||||
echo "printf '%s\n' '$name_should' > /etc/hostname"
|
echo "printf '%s\n' '$name_should' > /etc/hostname"
|
||||||
|
;;
|
||||||
|
centos)
|
||||||
|
echo "hostname '$name_should'"
|
||||||
|
;;
|
||||||
|
suse)
|
||||||
|
echo "hostname '$name_should'"
|
||||||
|
echo "printf '%s\n' '$name_should' > /etc/HOSTNAME"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -20,6 +20,12 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
os=$(cat "$__global/explorer/os")
|
os=$(cat "$__global/explorer/os")
|
||||||
|
if [ -f "$__object/parameter/name" ]; then
|
||||||
|
name_should="$(cat "$__object/parameter/name")"
|
||||||
|
else
|
||||||
|
name_should="$(echo "${__target_host%%.*}")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
not_supported() {
|
not_supported() {
|
||||||
echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
|
echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
|
||||||
|
@ -28,10 +34,17 @@ not_supported() {
|
||||||
}
|
}
|
||||||
|
|
||||||
case "$os" in
|
case "$os" in
|
||||||
archlinux|debian|ubuntu)
|
archlinux|debian|suse|ubuntu)
|
||||||
# handled in gencode-remote
|
# handled in gencode-remote
|
||||||
:
|
:
|
||||||
;;
|
;;
|
||||||
|
centos)
|
||||||
|
__key_value sysconfig-hostname \
|
||||||
|
--file /etc/sysconfig/network \
|
||||||
|
--delimiter '=' \
|
||||||
|
--key HOSTNAME \
|
||||||
|
--value "$name_should" --exact_delimiter
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
not_supported
|
not_supported
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -41,7 +41,7 @@ __iptables_rule established --rule "-A INPUT -m state --state RELATED,ESTABLISH
|
||||||
|
|
||||||
# Some service rules
|
# Some service rules
|
||||||
__iptables_rule http --rule "-A INPUT -p tcp --dport 80 -j ACCEPT"
|
__iptables_rule http --rule "-A INPUT -p tcp --dport 80 -j ACCEPT"
|
||||||
__iptables_rule ssh --rule "-A INPUT -p tcp --dport 80 -j ACCEPT"
|
__iptables_rule ssh --rule "-A INPUT -p tcp --dport 22 -j ACCEPT"
|
||||||
__iptables_rule https --rule "-A INPUT -p tcp --dport 443 -j ACCEPT"
|
__iptables_rule https --rule "-A INPUT -p tcp --dport 443 -j ACCEPT"
|
||||||
|
|
||||||
# Ensure some rules are not present anymore
|
# Ensure some rules are not present anymore
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#set -x
|
#set -x
|
||||||
|
|
||||||
if [ -f "$__object/parameter/jaildir" ]; then
|
if [ -f "$__object/parameter/jaildir" ]; then
|
||||||
jaildir="$(cat "$__object/parameter/name")"
|
jaildir="$(cat "$__object/parameter/jaildir")"
|
||||||
else
|
else
|
||||||
jaildir="/usr/jail"
|
jaildir="/usr/jail"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -32,7 +32,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "$__object/parameter/jaildir" ]; then
|
if [ -f "$__object/parameter/jaildir" ]; then
|
||||||
jaildir="$(cat "$__object/parameter/name")"
|
jaildir="$(cat "$__object/parameter/jaildir")"
|
||||||
else
|
else
|
||||||
jaildir="/usr/jail"
|
jaildir="/usr/jail"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -32,14 +32,14 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "$__object/parameter/jaildir" ]; then
|
if [ -f "$__object/parameter/jaildir" ]; then
|
||||||
jaildir="$(cat "$__object/parameter/name")"
|
jaildir="$(cat "$__object/parameter/jaildir")"
|
||||||
else
|
else
|
||||||
jaildir="/usr/jail"
|
jaildir="/usr/jail"
|
||||||
fi
|
fi
|
||||||
# backslash-escaped $jaildir
|
# backslash-escaped $jaildir
|
||||||
sjaildir="$(echo ${jaildir} | sed 's#/#\\/#g')"
|
sjaildir="$(echo ${jaildir} | sed 's#/#\\/#g')"
|
||||||
|
|
||||||
jls_output="$(jls | grep "[ ^I]${sjaildir}\/${name}\$")" || true
|
jls_output="$(jls | grep "[ ]${sjaildir}\/${name}\$")" || true
|
||||||
|
|
||||||
if [ -n "${jls_output}" ]; then
|
if [ -n "${jls_output}" ]; then
|
||||||
echo "STARTED"
|
echo "STARTED"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2012 Jake Guffey (jake.guffey at eprotex.com)
|
# 2012,2014 Jake Guffey (jake.guffey at eprotex.com)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -104,6 +104,7 @@ stopJail() {
|
||||||
# Check $status before issuing command
|
# Check $status before issuing command
|
||||||
if [ "$status" = "STARTED" ]; then
|
if [ "$status" = "STARTED" ]; then
|
||||||
echo "/etc/rc.d/jail stop ${name}"
|
echo "/etc/rc.d/jail stop ${name}"
|
||||||
|
echo "stop" >> "$__messages_out"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,6 +112,7 @@ startJail() {
|
||||||
# Check $status before issuing command
|
# Check $status before issuing command
|
||||||
if [ "$status" = "NOTSTART" ]; then
|
if [ "$status" = "NOTSTART" ]; then
|
||||||
echo "/etc/rc.d/jail start ${name}"
|
echo "/etc/rc.d/jail start ${name}"
|
||||||
|
echo "start" >> "$__messages_out"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,6 +164,7 @@ EOF
|
||||||
rm -f /etc/rc.conf.bak
|
rm -f /etc/rc.conf.bak
|
||||||
fi
|
fi
|
||||||
EOF
|
EOF
|
||||||
|
echo "delete" >> "$__messages_out"
|
||||||
}
|
}
|
||||||
|
|
||||||
createJail() {
|
createJail() {
|
||||||
|
@ -215,6 +218,7 @@ cat <<EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
echo "create" >> "$__messages_out"
|
||||||
|
|
||||||
# Create the ro+rw mountpoint entries in fstab
|
# Create the ro+rw mountpoint entries in fstab
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
@ -310,6 +314,7 @@ if [ "$onboot" = "yes" ]; then
|
||||||
fi
|
fi
|
||||||
unset jail_list
|
unset jail_list
|
||||||
EOF
|
EOF
|
||||||
|
echo "onboot" >> "$__messages_out"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add the normal entries into the jail's rc.conf
|
# Add the normal entries into the jail's rc.conf
|
||||||
|
|
|
@ -16,7 +16,7 @@ This type is used on FreeBSD to manage jails.
|
||||||
REQUIRED PARAMETERS
|
REQUIRED PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent."
|
Either "present" or "absent", defaults to "present".
|
||||||
|
|
||||||
jailbase::
|
jailbase::
|
||||||
The location of the .tgz archive containing the base fs for your jails.
|
The location of the .tgz archive containing the base fs for your jails.
|
||||||
|
@ -67,6 +67,19 @@ be removed then re-added with the correct IP address/netmask or the appropriate
|
||||||
line (jail_<name>_ip="...") modified within rc.conf through some alternate
|
line (jail_<name>_ip="...") modified within rc.conf through some alternate
|
||||||
means.
|
means.
|
||||||
|
|
||||||
|
MESSAGES
|
||||||
|
--------
|
||||||
|
start::
|
||||||
|
The jail was started
|
||||||
|
stop::
|
||||||
|
The jail was stopped
|
||||||
|
create:
|
||||||
|
The jail was created
|
||||||
|
delete::
|
||||||
|
The jail was deleted
|
||||||
|
onboot::
|
||||||
|
The jail was configured to start on boot
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
|
1
cdist/conf/type/__jail/parameter/default/state
Normal file
1
cdist/conf/type/__jail/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
|
@ -5,3 +5,4 @@ interface
|
||||||
devfs-ruleset
|
devfs-ruleset
|
||||||
jaildir
|
jaildir
|
||||||
jailbase
|
jailbase
|
||||||
|
state
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
|
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
|
# 2014 Daniel Heule (hda at sfs.biz)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -18,36 +19,85 @@
|
||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
key="$(cat "$__object/parameter/key" 2>/dev/null \
|
export key="$(cat "$__object/parameter/key" 2>/dev/null \
|
||||||
|| echo "$__object_id")"
|
|| echo "$__object_id")"
|
||||||
state="$(cat "$__object/parameter/state" 2>/dev/null \
|
export state="$(cat "$__object/parameter/state")"
|
||||||
|| echo "present")"
|
|
||||||
file="$(cat "$__object/parameter/file")"
|
|
||||||
delimiter="$(cat "$__object/parameter/delimiter")"
|
|
||||||
value="$(cat "$__object/parameter/value" 2>/dev/null \
|
|
||||||
|| echo "__CDIST_NOTSET__")"
|
|
||||||
|
|
||||||
case "$state" in
|
file="$(cat "$__object/parameter/file")"
|
||||||
absent)
|
|
||||||
if grep -q -E "^$key$delimiter+" "$file"; then
|
if [ ! -f "$file" ]; then
|
||||||
# if the key exists, with whatever value, we will have to remove it
|
echo "nosuchfile"
|
||||||
# so report it as present
|
exit
|
||||||
echo present
|
fi
|
||||||
else
|
|
||||||
# key does not exist
|
export delimiter="$(cat "$__object/parameter/delimiter")"
|
||||||
echo absent
|
export value="$(cat "$__object/parameter/value" 2>/dev/null \
|
||||||
fi
|
|| echo "__CDIST_NOTSET__")"
|
||||||
;;
|
if [ -f "$__object/parameter/exact_delimiter" ]; then
|
||||||
present)
|
export exact_delimiter=1
|
||||||
if grep -q -E "^$key$delimiter+$value$" "$file"; then
|
else
|
||||||
# key exists and value is same
|
export exact_delimiter=0
|
||||||
echo present
|
fi
|
||||||
elif grep -q -E "^$key$delimiter+" "$file"; then
|
|
||||||
# key exists, but value is empty or different
|
awk -f - "$file" <<"AWK_EOF"
|
||||||
echo wrongvalue
|
BEGIN {
|
||||||
else
|
state=ENVIRON["state"]
|
||||||
# key does not exist
|
key=ENVIRON["key"]
|
||||||
echo absent
|
delimiter=ENVIRON["delimiter"]
|
||||||
fi
|
value=ENVIRON["value"]
|
||||||
;;
|
exact_delimiter=ENVIRON["exact_delimiter"]
|
||||||
esac
|
found=0
|
||||||
|
}
|
||||||
|
# enter the main loop
|
||||||
|
{
|
||||||
|
i = index($0,key)
|
||||||
|
if(i == 1) {
|
||||||
|
delval = substr($0,length(key)+1)
|
||||||
|
delpos = index(delval,delimiter)
|
||||||
|
if(delpos == 0) {
|
||||||
|
# in this case, the delimiter was not found
|
||||||
|
next
|
||||||
|
}
|
||||||
|
if(delpos > 1) {
|
||||||
|
spaces = substr(delval,1,delpos-1)
|
||||||
|
sub(/[ \t]*/,"",spaces)
|
||||||
|
if( length(spaces) > 0 ) {
|
||||||
|
# if there are not only spaces between key and delimiter,
|
||||||
|
# continue since we we are on the wrong line
|
||||||
|
next
|
||||||
|
}
|
||||||
|
if( exact_delimiter == 1) {
|
||||||
|
# we have key and delimiter, but since additional spaces are not alowed
|
||||||
|
# return wrongformat
|
||||||
|
found=1
|
||||||
|
print "wrongformat"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
found=1
|
||||||
|
if(state == "absent") {
|
||||||
|
# on state absent, only the ocurance is relevant, so exit here
|
||||||
|
print "present"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
linevalue=substr(delval,delpos + length(delimiter))
|
||||||
|
if(exact_delimiter == 0){
|
||||||
|
#ok, now strip tabs and whitespaces at the beginning of the value
|
||||||
|
sub(/[ \t]*/,"",linevalue)
|
||||||
|
}
|
||||||
|
# Key with separator found
|
||||||
|
if(linevalue == value) {
|
||||||
|
# exact match found, so state is present
|
||||||
|
print "present"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "wrongvalue"
|
||||||
|
}
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if(found == 0)
|
||||||
|
print "absent"
|
||||||
|
}
|
||||||
|
AWK_EOF
|
||||||
|
|
102
cdist/conf/type/__key_value/files/remote_script.sh
Normal file
102
cdist/conf/type/__key_value/files/remote_script.sh
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
export key="$(cat "$__object/parameter/key" 2>/dev/null \
|
||||||
|
|| echo "$__object_id")"
|
||||||
|
export state="$(cat "$__object/parameter/state")"
|
||||||
|
|
||||||
|
file="$(cat "$__object/parameter/file")"
|
||||||
|
|
||||||
|
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
|
||||||
|
export exact_delimiter=1
|
||||||
|
else
|
||||||
|
export exact_delimiter=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
tmpfile=$(mktemp "${file}.cdist.XXXXXXXXXX")
|
||||||
|
# preserve ownership and permissions by copying existing file over tmpfile
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
cp -p "$file" "$tmpfile"
|
||||||
|
else
|
||||||
|
touch "$file"
|
||||||
|
fi
|
||||||
|
awk -f - "$file" >"$tmpfile" <<"AWK_EOF"
|
||||||
|
BEGIN {
|
||||||
|
# import variables in a secure way ..
|
||||||
|
state=ENVIRON["state"]
|
||||||
|
key=ENVIRON["key"]
|
||||||
|
delimiter=ENVIRON["delimiter"]
|
||||||
|
value=ENVIRON["value"]
|
||||||
|
comment=ENVIRON["comment"]
|
||||||
|
exact_delimiter=ENVIRON["exact_delimiter"]
|
||||||
|
inserted=0
|
||||||
|
lastline=""
|
||||||
|
lastlinepopulated=0
|
||||||
|
line=key delimiter value
|
||||||
|
}
|
||||||
|
# enter the main loop
|
||||||
|
{
|
||||||
|
# I dont use regex, this is by design, so we can match against every value without special meanings of chars ...
|
||||||
|
i = index($0,key)
|
||||||
|
if(i == 1) {
|
||||||
|
delval = substr($0,length(key)+1)
|
||||||
|
delpos = index(delval,delimiter)
|
||||||
|
if(delpos > 1) {
|
||||||
|
spaces = substr(delval,1,delpos-1)
|
||||||
|
sub(/[ \t]*/,"",spaces)
|
||||||
|
if( length(spaces) > 0 ) {
|
||||||
|
# if there are not only spaces between key and delimiter,
|
||||||
|
# continue since we we are on the wrong line
|
||||||
|
if(lastlinepopulated == 1) {
|
||||||
|
print lastline
|
||||||
|
}
|
||||||
|
lastline=$0
|
||||||
|
lastlinepopulated=1
|
||||||
|
next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(state == "absent") {
|
||||||
|
if(lastline == comment) {
|
||||||
|
# if comment is present, clear lastlinepopulated flag
|
||||||
|
lastlinepopulated=0
|
||||||
|
}
|
||||||
|
# if absent, simple yump over this line
|
||||||
|
next
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# if comment is present and not present in last line
|
||||||
|
if (lastlinepopulated == 1) {
|
||||||
|
print lastline
|
||||||
|
if( comment != "" && lastline != comment) {
|
||||||
|
print comment
|
||||||
|
}
|
||||||
|
lastlinepopulated=0
|
||||||
|
}
|
||||||
|
inserted=1
|
||||||
|
# state is present, so insert correct line here
|
||||||
|
print line
|
||||||
|
lastline=line
|
||||||
|
next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(lastlinepopulated == 1) {
|
||||||
|
print lastline
|
||||||
|
}
|
||||||
|
lastline=$0
|
||||||
|
lastlinepopulated=1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if(lastlinepopulated == 1) {
|
||||||
|
print lastline
|
||||||
|
}
|
||||||
|
if(inserted == 0 && state == "present" ) {
|
||||||
|
if(comment != "" && lastline != comment){
|
||||||
|
print comment
|
||||||
|
}
|
||||||
|
print line
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AWK_EOF
|
||||||
|
mv -f "$tmpfile" "$file"
|
|
@ -1,7 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
|
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
# 2012 Nico Schottelius (nico-cdist at schottelius.org)
|
# 2012-2014 Nico Schottelius (nico-cdist at schottelius.org)
|
||||||
|
# 2014 Daniel Heule (hda at sfs.biz)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -19,52 +20,56 @@
|
||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
key="$__object_id"
|
|
||||||
[ -f "$__object/parameter/key" ] && key="$(cat "$__object/parameter/key")"
|
|
||||||
|
|
||||||
state_should="$(cat "$__object/parameter/state")"
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
|
|
||||||
file="$(cat "$__object/parameter/file")"
|
|
||||||
delimiter="$(cat "$__object/parameter/delimiter")"
|
|
||||||
# escape double quotes, as that is what we use ourself below
|
|
||||||
value_escaped="$(cat "$__object/parameter/value" | sed -e "s/\([\"]\)/\\\\\1/g")"
|
|
||||||
state_is="$(cat "$__object/explorer/state")"
|
state_is="$(cat "$__object/explorer/state")"
|
||||||
|
|
||||||
[ "$state_is" = "$state_should" ] && exit 0
|
if [ "$state_is" = "$state_should" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# here we check only if the states are valid,
|
||||||
|
# emmit messages and
|
||||||
|
# let awk do the work ...
|
||||||
case "$state_should" in
|
case "$state_should" in
|
||||||
absent)
|
absent)
|
||||||
# remove lines starting with key
|
|
||||||
cat << DONE
|
|
||||||
tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
|
|
||||||
# preserve ownership and permissions by copying existing file over tmpfile
|
|
||||||
cp -p "$file" "\$tmpfile"
|
|
||||||
sed '/^$key\($delimiter\+\)/d' "$file" > "\$tmpfile"
|
|
||||||
mv -f "\$tmpfile" "$file"
|
|
||||||
DONE
|
|
||||||
;;
|
|
||||||
present)
|
|
||||||
case "$state_is" in
|
case "$state_is" in
|
||||||
absent)
|
absent|nosuchfile)
|
||||||
# add new key and value
|
# nothing to do
|
||||||
printf 'echo "%s%s%s" >> "%s"' "$key" "$delimiter" "$value_escaped" "$file"
|
|
||||||
;;
|
;;
|
||||||
wrongvalue)
|
wrongformat|wrongvalue|present)
|
||||||
# change exisiting value
|
echo "remove" >> "$__messages_out"
|
||||||
cat << DONE
|
|
||||||
tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
|
|
||||||
# preserve ownership and permissions by copying existing file over tmpfile
|
|
||||||
cp -p "$file" "\$tmpfile"
|
|
||||||
sed "s|^$key\($delimiter\+\).*|$key\\1$value_escaped|" "$file" > "\$tmpfile"
|
|
||||||
mv -f "\$tmpfile" "$file"
|
|
||||||
DONE
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown explorer state: $state_is" >&2
|
echo "Unknown explorer state: $state_is" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
present)
|
||||||
|
case "$state_is" in
|
||||||
|
nosuchfile)
|
||||||
|
echo "create" >> "$__messages_out"
|
||||||
|
;;
|
||||||
|
absent)
|
||||||
|
echo "insert" >> "$__messages_out"
|
||||||
|
;;
|
||||||
|
wrongformated|wrongvalue)
|
||||||
|
echo "change" >> "$__messages_out"
|
||||||
|
;;
|
||||||
|
present)
|
||||||
|
# nothing to do
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown explorer state: $state_is" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown state: $state_should" >&2
|
echo "Unknown state: $state_should" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
cat "$__type/files/remote_script.sh"
|
||||||
|
|
|
@ -31,6 +31,30 @@ key::
|
||||||
The key to change. Defaults to object_id.
|
The key to change. Defaults to object_id.
|
||||||
value::
|
value::
|
||||||
The value for the key. Optional if state=absent, required otherwise.
|
The value for the key. Optional if state=absent, required otherwise.
|
||||||
|
comment::
|
||||||
|
If supplied, the value will be inserted before the line with the key,
|
||||||
|
but only if the key or value must be changed.
|
||||||
|
You need to ensure yourself that the line is prefixed with the correct
|
||||||
|
comment sign. (for example # or ; or wathever ..)
|
||||||
|
|
||||||
|
|
||||||
|
BOOLEAN PARAMETERS
|
||||||
|
------------------
|
||||||
|
exact_delimiter::
|
||||||
|
If supplied, treat additional whitespaces between key, delimiter and value
|
||||||
|
as wrong value.
|
||||||
|
|
||||||
|
|
||||||
|
MESSAGES
|
||||||
|
--------
|
||||||
|
remove::
|
||||||
|
Removed existing key and value
|
||||||
|
insert::
|
||||||
|
Added key and value
|
||||||
|
change::
|
||||||
|
Changed value of existing key
|
||||||
|
create::
|
||||||
|
A new line was inserted in a new file
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
@ -46,13 +70,19 @@ __key_value my-fancy-id --file /etc/login.defs --key SYS_UID_MAX --value 666 \
|
||||||
|
|
||||||
# Enable packet forwarding
|
# Enable packet forwarding
|
||||||
__key_value net.ipv4.ip_forward --file /etc/sysctl.conf --value 1 \
|
__key_value net.ipv4.ip_forward --file /etc/sysctl.conf --value 1 \
|
||||||
--delimiter '='
|
--delimiter ' = ' --comment '# my linux kernel should act as a router'
|
||||||
|
|
||||||
# Remove existing key/value
|
# Remove existing key/value
|
||||||
__key_value LEGACY_KEY --file /etc/somefile --state absent --delimiter '='
|
__key_value LEGACY_KEY --file /etc/somefile --state absent --delimiter '='
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
MORE INFORMATION
|
||||||
|
----------------
|
||||||
|
This type try to handle as many values as possible, so it doesn't use regexes.
|
||||||
|
So you need to exactly specify the key and delimiter. Delimiter can be of any lenght.
|
||||||
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
- cdist-type(7)
|
- cdist-type(7)
|
||||||
|
|
1
cdist/conf/type/__key_value/parameter/boolean
Normal file
1
cdist/conf/type/__key_value/parameter/boolean
Normal file
|
@ -0,0 +1 @@
|
||||||
|
exact_delimiter
|
1
cdist/conf/type/__key_value/parameter/default/comment
Normal file
1
cdist/conf/type/__key_value/parameter/default/comment
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
key
|
key
|
||||||
value
|
value
|
||||||
state
|
state
|
||||||
|
comment
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2012 Nico Schottelius (nico-cdist at schottelius.org)
|
# 2012 Nico Schottelius (nico-cdist at schottelius.org)
|
||||||
|
# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -74,8 +75,13 @@ case "$state_should" in
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat << eof
|
cat << eof
|
||||||
tmp=\$(mktemp)
|
tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
|
||||||
grep -v $greparg '$regex' '$file' > \$tmp && cat "\$tmp" > '$file' && rm -f "\$tmp"
|
# preserve ownership and permissions of existing file
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
cp -p "$file" "\$tmpfile"
|
||||||
|
fi
|
||||||
|
grep -v $greparg '$regex' '$file' > \$tmpfile || true
|
||||||
|
mv -f "\$tmpfile" "$file"
|
||||||
eof
|
eof
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
|
# 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -34,8 +34,13 @@ case "$type" in
|
||||||
symbolic)
|
symbolic)
|
||||||
cd "$destination_dir"
|
cd "$destination_dir"
|
||||||
source_is=$(ls -l "$destination" | sed 's/.*-> //g')
|
source_is=$(ls -l "$destination" | sed 's/.*-> //g')
|
||||||
if [ -h "$destination" -a "$source_is" = "$source" ]; then
|
if [ -h "$destination" ]; then
|
||||||
|
# ignore trailing slashes for comparison
|
||||||
|
if [ "${source_is%/}" = "${source%/}" ]; then
|
||||||
echo present
|
echo present
|
||||||
|
else
|
||||||
|
echo wrongsource
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo absent
|
echo absent
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
|
# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
|
||||||
# 2013 Steven Armstrong (steven-cdist at armstrong.cc)
|
# 2013-2014 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -18,9 +18,6 @@
|
||||||
# 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/>.
|
||||||
#
|
#
|
||||||
#
|
|
||||||
# Mostly a wrapper for ln
|
|
||||||
#
|
|
||||||
|
|
||||||
destination="/$__object_id"
|
destination="/$__object_id"
|
||||||
|
|
||||||
|
@ -50,20 +47,22 @@ case "$state_should" in
|
||||||
present)
|
present)
|
||||||
if [ "$file_type" = "directory" ]; then
|
if [ "$file_type" = "directory" ]; then
|
||||||
# our destination is currently a directory, delete it
|
# our destination is currently a directory, delete it
|
||||||
cat << DONE
|
printf 'rm -rf "%s" &&\n' "$destination"
|
||||||
rm -rf "$destination"
|
else
|
||||||
DONE
|
if [ "$state_is" = "wrongsource" ]; then
|
||||||
|
# our destination is a symlink but points to the wrong source,
|
||||||
|
# delete it
|
||||||
|
printf 'rm -f "%s" &&\n' "$destination"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# create our link
|
# create our link
|
||||||
cat << DONE
|
printf 'ln %s -f "%s" "%s"\n' "$lnopt" "$source" "$destination"
|
||||||
ln ${lnopt} -f "$source" "$destination"
|
|
||||||
DONE
|
|
||||||
;;
|
;;
|
||||||
absent)
|
absent)
|
||||||
# only delete if it is a sym/hard link
|
# only delete if it is a sym/hard link
|
||||||
if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then
|
if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then
|
||||||
echo rm -f \"$destination\"
|
printf 'rm -f "%s"\n' "$destination"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
|
@ -16,7 +16,7 @@ This cdist type allows you to setup locales.
|
||||||
OPTIONAL PARAMETERS
|
OPTIONAL PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
state::
|
state::
|
||||||
'present' or 'absent'
|
'present' or 'absent', defaults to present
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
@ -43,5 +43,5 @@ SEE ALSO
|
||||||
|
|
||||||
COPYING
|
COPYING
|
||||||
-------
|
-------
|
||||||
Copyright \(C) 2013 Nico Schottelius. Free use of this software is
|
Copyright \(C) 2013-2014 Nico Schottelius. Free use of this software is
|
||||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2013 Nico Schottelius (nico-cdist at schottelius.org)
|
# 2013-2014 Nico Schottelius (nico-cdist at schottelius.org)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -29,4 +29,12 @@ case "$os" in
|
||||||
# Debian needs a seperate package
|
# Debian needs a seperate package
|
||||||
__package locales --state present
|
__package locales --state present
|
||||||
;;
|
;;
|
||||||
|
suse)
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Sorry, do not know how to handle os: $os" >&2
|
||||||
|
echo "Please edit the type ${__type##*/} to fix this." >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -50,8 +50,11 @@ fi
|
||||||
|
|
||||||
pkg_version="$(cat "$__object/explorer/pkg_version")"
|
pkg_version="$(cat "$__object/explorer/pkg_version")"
|
||||||
|
|
||||||
# TODO: Shouldn't be hardcoded
|
if [ -f "$__object/parameter/pkg_path" ]; then
|
||||||
echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$machine/
|
pkg_path="$(cat "$__object/parameter/pkg_path")"
|
||||||
|
else
|
||||||
|
pkg_path="ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$machine/"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$pkg_version" ]; then
|
if [ "$pkg_version" ]; then
|
||||||
state_is="present"
|
state_is="present"
|
||||||
|
@ -65,10 +68,16 @@ case "$state_should" in
|
||||||
present)
|
present)
|
||||||
# use this because pkg_add doesn't properly handle errors
|
# use this because pkg_add doesn't properly handle errors
|
||||||
cat << eof
|
cat << eof
|
||||||
status=\$(pkg_add "$pkgopts" "$name--$flavor")
|
export PKG_PATH="$pkg_path"
|
||||||
|
status=\$(pkg_add "$pkgopts" "$name--$flavor" 2>&1)
|
||||||
|
pkg_info | grep "^${name}.*${flavor}" > /dev/null 2>&1
|
||||||
|
|
||||||
# no error
|
# We didn't find the package in the list of 'installed packages', so it failed
|
||||||
if [ -n "\$status" ]; then
|
# 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"
|
echo "Error: \$status"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -79,9 +88,14 @@ eof
|
||||||
# use this because pkg_add doesn't properly handle errors
|
# use this because pkg_add doesn't properly handle errors
|
||||||
cat << eof
|
cat << eof
|
||||||
status=\$(pkg_delete "$pkgopts" "$name--$flavor")
|
status=\$(pkg_delete "$pkgopts" "$name--$flavor")
|
||||||
|
pkg_info | grep "^${name}.*${flavor}" > /dev/null 2>&1
|
||||||
|
|
||||||
# no error
|
# We found the package in the list of 'installed packages'
|
||||||
if [ -n "\$status" ]; then
|
# 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"
|
echo "Error: \$status"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -29,6 +29,8 @@ flavor::
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent", defaults to "present"
|
Either "present" or "absent", defaults to "present"
|
||||||
|
|
||||||
|
pkg_path::
|
||||||
|
Manually specify a PKG_PATH to add packages from.
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
@ -45,6 +47,10 @@ __package_pkg_openbsd python --state present --name python2
|
||||||
|
|
||||||
# Remove obsolete package
|
# Remove obsolete package
|
||||||
__package_pkg_openbsd puppet --state absent
|
__package_pkg_openbsd puppet --state absent
|
||||||
|
|
||||||
|
# Add a package using a particular mirror
|
||||||
|
__package_pkg_openbsd bash \
|
||||||
|
--pkg_path http://openbsd.mirrorcatalogs.com/snapshots/packages/amd64
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
name
|
name
|
||||||
flavor
|
flavor
|
||||||
state
|
state
|
||||||
|
pkg_path
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
|
# 2011-2014 Nico Schottelius (nico-cdist at schottelius.org)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -27,6 +27,14 @@ else
|
||||||
name="$__object_id"
|
name="$__object_id"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Support installing from an URL
|
||||||
|
if [ -f "$__object/parameter/url" ]; then
|
||||||
|
install_name="$(cat "$__object/parameter/url")"
|
||||||
|
else
|
||||||
|
install_name="$name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
state_should="$(cat "$__object/parameter/state")"
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
|
|
||||||
if grep -q -E "(centos|redhat|amazon)" "$__global/explorer/os"; then
|
if grep -q -E "(centos|redhat|amazon)" "$__global/explorer/os"; then
|
||||||
|
@ -47,7 +55,7 @@ fi
|
||||||
|
|
||||||
case "$state_should" in
|
case "$state_should" in
|
||||||
present)
|
present)
|
||||||
echo yum $opts install \"$name\"
|
echo yum $opts install \"$install_name\"
|
||||||
;;
|
;;
|
||||||
absent)
|
absent)
|
||||||
echo yum $opts remove \"$name\"
|
echo yum $opts remove \"$name\"
|
||||||
|
|
|
@ -27,6 +27,8 @@ name::
|
||||||
|
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent", defaults to "present"
|
Either "present" or "absent", defaults to "present"
|
||||||
|
url::
|
||||||
|
URL to use for the package
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
@ -41,6 +43,9 @@ __package_yum python --state present --name python2
|
||||||
|
|
||||||
# Remove obsolete package
|
# Remove obsolete package
|
||||||
__package_yum puppet --state absent
|
__package_yum puppet --state absent
|
||||||
|
|
||||||
|
__package epel-release-6-8 \
|
||||||
|
--url http://mirror.switch.ch/ftp/mirror/epel/6/i386/epel-release-6-8.noarch.rpm
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
name
|
name
|
||||||
state
|
state
|
||||||
|
url
|
||||||
|
|
|
@ -16,7 +16,7 @@ This type is used on *BSD systems to manage the pf firewall's ruleset.
|
||||||
REQUIRED PARAMETERS
|
REQUIRED PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
state::
|
state::
|
||||||
Either "absent" (no ruleset at all) or "present"
|
Either "absent" (no ruleset at all) or "present", defaults to "present".
|
||||||
|
|
||||||
|
|
||||||
OPTIONAL PARAMETERS
|
OPTIONAL PARAMETERS
|
||||||
|
|
1
cdist/conf/type/__pf_ruleset/parameter/default/state
Normal file
1
cdist/conf/type/__pf_ruleset/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
|
@ -1 +1,2 @@
|
||||||
source
|
source
|
||||||
|
state
|
||||||
|
|
|
@ -19,8 +19,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
name="$__object_id"
|
name="$__object_id"
|
||||||
state_should="present"
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
|
|
||||||
state_is="$(cat "$__object/explorer/state")"
|
state_is="$(cat "$__object/explorer/state")"
|
||||||
|
|
||||||
if [ "$state_should" != "$state_is" ]; then
|
if [ "$state_should" != "$state_is" ]; then
|
||||||
|
|
|
@ -16,7 +16,7 @@ This cdist type allows you to create or drop postgres databases.
|
||||||
OPTIONAL PARAMETERS
|
OPTIONAL PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
state::
|
state::
|
||||||
either 'present' or 'absent'
|
either 'present' or 'absent', defaults to 'present'.
|
||||||
|
|
||||||
owner::
|
owner::
|
||||||
the role owning this database
|
the role owning this database
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
present
|
|
@ -20,8 +20,7 @@
|
||||||
|
|
||||||
name="$__object_id"
|
name="$__object_id"
|
||||||
state_is="$(cat "$__object/explorer/state")"
|
state_is="$(cat "$__object/explorer/state")"
|
||||||
state_should="present"
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
|
|
||||||
|
|
||||||
[ "$state_is" = "$state_should" ] && exit 0
|
[ "$state_is" = "$state_should" ] && exit 0
|
||||||
|
|
||||||
|
|
1
cdist/conf/type/__postgres_role/parameter/default/state
Normal file
1
cdist/conf/type/__postgres_role/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
|
@ -14,17 +14,15 @@ The qemu-img program is used to create qemu images for
|
||||||
qemu and (qemu-)kvm.
|
qemu and (qemu-)kvm.
|
||||||
|
|
||||||
|
|
||||||
REQUIRED PARAMETERS
|
|
||||||
-------------------
|
|
||||||
size::
|
|
||||||
Size of the image in qemu-img compatible units.
|
|
||||||
See qemu-img(1).
|
|
||||||
|
|
||||||
|
|
||||||
OPTIONAL PARAMETERS
|
OPTIONAL PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent", defaults to "present"
|
Either "present" or "absent", defaults to "present"
|
||||||
|
size::
|
||||||
|
Size of the image in qemu-img compatible units.
|
||||||
|
|
||||||
|
Required if state is "present".
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
@ -42,9 +40,10 @@ __qemu_img /home/services/kvm/vm/myoldvm/system-disk --state absent
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
- cdist-type(7)
|
- cdist-type(7)
|
||||||
|
- qemu-img(1)
|
||||||
|
|
||||||
|
|
||||||
COPYING
|
COPYING
|
||||||
-------
|
-------
|
||||||
Copyright \(C) 2012 Nico Schottelius. Free use of this software is
|
Copyright \(C) 2012-2014 Nico Schottelius. Free use of this software is
|
||||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
||||||
|
|
|
@ -3,11 +3,23 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
format="$(cat "$__object/parameter/format")"
|
format="$(cat "$__object/parameter/format")"
|
||||||
state="$(cat "$__object/parameter/state")"
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
|
|
||||||
diskimage="/$__object_id"
|
diskimage="/$__object_id"
|
||||||
|
|
||||||
# Absent is ensured by __file, present by gencode-remote
|
case "$state_should" in
|
||||||
if [ "$state" = "absent" ]; then
|
present)
|
||||||
|
if [ ! -f "$__object/parameter/size" ]; then
|
||||||
|
echo "Size is required when state is present" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
absent)
|
||||||
|
# Absent is ensured by __file, present by gencode-remote
|
||||||
__file "$diskimage" --state absent
|
__file "$diskimage" --state absent
|
||||||
fi
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported state: $state_should" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
format
|
format
|
||||||
state
|
state
|
||||||
|
size
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
size
|
|
49
cdist/conf/type/__rbenv/man.text
Normal file
49
cdist/conf/type/__rbenv/man.text
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
cdist-type__rbenv(7)
|
||||||
|
====================
|
||||||
|
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
cdist-type__rbenv - Manage rbenv installation
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
This cdist type allows you to manage rbenv installations.
|
||||||
|
It also installs ruby-build.
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONAL PARAMETERS
|
||||||
|
-------------------
|
||||||
|
state::
|
||||||
|
Either "present" or "absent", defaults to "present"
|
||||||
|
|
||||||
|
owner::
|
||||||
|
Which user should own the rbenv installation, defaults to root
|
||||||
|
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
--------
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
# Install rbenv including ruby-build for nico
|
||||||
|
__rbenv /home/nico
|
||||||
|
|
||||||
|
# Install rbenv including ruby-build for nico
|
||||||
|
__rbenv /home/nico --owner nico
|
||||||
|
|
||||||
|
# Bastian does not need rbenv anymore, he began to code C99
|
||||||
|
__rbenv /home/bastian --state absent
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
- cdist-type(7)
|
||||||
|
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
-------
|
||||||
|
Copyright \(C) 2012-2014 Nico Schottelius. Free use of this software is
|
||||||
|
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
38
cdist/conf/type/__rbenv/manifest
Normal file
38
cdist/conf/type/__rbenv/manifest
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2012-2014 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
homedir="$__object_id"
|
||||||
|
|
||||||
|
state_should="$(cat "$__object/parameter/state")"
|
||||||
|
owner="$(cat "$__object/parameter/owner")"
|
||||||
|
|
||||||
|
rbenvdir="$homedir/.rbenv"
|
||||||
|
rubybuilddir="$rbenvdir/plugins/ruby-build"
|
||||||
|
|
||||||
|
__git "$rbenvdir" \
|
||||||
|
--source git://github.com/sstephenson/rbenv.git \
|
||||||
|
--owner "$owner" \
|
||||||
|
--state "$state_should"
|
||||||
|
|
||||||
|
require="__git/$rbenvdir" __git "$rubybuilddir" \
|
||||||
|
--source git://github.com/sstephenson/ruby-build.git \
|
||||||
|
--owner "$owner" \
|
||||||
|
--state "$state_should"
|
1
cdist/conf/type/__rbenv/parameter/default/state
Normal file
1
cdist/conf/type/__rbenv/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
1
cdist/conf/type/__rbenv/parameter/required
Normal file
1
cdist/conf/type/__rbenv/parameter/required
Normal file
|
@ -0,0 +1 @@
|
||||||
|
owner
|
|
@ -16,7 +16,7 @@ RVM is the Ruby enVironment Manager for the Ruby programming language.
|
||||||
REQUIRED PARAMETERS
|
REQUIRED PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent".
|
Either "present" or "absent", defaults to "present".
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
|
1
cdist/conf/type/__rvm/parameter/default/state
Normal file
1
cdist/conf/type/__rvm/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
|
@ -20,7 +20,7 @@ user::
|
||||||
gemset::
|
gemset::
|
||||||
The gemset to use
|
The gemset to use
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent"
|
Either "present" or "absent", defaults to "present".
|
||||||
|
|
||||||
OPTIONAL PARAMETERS
|
OPTIONAL PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
|
|
1
cdist/conf/type/__rvm_gem/parameter/default/state
Normal file
1
cdist/conf/type/__rvm_gem/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
|
@ -1 +1,2 @@
|
||||||
default
|
default
|
||||||
|
state
|
||||||
|
|
|
@ -1,3 +1,2 @@
|
||||||
state
|
|
||||||
gemset
|
gemset
|
||||||
user
|
user
|
||||||
|
|
|
@ -18,7 +18,7 @@ REQUIRED PARAMETERS
|
||||||
user::
|
user::
|
||||||
The remote user account to use
|
The remote user account to use
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent".
|
Either "present" or "absent", defaults to "present".
|
||||||
|
|
||||||
BOOLEAN PARAMETERS
|
BOOLEAN PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
|
|
1
cdist/conf/type/__rvm_gemset/parameter/default/state
Normal file
1
cdist/conf/type/__rvm_gemset/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
|
@ -1,2 +1 @@
|
||||||
state
|
|
||||||
user
|
user
|
||||||
|
|
|
@ -18,7 +18,7 @@ REQUIRED PARAMETERS
|
||||||
user::
|
user::
|
||||||
The remote user account to use
|
The remote user account to use
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent".
|
Either "present" or "absent", defaults to "present".
|
||||||
|
|
||||||
BOOLEAN PARAMETERS
|
BOOLEAN PARAMETERS
|
||||||
------------------
|
------------------
|
||||||
|
|
1
cdist/conf/type/__rvm_ruby/parameter/default/state
Normal file
1
cdist/conf/type/__rvm_ruby/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
1
cdist/conf/type/__rvm_ruby/parameter/optional
Normal file
1
cdist/conf/type/__rvm_ruby/parameter/optional
Normal file
|
@ -0,0 +1 @@
|
||||||
|
state
|
|
@ -1,2 +1 @@
|
||||||
state
|
|
||||||
user
|
user
|
||||||
|
|
22
cdist/conf/type/__ssh_authorized_keys/explorer/group
Executable file
22
cdist/conf/type/__ssh_authorized_keys/explorer/group
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
gid="$("$__type_explorer/passwd" | cut -d':' -f 4)"
|
||||||
|
getent group "$gid" || true
|
|
@ -40,9 +40,6 @@ state::
|
||||||
file::
|
file::
|
||||||
an alternative destination file, defaults to ~$owner/.ssh/authorized_keys
|
an alternative destination file, defaults to ~$owner/.ssh/authorized_keys
|
||||||
|
|
||||||
comment::
|
|
||||||
an optional comment
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN PARAMETERS
|
BOOLEAN PARAMETERS
|
||||||
------------------
|
------------------
|
||||||
|
@ -67,12 +64,11 @@ __ssh_authorized_keys root \
|
||||||
__ssh_authorized_keys user-name \
|
__ssh_authorized_keys user-name \
|
||||||
--key "ssh-rsa AXYZAAB3NzaC1yc2..."
|
--key "ssh-rsa AXYZAAB3NzaC1yc2..."
|
||||||
|
|
||||||
# same as above, but with explicit owner, two keys and a comment
|
# same as above, but with explicit owner and two keys
|
||||||
__ssh_authorized_keys some-fancy-id \
|
__ssh_authorized_keys some-fancy-id \
|
||||||
--owner user-name \
|
--owner user-name \
|
||||||
--key "ssh-rsa AXYZAAB3NzaC1yc2..." \
|
--key "ssh-rsa AXYZAAB3NzaC1yc2..." \
|
||||||
--key "ssh-rsa AZXYAAB3NzaC1yc2..." \
|
--key "ssh-rsa AZXYAAB3NzaC1yc2..."
|
||||||
--comment "allow the members of project foo to login"
|
|
||||||
|
|
||||||
# same as above, but authorized_keys file in non standard location
|
# same as above, but authorized_keys file in non standard location
|
||||||
__ssh_authorized_keys some-fancy-id \
|
__ssh_authorized_keys some-fancy-id \
|
||||||
|
@ -97,5 +93,5 @@ SEE ALSO
|
||||||
|
|
||||||
COPYING
|
COPYING
|
||||||
-------
|
-------
|
||||||
Copyright \(C) 2012 Steven Armstrong. Free use of this software is
|
Copyright \(C) 2012-2014 Steven Armstrong. Free use of this software is
|
||||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
|
# 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
|
# 2014 Nico Schottelius (nico-cdist at schottelius.org)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -32,7 +33,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ]; then
|
if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ]; then
|
||||||
group="$(cut -d':' -f 4 "$__object/explorer/passwd")"
|
group="$(cut -d':' -f 1 "$__object/explorer/group")"
|
||||||
if [ -z "$group" ]; then
|
if [ -z "$group" ]; then
|
||||||
echo "Failed to get owners group from explorer." >&2
|
echo "Failed to get owners group from explorer." >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -56,16 +57,32 @@ if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ];
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Generate entry for inclusion in authorized_keys file
|
# Remove legacy blocks created by old versions of this type
|
||||||
(
|
# FIXME: remove me in 3.2+
|
||||||
if [ -f "$__object/parameter/comment" ]; then
|
|
||||||
echo "# $(cat "$__object/parameter/comment")"
|
|
||||||
fi
|
|
||||||
cat "$__object/parameter/key"
|
|
||||||
) | \
|
|
||||||
__block "$__object_name" \
|
__block "$__object_name" \
|
||||||
--file "$file" \
|
--file "$file" \
|
||||||
--prefix "#cdist:$__object_name" \
|
--prefix "#cdist:$__object_name" \
|
||||||
--suffix "#/cdist:$__object_name" \
|
--suffix "#/cdist:$__object_name" \
|
||||||
--state "$state" \
|
--state 'absent' \
|
||||||
--text -
|
--text - << DONE
|
||||||
|
remove legacy block
|
||||||
|
DONE
|
||||||
|
|
||||||
|
_cksum() {
|
||||||
|
echo "$1" | cksum | cut -d' ' -f 1
|
||||||
|
}
|
||||||
|
|
||||||
|
while read key; do
|
||||||
|
cksum_key="$(_cksum "$key")"
|
||||||
|
line_id="${owner}-${cksum_key}"
|
||||||
|
|
||||||
|
set -- "$line_id"
|
||||||
|
set -- "$@" --file "$file"
|
||||||
|
set -- "$@" --regex ".*$key.*"
|
||||||
|
if [ "$state" = 'present' ]; then
|
||||||
|
set -- "$@" --line "$key"
|
||||||
|
fi
|
||||||
|
set -- "$@" --state "$state"
|
||||||
|
# Ensure __line does not read stdin
|
||||||
|
require="__block/$__object_name" __line "$@" < /dev/null
|
||||||
|
done < "$__object/parameter/key"
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
owner
|
owner
|
||||||
state
|
state
|
||||||
file
|
file
|
||||||
comment
|
|
||||||
|
|
|
@ -27,13 +27,18 @@ os=$(cat "$__global/explorer/os")
|
||||||
|
|
||||||
case "$os" in
|
case "$os" in
|
||||||
archlinux|debian|ubuntu)
|
archlinux|debian|ubuntu)
|
||||||
__package tzdata --state present
|
package=tzdata
|
||||||
require="__package/tzdata" __link /etc/localtime \
|
;;
|
||||||
--source "/usr/share/zoneinfo/${timezone}" \
|
suse)
|
||||||
--type symbolic
|
package=timezone
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unsupported OS $os" >&2
|
echo "Unsupported OS $os" >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
__package "$package" --state present
|
||||||
|
require="__package/$package" __link /etc/localtime \
|
||||||
|
--source "/usr/share/zoneinfo/${timezone}" \
|
||||||
|
--type symbolic
|
||||||
|
|
|
@ -26,9 +26,10 @@ os="$($__explorer/os)"
|
||||||
# Default to using shadow passwords
|
# Default to using shadow passwords
|
||||||
database="shadow"
|
database="shadow"
|
||||||
|
|
||||||
if [ "$os" = "freebsd" ]; then
|
case "$os" in
|
||||||
database="passwd"
|
"freebsd"|"openbsd") database="passwd";;
|
||||||
fi
|
esac
|
||||||
|
|
||||||
|
|
||||||
getent "$database" "$name" || true
|
getent "$database" "$name" || true
|
||||||
|
|
||||||
|
|
61
cdist/conf/type/__yum_repo/files/repo.template
Executable file
61
cdist/conf/type/__yum_repo/files/repo.template
Executable file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -u
|
||||||
|
cat << DONE
|
||||||
|
# Created by cdist ${__type##*/}
|
||||||
|
# Do not change. Changes will be overwritten.
|
||||||
|
#
|
||||||
|
[$repo_name]
|
||||||
|
DONE
|
||||||
|
# single value properties
|
||||||
|
single_value='name
|
||||||
|
metalink
|
||||||
|
mirrorlist
|
||||||
|
gpgcakey
|
||||||
|
gpgcheck
|
||||||
|
exclude
|
||||||
|
includepkgs
|
||||||
|
failovermethod
|
||||||
|
timeout
|
||||||
|
http_caching
|
||||||
|
retries
|
||||||
|
throttle
|
||||||
|
bandwidth
|
||||||
|
sslcacert
|
||||||
|
sslverify
|
||||||
|
sslclientcert
|
||||||
|
sslclientkey
|
||||||
|
ssl_check_cert_permissions
|
||||||
|
metadata_expire
|
||||||
|
mirrorlist_expire
|
||||||
|
proxy
|
||||||
|
proxy_username
|
||||||
|
proxy_password
|
||||||
|
username
|
||||||
|
password
|
||||||
|
cost'
|
||||||
|
for key in $single_value; do
|
||||||
|
if [ -f "$__object/parameter/$key" ]; then
|
||||||
|
printf '%s=%s\n' "$key" "$(cat "$__object/parameter/$key")"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# multi value properties
|
||||||
|
for key in baseurl gpgkey; do
|
||||||
|
if [ -f "$__object/parameter/$key" ]; then
|
||||||
|
printf '%s=' "$key"
|
||||||
|
prefix=''
|
||||||
|
while read line; do
|
||||||
|
printf '%s%s\n' "$prefix" "$line"
|
||||||
|
prefix=' '
|
||||||
|
done < "$__object/parameter/$key"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# boolean properties
|
||||||
|
for key in enabled repo_gpgcheck keepalive skip_if_unavailable; do
|
||||||
|
if [ -f "$__object/parameter/$key" ]; then
|
||||||
|
printf '%s=1\n' "$key"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# special cases
|
||||||
|
if [ -f "$__object/parameter/disablegroups" ]; then
|
||||||
|
printf 'enablegroups=0\n'
|
||||||
|
fi
|
91
cdist/conf/type/__yum_repo/man.text
Normal file
91
cdist/conf/type/__yum_repo/man.text
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
cdist-type__yum_repo(7)
|
||||||
|
=======================
|
||||||
|
Steven Armstrong <steven-cdist--@--armstrong.cc>
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
cdist-type__yum_repo - manage yum repositories
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
For all undocumented parameters see yum.conf(5).
|
||||||
|
|
||||||
|
|
||||||
|
REQUIRED PARAMETERS
|
||||||
|
-------------------
|
||||||
|
None.
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONAL PARAMETERS
|
||||||
|
-------------------
|
||||||
|
state::
|
||||||
|
'present' or 'absent'. Defaults to 'present'
|
||||||
|
repositoryid::
|
||||||
|
Defaults to __object_id.
|
||||||
|
name::
|
||||||
|
baseurl::
|
||||||
|
Can be specified multiple times.
|
||||||
|
metalink::
|
||||||
|
mirrorlist::
|
||||||
|
gpgkey::
|
||||||
|
Can be specified multiple times.
|
||||||
|
gpgcakey::
|
||||||
|
gpgcheck::
|
||||||
|
exclude::
|
||||||
|
includepkgs::
|
||||||
|
failovermethod::
|
||||||
|
timeout::
|
||||||
|
http_caching::
|
||||||
|
retries::
|
||||||
|
throttle::
|
||||||
|
bandwidth::
|
||||||
|
sslcacert::
|
||||||
|
sslverify::
|
||||||
|
sslclientcert::
|
||||||
|
sslclientkey::
|
||||||
|
ssl_check_cert_permissions::
|
||||||
|
metadata_expire::
|
||||||
|
mirrorlist_expire::
|
||||||
|
proxy::
|
||||||
|
proxy_username::
|
||||||
|
proxy_password::
|
||||||
|
username::
|
||||||
|
password::
|
||||||
|
cost::
|
||||||
|
|
||||||
|
|
||||||
|
BOOLEAN PARAMETERS
|
||||||
|
------------------
|
||||||
|
enabled::
|
||||||
|
repo_gpgcheck::
|
||||||
|
disablegroups::
|
||||||
|
! enablegroups
|
||||||
|
keepalive::
|
||||||
|
skip_if_unavailable::
|
||||||
|
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
--------
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
__yum_repo epel \
|
||||||
|
--name 'Extra Packages for Enterprise Linux 6 - $basearch' \
|
||||||
|
--mirrorlist 'https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch' \
|
||||||
|
--failovermethod priority \
|
||||||
|
--enabled \
|
||||||
|
--gpgcheck 1 \
|
||||||
|
--gpgkey https://fedoraproject.org/static/0608B895.txt
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
- cdist-type(7)
|
||||||
|
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
-------
|
||||||
|
Copyright \(C) 2014 Steven Armstrong. Free use of this software is
|
||||||
|
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
40
cdist/conf/type/__yum_repo/manifest
Executable file
40
cdist/conf/type/__yum_repo/manifest
Executable file
|
@ -0,0 +1,40 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
os=$(cat "$__global/explorer/os")
|
||||||
|
state="$(cat "$__object/parameter/state")"
|
||||||
|
|
||||||
|
case "$os" in
|
||||||
|
centos)
|
||||||
|
repo_name="$__object_id"
|
||||||
|
export repo_name
|
||||||
|
repo_file="/etc/yum.repos.d/${repo_name}.repo"
|
||||||
|
"$__type/files/repo.template" | \
|
||||||
|
__file "$repo_file" \
|
||||||
|
--owner root --group root --mode 644 \
|
||||||
|
--state "$state" \
|
||||||
|
--source -
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
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
|
3
cdist/conf/type/__yum_repo/notes
Normal file
3
cdist/conf/type/__yum_repo/notes
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Configuring_Yum_and_Yum_Repositories.html
|
||||||
|
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/sect-Configuring_Software_Repositories.html
|
||||||
|
http://docs.puppetlabs.com/references/latest/type.html#yumrepo
|
5
cdist/conf/type/__yum_repo/parameter/boolean
Normal file
5
cdist/conf/type/__yum_repo/parameter/boolean
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
enabled
|
||||||
|
repo_gpgcheck
|
||||||
|
disablegroups
|
||||||
|
keepalive
|
||||||
|
skip_if_unavailable
|
1
cdist/conf/type/__yum_repo/parameter/default/state
Normal file
1
cdist/conf/type/__yum_repo/parameter/default/state
Normal file
|
@ -0,0 +1 @@
|
||||||
|
present
|
27
cdist/conf/type/__yum_repo/parameter/optional
Normal file
27
cdist/conf/type/__yum_repo/parameter/optional
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
bandwidth
|
||||||
|
cost
|
||||||
|
exclude
|
||||||
|
failovermethod
|
||||||
|
gpgcakey
|
||||||
|
gpgcheck
|
||||||
|
http_caching
|
||||||
|
includepkgs
|
||||||
|
metadata_expire
|
||||||
|
mirrorlist
|
||||||
|
mirrorlist_expire
|
||||||
|
name
|
||||||
|
password
|
||||||
|
proxy
|
||||||
|
proxy_password
|
||||||
|
proxy_username
|
||||||
|
repositoryid
|
||||||
|
retries
|
||||||
|
sslcacert
|
||||||
|
ssl_check_cert_permissions
|
||||||
|
sslclientcert
|
||||||
|
sslclientkey
|
||||||
|
sslverify
|
||||||
|
state
|
||||||
|
throttle
|
||||||
|
timeout
|
||||||
|
username
|
2
cdist/conf/type/__yum_repo/parameter/optional_multiple
Normal file
2
cdist/conf/type/__yum_repo/parameter/optional_multiple
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
baseurl
|
||||||
|
gpgkey
|
|
@ -18,11 +18,11 @@
|
||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Retrieve the id from the repo with the uri from parameter repo_uri - parsed zypper output
|
# Retrieve the id from the repo with the uri from parameter uri - parsed zypper output
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
if [ -f "$__object/parameter/repo_uri" ]; then
|
if [ -f "$__object/parameter/uri" ]; then
|
||||||
uri="$(cat "$__object/parameter/repo_uri")"
|
uri="$(cat "$__object/parameter/uri")"
|
||||||
else
|
else
|
||||||
uri="$__object_id"
|
uri="$__object_id"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#exec >&2
|
#exec >&2
|
||||||
#set -x
|
#set -x
|
||||||
|
|
||||||
zypper_def_opts=" -q "
|
zypper_def_opts=" -q --non-interactive --gpg-auto-import-keys "
|
||||||
|
|
||||||
if [ -f "$__object/parameter/repo_desc" ]; then
|
if [ -f "$__object/parameter/repo_desc" ]; then
|
||||||
desc="$(cat "$__object/parameter/repo_desc")"
|
desc="$(cat "$__object/parameter/repo_desc")"
|
||||||
|
@ -33,8 +33,8 @@ else
|
||||||
desc="$__object_id"
|
desc="$__object_id"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "$__object/parameter/repo_uri" ]; then
|
if [ -f "$__object/parameter/uri" ]; then
|
||||||
uri="$(cat "$__object/parameter/repo_uri")"
|
uri="$(cat "$__object/parameter/uri")"
|
||||||
else
|
else
|
||||||
uri="$__object_id"
|
uri="$__object_id"
|
||||||
fi
|
fi
|
||||||
|
@ -65,7 +65,7 @@ fi
|
||||||
case "$state" in
|
case "$state" in
|
||||||
present)
|
present)
|
||||||
if [ -z "$desc" ] || [ -z "$uri" ]; then
|
if [ -z "$desc" ] || [ -z "$uri" ]; then
|
||||||
echo "parameter repo_desc and repo_uri for $state needed" >&2
|
echo "parameter repo_desc and uri for $state needed" >&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
if [ -z "$repo_id" ]; then
|
if [ -z "$repo_id" ]; then
|
||||||
|
|
|
@ -22,13 +22,13 @@ OPTIONAL PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
state::
|
state::
|
||||||
Either "present" or "absent" or "enabled" or "disabled", defaults to "present" +
|
Either "present" or "absent" or "enabled" or "disabled", defaults to "present" +
|
||||||
#present# - make sure that the repo is aviable, needs repo_uri and repo_desc +
|
#present# - make sure that the repo is aviable, needs uri and repo_desc +
|
||||||
for all following states, the repo can be searched via repo_id or repo_uri +
|
for all following states, the repo can be searched via repo_id or uri +
|
||||||
#absent# - drop the repo if found +
|
#absent# - drop the repo if found +
|
||||||
#enabled# - a repo can have state disabled if installed via zypper service (ris), in this case, you can enable the repo +
|
#enabled# - a repo can have state disabled if installed via zypper service (ris), in this case, you can enable the repo +
|
||||||
#disabled# - instead of absent (drop), a repo can also set to disabled, wich makes it inaccessible +
|
#disabled# - instead of absent (drop), a repo can also set to disabled, wich makes it inaccessible +
|
||||||
|
|
||||||
repo_uri::
|
uri::
|
||||||
If supplied, use the uri and not the object id as repo uri.
|
If supplied, use the uri and not the object id as repo uri.
|
||||||
|
|
||||||
repo_desc::
|
repo_desc::
|
||||||
|
@ -43,10 +43,10 @@ EXAMPLES
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
# Ensure testrepo in installed
|
# Ensure testrepo in installed
|
||||||
__zypper_repo testrepo --state present --repo_uri http://url.to.your.repo/with/path
|
__zypper_repo testrepo --state present --uri http://url.to.your.repo/with/path
|
||||||
|
|
||||||
# Drop repo by repo uri
|
# Drop repo by repo uri
|
||||||
__zypper_repo testrepo --state absent --repo_uri http://url.to.your.repo/with/path
|
__zypper_repo testrepo --state absent --uri http://url.to.your.repo/with/path
|
||||||
|
|
||||||
# Drop repo by id number (attention: repos are always numbered from 1 to max)
|
# Drop repo by id number (attention: repos are always numbered from 1 to max)
|
||||||
__zypper_repo testrepo --state absent --repo_id 1
|
__zypper_repo testrepo --state absent --repo_id 1
|
||||||
|
@ -55,7 +55,7 @@ __zypper_repo testrepo --state absent --repo_id 1
|
||||||
__zypper_repo testrepo2 --state enabled --repo_id 2
|
__zypper_repo testrepo2 --state enabled --repo_id 2
|
||||||
|
|
||||||
# enable repo by uri
|
# enable repo by uri
|
||||||
__zypper_repo testrepo3 --state enabled --repo_uri http://url.to.your.repo/with/path
|
__zypper_repo testrepo3 --state enabled --uri http://url.to.your.repo/with/path
|
||||||
|
|
||||||
# disable a repo works like enabling it
|
# disable a repo works like enabling it
|
||||||
__zypper_repo testrepo4 --state disabled --repo_id 4
|
__zypper_repo testrepo4 --state disabled --repo_id 4
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
state
|
state
|
||||||
repo_uri
|
uri
|
||||||
repo_desc
|
repo_desc
|
||||||
repo_id
|
repo_id
|
||||||
|
|
|
@ -20,8 +20,8 @@
|
||||||
#
|
#
|
||||||
# Manage services with Zypper (mostly suse)
|
# Manage services with Zypper (mostly suse)
|
||||||
#
|
#
|
||||||
if [ -f "$__object/parameter/service_uri" ]; then
|
if [ -f "$__object/parameter/uri" ]; then
|
||||||
uri="$(cat "$__object/parameter/service_uri")"
|
uri="$(cat "$__object/parameter/uri")"
|
||||||
else
|
else
|
||||||
uri="/$__object_id"
|
uri="/$__object_id"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -20,8 +20,8 @@
|
||||||
#
|
#
|
||||||
# Manage services with Zypper (mostly suse)
|
# Manage services with Zypper (mostly suse)
|
||||||
#
|
#
|
||||||
if [ -f "$__object/parameter/service_uri" ]; then
|
if [ -f "$__object/parameter/uri" ]; then
|
||||||
uri="$(cat "$__object/parameter/service_uri")"
|
uri="$(cat "$__object/parameter/uri")"
|
||||||
else
|
else
|
||||||
uri="/$__object_id"
|
uri="/$__object_id"
|
||||||
fi
|
fi
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue