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
|
||||
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
|
||||
|
||||
MANDIR=docs/man
|
||||
|
@ -86,6 +93,7 @@ MANSTATICALL=$(MANSTATICMAN) $(MANSTATICHTML)
|
|||
# Creating the type html page
|
||||
%.html: %.text
|
||||
$(A2XH) $^
|
||||
$(CROSSLINK) $@
|
||||
|
||||
man: $(MANTYPEALL) $(MANREFALL) $(MANSTATICALL)
|
||||
|
||||
|
@ -99,7 +107,7 @@ man-dist: man check-date
|
|||
cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7
|
||||
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
|
||||
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"
|
||||
|
@ -146,7 +154,8 @@ web-dist: web-blog web-doc
|
|||
web-pub: web-dist man-dist speeches-dist
|
||||
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
|
||||
|
|
|
@ -104,6 +104,11 @@ eof
|
|||
;;
|
||||
|
||||
ml-release)
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "$0 ml-release version" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version=$1; shift
|
||||
|
||||
to_a=cdist
|
||||
|
@ -142,40 +147,22 @@ eof
|
|||
|
||||
freecode-release)
|
||||
version=$1; shift
|
||||
api_token=$(awk '/machine freecode login/ { print $8 }' ~/.netrc)
|
||||
|
||||
printf "Enter tag list for freecode release %s> " "$version"
|
||||
read taglist
|
||||
|
||||
printf "Enter changelog for freecode release %s> " "$version"
|
||||
read changelog
|
||||
|
||||
echo "Submit preview"
|
||||
cat << eof
|
||||
tag_list = $taglist
|
||||
changelog = $changelog
|
||||
version = $version
|
||||
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
|
||||
|
||||
echo "Submitting to freecode ..."
|
||||
python2 ~/p/foreign/freecode-submit-2.7/freecode-submit -P cdist \
|
||||
-v "$version" -c "$changelog" \
|
||||
-t "$taglist" \
|
||||
-n
|
||||
;;
|
||||
|
||||
release-git-tag)
|
||||
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"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -256,7 +243,11 @@ eof
|
|||
make pub
|
||||
|
||||
# publish man, speeches, website
|
||||
if [ "$masterbranch" = yes ]; then
|
||||
make web-release-all
|
||||
else
|
||||
make web-release-all-no-latest
|
||||
fi
|
||||
|
||||
# Ensure that pypi release has the right version
|
||||
"$0" version
|
||||
|
|
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
|
||||
if command -v ip; then
|
||||
if command -v ip >/dev/null; then
|
||||
ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! command -v ifconfig; then
|
||||
if ! command -v ifconfig >/dev/null; then
|
||||
# no ifconfig, nothing we could do
|
||||
exit 0
|
||||
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")
|
||||
case "$os" in
|
||||
"freebsd")
|
||||
"freebsd"|"openbsd")
|
||||
# FIXME: should be something like this based on man page, but can not test
|
||||
stat -f "type: %ST
|
||||
owner: %Du %Su
|
||||
|
@ -34,6 +34,15 @@ mode: %Op %Sp
|
|||
size: %Dz
|
||||
links: %Dl
|
||||
" "$destination"
|
||||
;;
|
||||
"macosx")
|
||||
stat -f "type: %HT
|
||||
owner: %Du %Su
|
||||
group: %Dg %Sg
|
||||
mode: %Lp %Sp
|
||||
size: %Dz
|
||||
links: %Dl
|
||||
" "$destination"
|
||||
;;
|
||||
*)
|
||||
stat --printf="type: %F
|
||||
|
|
|
@ -25,13 +25,20 @@ destination="/$__object_id"
|
|||
|
||||
os=$("$__explorer/os")
|
||||
case "$os" in
|
||||
"freebsd")
|
||||
"freebsd"|"openbsd")
|
||||
# FIXME: should be something like this based on man page, but can not test
|
||||
stat -f "type: %ST
|
||||
owner: %Du %Su
|
||||
group: %Dg %Sg
|
||||
mode: %Op %Sp
|
||||
" "$destination"
|
||||
;;
|
||||
"macosx")
|
||||
stat -f "type: %HT
|
||||
owner: %Du %Su
|
||||
group: %Dg %Sg
|
||||
mode: %Lp %Sp
|
||||
" "$destination"
|
||||
;;
|
||||
*)
|
||||
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")
|
||||
case "$os" in
|
||||
"freebsd")
|
||||
"freebsd"|"openbsd")
|
||||
# FIXME: should be something like this based on man page, but can not test
|
||||
stat -f "type: %ST
|
||||
owner: %Du %Su
|
||||
|
@ -33,6 +33,15 @@ group: %Dg %Sg
|
|||
mode: %Op %Sp
|
||||
size: %Dz
|
||||
links: %Dl
|
||||
" "$destination"
|
||||
;;
|
||||
"macosx")
|
||||
stat -f "type: %HT
|
||||
owner: %Du %Su
|
||||
group: %Dg %Sg
|
||||
mode: %Lp %Sp
|
||||
size: %Dz
|
||||
links: %Dl
|
||||
" "$destination"
|
||||
;;
|
||||
*)
|
||||
|
|
|
@ -26,6 +26,7 @@ state::
|
|||
|
||||
branch::
|
||||
Create this branch by checking out the remote branch of this name
|
||||
Default branch is "master"
|
||||
|
||||
group::
|
||||
Group to chgrp to.
|
||||
|
|
|
@ -24,6 +24,9 @@
|
|||
__package git --state present
|
||||
|
||||
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
|
||||
|
||||
|
@ -33,7 +36,10 @@ case "$state_should" in
|
|||
;;
|
||||
|
||||
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
|
||||
#
|
||||
|
||||
# Almost any distribution
|
||||
if [ -f /etc/hostname ]; then
|
||||
cat /etc/hostname
|
||||
# SuSE
|
||||
elif [ -f /etc/HOSTNAME ]; then
|
||||
cat /etc/HOSTNAME
|
||||
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")
|
||||
name_running=$(cat "$__global/explorer/hostname")
|
||||
name_config=$(cat "$__object/explorer/hostname_file")
|
||||
name_sysconfig=$(cat "$__object/explorer/hostname_sysconfig")
|
||||
has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl")
|
||||
|
||||
################################################################################
|
||||
# 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
|
||||
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
|
||||
|
@ -45,6 +59,17 @@ echo changed >> "$__messages_out"
|
|||
if [ "$has_hostnamectl" ]; then
|
||||
echo "hostnamectl set-hostname '$name_should'"
|
||||
else
|
||||
case "$os" in
|
||||
archlinux|debian|ubuntu)
|
||||
echo "hostname '$name_should'"
|
||||
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
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
#
|
||||
|
||||
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() {
|
||||
echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
|
||||
|
@ -28,10 +34,17 @@ not_supported() {
|
|||
}
|
||||
|
||||
case "$os" in
|
||||
archlinux|debian|ubuntu)
|
||||
archlinux|debian|suse|ubuntu)
|
||||
# handled in gencode-remote
|
||||
:
|
||||
;;
|
||||
centos)
|
||||
__key_value sysconfig-hostname \
|
||||
--file /etc/sysconfig/network \
|
||||
--delimiter '=' \
|
||||
--key HOSTNAME \
|
||||
--value "$name_should" --exact_delimiter
|
||||
;;
|
||||
*)
|
||||
not_supported
|
||||
;;
|
||||
|
|
|
@ -41,7 +41,7 @@ __iptables_rule established --rule "-A INPUT -m state --state RELATED,ESTABLISH
|
|||
|
||||
# Some service rules
|
||||
__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"
|
||||
|
||||
# Ensure some rules are not present anymore
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#set -x
|
||||
|
||||
if [ -f "$__object/parameter/jaildir" ]; then
|
||||
jaildir="$(cat "$__object/parameter/name")"
|
||||
jaildir="$(cat "$__object/parameter/jaildir")"
|
||||
else
|
||||
jaildir="/usr/jail"
|
||||
fi
|
||||
|
|
|
@ -32,7 +32,7 @@ else
|
|||
fi
|
||||
|
||||
if [ -f "$__object/parameter/jaildir" ]; then
|
||||
jaildir="$(cat "$__object/parameter/name")"
|
||||
jaildir="$(cat "$__object/parameter/jaildir")"
|
||||
else
|
||||
jaildir="/usr/jail"
|
||||
fi
|
||||
|
|
|
@ -32,14 +32,14 @@ else
|
|||
fi
|
||||
|
||||
if [ -f "$__object/parameter/jaildir" ]; then
|
||||
jaildir="$(cat "$__object/parameter/name")"
|
||||
jaildir="$(cat "$__object/parameter/jaildir")"
|
||||
else
|
||||
jaildir="/usr/jail"
|
||||
fi
|
||||
# backslash-escaped $jaildir
|
||||
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
|
||||
echo "STARTED"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/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.
|
||||
#
|
||||
|
@ -104,6 +104,7 @@ stopJail() {
|
|||
# Check $status before issuing command
|
||||
if [ "$status" = "STARTED" ]; then
|
||||
echo "/etc/rc.d/jail stop ${name}"
|
||||
echo "stop" >> "$__messages_out"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -111,6 +112,7 @@ startJail() {
|
|||
# Check $status before issuing command
|
||||
if [ "$status" = "NOTSTART" ]; then
|
||||
echo "/etc/rc.d/jail start ${name}"
|
||||
echo "start" >> "$__messages_out"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -162,6 +164,7 @@ EOF
|
|||
rm -f /etc/rc.conf.bak
|
||||
fi
|
||||
EOF
|
||||
echo "delete" >> "$__messages_out"
|
||||
}
|
||||
|
||||
createJail() {
|
||||
|
@ -215,6 +218,7 @@ cat <<EOF
|
|||
fi
|
||||
|
||||
EOF
|
||||
echo "create" >> "$__messages_out"
|
||||
|
||||
# Create the ro+rw mountpoint entries in fstab
|
||||
cat <<EOF
|
||||
|
@ -310,6 +314,7 @@ if [ "$onboot" = "yes" ]; then
|
|||
fi
|
||||
unset jail_list
|
||||
EOF
|
||||
echo "onboot" >> "$__messages_out"
|
||||
fi
|
||||
|
||||
# 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
|
||||
-------------------
|
||||
state::
|
||||
Either "present" or "absent."
|
||||
Either "present" or "absent", defaults to "present".
|
||||
|
||||
jailbase::
|
||||
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
|
||||
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
|
||||
--------
|
||||
|
||||
|
|
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
|
||||
jaildir
|
||||
jailbase
|
||||
state
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||
# 2014 Daniel Heule (hda at sfs.biz)
|
||||
#
|
||||
# This file is part of cdist.
|
||||
#
|
||||
|
@ -18,36 +19,85 @@
|
|||
# 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")"
|
||||
state="$(cat "$__object/parameter/state" 2>/dev/null \
|
||||
|| echo "present")"
|
||||
file="$(cat "$__object/parameter/file")"
|
||||
delimiter="$(cat "$__object/parameter/delimiter")"
|
||||
value="$(cat "$__object/parameter/value" 2>/dev/null \
|
||||
|| echo "__CDIST_NOTSET__")"
|
||||
export state="$(cat "$__object/parameter/state")"
|
||||
|
||||
case "$state" in
|
||||
absent)
|
||||
if grep -q -E "^$key$delimiter+" "$file"; then
|
||||
# if the key exists, with whatever value, we will have to remove it
|
||||
# so report it as present
|
||||
echo present
|
||||
else
|
||||
# key does not exist
|
||||
echo absent
|
||||
fi
|
||||
;;
|
||||
present)
|
||||
if grep -q -E "^$key$delimiter+$value$" "$file"; then
|
||||
# key exists and value is same
|
||||
echo present
|
||||
elif grep -q -E "^$key$delimiter+" "$file"; then
|
||||
# key exists, but value is empty or different
|
||||
echo wrongvalue
|
||||
else
|
||||
# key does not exist
|
||||
echo absent
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
file="$(cat "$__object/parameter/file")"
|
||||
|
||||
if [ ! -f "$file" ]; then
|
||||
echo "nosuchfile"
|
||||
exit
|
||||
fi
|
||||
|
||||
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
|
||||
|
||||
awk -f - "$file" <<"AWK_EOF"
|
||||
BEGIN {
|
||||
state=ENVIRON["state"]
|
||||
key=ENVIRON["key"]
|
||||
delimiter=ENVIRON["delimiter"]
|
||||
value=ENVIRON["value"]
|
||||
exact_delimiter=ENVIRON["exact_delimiter"]
|
||||
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
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
@ -19,52 +20,56 @@
|
|||
# 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")"
|
||||
|
||||
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" = "$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
|
||||
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
|
||||
absent)
|
||||
# add new key and value
|
||||
printf 'echo "%s%s%s" >> "%s"' "$key" "$delimiter" "$value_escaped" "$file"
|
||||
absent|nosuchfile)
|
||||
# nothing to do
|
||||
;;
|
||||
wrongvalue)
|
||||
# change exisiting value
|
||||
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
|
||||
wrongformat|wrongvalue|present)
|
||||
echo "remove" >> "$__messages_out"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown explorer state: $state_is" >&2
|
||||
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
|
||||
;;
|
||||
*)
|
||||
echo "Unknown state: $state_should" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
cat "$__type/files/remote_script.sh"
|
||||
|
|
|
@ -31,6 +31,30 @@ key::
|
|||
The key to change. Defaults to object_id.
|
||||
value::
|
||||
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
|
||||
|
@ -46,13 +70,19 @@ __key_value my-fancy-id --file /etc/login.defs --key SYS_UID_MAX --value 666 \
|
|||
|
||||
# Enable packet forwarding
|
||||
__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
|
||||
__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
|
||||
--------
|
||||
- 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
|
||||
value
|
||||
state
|
||||
comment
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 2012 Nico Schottelius (nico-cdist at schottelius.org)
|
||||
# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||
#
|
||||
# This file is part of cdist.
|
||||
#
|
||||
|
@ -74,8 +75,13 @@ case "$state_should" in
|
|||
fi
|
||||
|
||||
cat << eof
|
||||
tmp=\$(mktemp)
|
||||
grep -v $greparg '$regex' '$file' > \$tmp && cat "\$tmp" > '$file' && rm -f "\$tmp"
|
||||
tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
|
||||
# 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
|
||||
;;
|
||||
*)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/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.
|
||||
#
|
||||
|
@ -34,8 +34,13 @@ case "$type" in
|
|||
symbolic)
|
||||
cd "$destination_dir"
|
||||
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
|
||||
else
|
||||
echo wrongsource
|
||||
fi
|
||||
else
|
||||
echo absent
|
||||
fi
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
@ -18,9 +18,6 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# Mostly a wrapper for ln
|
||||
#
|
||||
|
||||
destination="/$__object_id"
|
||||
|
||||
|
@ -50,20 +47,22 @@ case "$state_should" in
|
|||
present)
|
||||
if [ "$file_type" = "directory" ]; then
|
||||
# our destination is currently a directory, delete it
|
||||
cat << DONE
|
||||
rm -rf "$destination"
|
||||
DONE
|
||||
printf 'rm -rf "%s" &&\n' "$destination"
|
||||
else
|
||||
if [ "$state_is" = "wrongsource" ]; then
|
||||
# our destination is a symlink but points to the wrong source,
|
||||
# delete it
|
||||
printf 'rm -f "%s" &&\n' "$destination"
|
||||
fi
|
||||
fi
|
||||
|
||||
# create our link
|
||||
cat << DONE
|
||||
ln ${lnopt} -f "$source" "$destination"
|
||||
DONE
|
||||
printf 'ln %s -f "%s" "%s"\n' "$lnopt" "$source" "$destination"
|
||||
;;
|
||||
absent)
|
||||
# only delete if it is a sym/hard link
|
||||
if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then
|
||||
echo rm -f \"$destination\"
|
||||
printf 'rm -f "%s"\n' "$destination"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
|
|
|
@ -16,7 +16,7 @@ This cdist type allows you to setup locales.
|
|||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
state::
|
||||
'present' or 'absent'
|
||||
'present' or 'absent', defaults to present
|
||||
|
||||
|
||||
EXAMPLES
|
||||
|
@ -43,5 +43,5 @@ SEE ALSO
|
|||
|
||||
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).
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/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.
|
||||
#
|
||||
|
@ -29,4 +29,12 @@ case "$os" in
|
|||
# Debian needs a seperate package
|
||||
__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
|
||||
|
|
|
@ -50,8 +50,11 @@ fi
|
|||
|
||||
pkg_version="$(cat "$__object/explorer/pkg_version")"
|
||||
|
||||
# TODO: Shouldn't be hardcoded
|
||||
echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$machine/
|
||||
if [ -f "$__object/parameter/pkg_path" ]; then
|
||||
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
|
||||
state_is="present"
|
||||
|
@ -65,10 +68,16 @@ case "$state_should" in
|
|||
present)
|
||||
# use this because pkg_add doesn't properly handle errors
|
||||
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
|
||||
if [ -n "\$status" ]; then
|
||||
# We didn't find the package in the list of 'installed packages', so it failed
|
||||
# This is necessary because pkg_add doesn't return properly
|
||||
if [ \$? -ne 0 ]; then
|
||||
if [ -z "\${status}" ]; then
|
||||
status="Failed to add package, uncaught exception."
|
||||
fi
|
||||
echo "Error: \$status"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -79,9 +88,14 @@ eof
|
|||
# use this because pkg_add doesn't properly handle errors
|
||||
cat << eof
|
||||
status=\$(pkg_delete "$pkgopts" "$name--$flavor")
|
||||
pkg_info | grep "^${name}.*${flavor}" > /dev/null 2>&1
|
||||
|
||||
# no error
|
||||
if [ -n "\$status" ]; then
|
||||
# We found the package in the list of 'installed packages'
|
||||
# This would indicate that pkg_delete failed, send the output of pkg_delete
|
||||
if [ \$? -eq 0 ]; then
|
||||
if [ -z "\${status}" ]; then
|
||||
status="Failed to remove package, uncaught exception."
|
||||
fi
|
||||
echo "Error: \$status"
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -29,6 +29,8 @@ flavor::
|
|||
state::
|
||||
Either "present" or "absent", defaults to "present"
|
||||
|
||||
pkg_path::
|
||||
Manually specify a PKG_PATH to add packages from.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
@ -45,6 +47,10 @@ __package_pkg_openbsd python --state present --name python2
|
|||
|
||||
# Remove obsolete package
|
||||
__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
|
||||
flavor
|
||||
state
|
||||
pkg_path
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/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.
|
||||
#
|
||||
|
@ -27,6 +27,14 @@ else
|
|||
name="$__object_id"
|
||||
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")"
|
||||
|
||||
if grep -q -E "(centos|redhat|amazon)" "$__global/explorer/os"; then
|
||||
|
@ -47,7 +55,7 @@ fi
|
|||
|
||||
case "$state_should" in
|
||||
present)
|
||||
echo yum $opts install \"$name\"
|
||||
echo yum $opts install \"$install_name\"
|
||||
;;
|
||||
absent)
|
||||
echo yum $opts remove \"$name\"
|
||||
|
|
|
@ -27,6 +27,8 @@ name::
|
|||
|
||||
state::
|
||||
Either "present" or "absent", defaults to "present"
|
||||
url::
|
||||
URL to use for the package
|
||||
|
||||
|
||||
EXAMPLES
|
||||
|
@ -41,6 +43,9 @@ __package_yum python --state present --name python2
|
|||
|
||||
# Remove obsolete package
|
||||
__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
|
||||
state
|
||||
url
|
||||
|
|
|
@ -16,7 +16,7 @@ This type is used on *BSD systems to manage the pf firewall's ruleset.
|
|||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
state::
|
||||
Either "absent" (no ruleset at all) or "present"
|
||||
Either "absent" (no ruleset at all) or "present", defaults to "present".
|
||||
|
||||
|
||||
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
|
||||
state
|
||||
|
|
|
@ -19,8 +19,7 @@
|
|||
#
|
||||
|
||||
name="$__object_id"
|
||||
state_should="present"
|
||||
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
|
||||
state_should="$(cat "$__object/parameter/state")"
|
||||
state_is="$(cat "$__object/explorer/state")"
|
||||
|
||||
if [ "$state_should" != "$state_is" ]; then
|
||||
|
|
|
@ -16,7 +16,7 @@ This cdist type allows you to create or drop postgres databases.
|
|||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
state::
|
||||
either 'present' or 'absent'
|
||||
either 'present' or 'absent', defaults to 'present'.
|
||||
|
||||
owner::
|
||||
the role owning this database
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
present
|
|
@ -20,8 +20,7 @@
|
|||
|
||||
name="$__object_id"
|
||||
state_is="$(cat "$__object/explorer/state")"
|
||||
state_should="present"
|
||||
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
|
||||
state_should="$(cat "$__object/parameter/state")"
|
||||
|
||||
[ "$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.
|
||||
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
size::
|
||||
Size of the image in qemu-img compatible units.
|
||||
See qemu-img(1).
|
||||
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
state::
|
||||
Either "present" or "absent", defaults to "present"
|
||||
size::
|
||||
Size of the image in qemu-img compatible units.
|
||||
|
||||
Required if state is "present".
|
||||
|
||||
|
||||
EXAMPLES
|
||||
|
@ -42,9 +40,10 @@ __qemu_img /home/services/kvm/vm/myoldvm/system-disk --state absent
|
|||
SEE ALSO
|
||||
--------
|
||||
- cdist-type(7)
|
||||
- qemu-img(1)
|
||||
|
||||
|
||||
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).
|
||||
|
|
|
@ -3,11 +3,23 @@
|
|||
#
|
||||
|
||||
format="$(cat "$__object/parameter/format")"
|
||||
state="$(cat "$__object/parameter/state")"
|
||||
state_should="$(cat "$__object/parameter/state")"
|
||||
|
||||
diskimage="/$__object_id"
|
||||
|
||||
# Absent is ensured by __file, present by gencode-remote
|
||||
if [ "$state" = "absent" ]; then
|
||||
case "$state_should" in
|
||||
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
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported state: $state_should" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
format
|
||||
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
|
||||
-------------------
|
||||
state::
|
||||
Either "present" or "absent".
|
||||
Either "present" or "absent", defaults to "present".
|
||||
|
||||
|
||||
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::
|
||||
The gemset to use
|
||||
state::
|
||||
Either "present" or "absent"
|
||||
Either "present" or "absent", defaults to "present".
|
||||
|
||||
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
|
||||
state
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
state
|
||||
gemset
|
||||
user
|
||||
|
|
|
@ -18,7 +18,7 @@ REQUIRED PARAMETERS
|
|||
user::
|
||||
The remote user account to use
|
||||
state::
|
||||
Either "present" or "absent".
|
||||
Either "present" or "absent", defaults to "present".
|
||||
|
||||
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
|
||||
|
|
|
@ -18,7 +18,7 @@ REQUIRED PARAMETERS
|
|||
user::
|
||||
The remote user account to use
|
||||
state::
|
||||
Either "present" or "absent".
|
||||
Either "present" or "absent", defaults to "present".
|
||||
|
||||
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
|
||||
|
|
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::
|
||||
an alternative destination file, defaults to ~$owner/.ssh/authorized_keys
|
||||
|
||||
comment::
|
||||
an optional comment
|
||||
|
||||
|
||||
BOOLEAN PARAMETERS
|
||||
------------------
|
||||
|
@ -67,12 +64,11 @@ __ssh_authorized_keys root \
|
|||
__ssh_authorized_keys user-name \
|
||||
--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 \
|
||||
--owner user-name \
|
||||
--key "ssh-rsa AXYZAAB3NzaC1yc2..." \
|
||||
--key "ssh-rsa AZXYAAB3NzaC1yc2..." \
|
||||
--comment "allow the members of project foo to login"
|
||||
--key "ssh-rsa AZXYAAB3NzaC1yc2..."
|
||||
|
||||
# same as above, but authorized_keys file in non standard location
|
||||
__ssh_authorized_keys some-fancy-id \
|
||||
|
@ -97,5 +93,5 @@ SEE ALSO
|
|||
|
||||
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).
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/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.
|
||||
#
|
||||
|
@ -32,7 +33,7 @@ else
|
|||
fi
|
||||
|
||||
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
|
||||
echo "Failed to get owners group from explorer." >&2
|
||||
exit 1
|
||||
|
@ -56,16 +57,32 @@ if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ];
|
|||
fi
|
||||
fi
|
||||
|
||||
# Generate entry for inclusion in authorized_keys file
|
||||
(
|
||||
if [ -f "$__object/parameter/comment" ]; then
|
||||
echo "# $(cat "$__object/parameter/comment")"
|
||||
fi
|
||||
cat "$__object/parameter/key"
|
||||
) | \
|
||||
# Remove legacy blocks created by old versions of this type
|
||||
# FIXME: remove me in 3.2+
|
||||
__block "$__object_name" \
|
||||
--file "$file" \
|
||||
--prefix "#cdist:$__object_name" \
|
||||
--suffix "#/cdist:$__object_name" \
|
||||
--state "$state" \
|
||||
--text -
|
||||
--state 'absent' \
|
||||
--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
|
||||
state
|
||||
file
|
||||
comment
|
||||
|
|
|
@ -27,13 +27,18 @@ os=$(cat "$__global/explorer/os")
|
|||
|
||||
case "$os" in
|
||||
archlinux|debian|ubuntu)
|
||||
__package tzdata --state present
|
||||
require="__package/tzdata" __link /etc/localtime \
|
||||
--source "/usr/share/zoneinfo/${timezone}" \
|
||||
--type symbolic
|
||||
package=tzdata
|
||||
;;
|
||||
suse)
|
||||
package=timezone
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported OS $os" >&2
|
||||
exit 1
|
||||
;;
|
||||
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
|
||||
database="shadow"
|
||||
|
||||
if [ "$os" = "freebsd" ]; then
|
||||
database="passwd"
|
||||
fi
|
||||
case "$os" in
|
||||
"freebsd"|"openbsd") database="passwd";;
|
||||
esac
|
||||
|
||||
|
||||
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/>.
|
||||
#
|
||||
#
|
||||
# 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
|
||||
uri="$(cat "$__object/parameter/repo_uri")"
|
||||
if [ -f "$__object/parameter/uri" ]; then
|
||||
uri="$(cat "$__object/parameter/uri")"
|
||||
else
|
||||
uri="$__object_id"
|
||||
fi
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#exec >&2
|
||||
#set -x
|
||||
|
||||
zypper_def_opts=" -q "
|
||||
zypper_def_opts=" -q --non-interactive --gpg-auto-import-keys "
|
||||
|
||||
if [ -f "$__object/parameter/repo_desc" ]; then
|
||||
desc="$(cat "$__object/parameter/repo_desc")"
|
||||
|
@ -33,8 +33,8 @@ else
|
|||
desc="$__object_id"
|
||||
fi
|
||||
|
||||
if [ -f "$__object/parameter/repo_uri" ]; then
|
||||
uri="$(cat "$__object/parameter/repo_uri")"
|
||||
if [ -f "$__object/parameter/uri" ]; then
|
||||
uri="$(cat "$__object/parameter/uri")"
|
||||
else
|
||||
uri="$__object_id"
|
||||
fi
|
||||
|
@ -65,7 +65,7 @@ fi
|
|||
case "$state" in
|
||||
present)
|
||||
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
|
||||
fi
|
||||
if [ -z "$repo_id" ]; then
|
||||
|
|
|
@ -22,13 +22,13 @@ OPTIONAL PARAMETERS
|
|||
-------------------
|
||||
state::
|
||||
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 +
|
||||
for all following states, the repo can be searched via repo_id or repo_uri +
|
||||
#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 uri +
|
||||
#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 +
|
||||
#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.
|
||||
|
||||
repo_desc::
|
||||
|
@ -43,10 +43,10 @@ EXAMPLES
|
|||
|
||||
--------------------------------------------------------------------------------
|
||||
# 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
|
||||
__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)
|
||||
__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
|
||||
|
||||
# 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
|
||||
__zypper_repo testrepo4 --state disabled --repo_id 4
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
state
|
||||
repo_uri
|
||||
uri
|
||||
repo_desc
|
||||
repo_id
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
#
|
||||
# Manage services with Zypper (mostly suse)
|
||||
#
|
||||
if [ -f "$__object/parameter/service_uri" ]; then
|
||||
uri="$(cat "$__object/parameter/service_uri")"
|
||||
if [ -f "$__object/parameter/uri" ]; then
|
||||
uri="$(cat "$__object/parameter/uri")"
|
||||
else
|
||||
uri="/$__object_id"
|
||||
fi
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
#
|
||||
# Manage services with Zypper (mostly suse)
|
||||
#
|
||||
if [ -f "$__object/parameter/service_uri" ]; then
|
||||
uri="$(cat "$__object/parameter/service_uri")"
|
||||
if [ -f "$__object/parameter/uri" ]; then
|
||||
uri="$(cat "$__object/parameter/uri")"
|
||||
else
|
||||
uri="/$__object_id"
|
||||
fi
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue