commit
057671c61c
@ -0,0 +1,33 @@ |
||||
#!/bin/sh |
||||
# |
||||
# 2011 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/>. |
||||
# |
||||
# |
||||
# Get the current value of key or __NOTSET__ if the key doesn't exist. |
||||
# |
||||
|
||||
key="$(cat "$__object/parameter/key")" |
||||
file="$(cat "$__object/parameter/file")" |
||||
delimiter="$(cat "$__object/parameter/delimiter")" |
||||
|
||||
awk -F "$delimiter" ' |
||||
BEGIN { found=0 } |
||||
/^'$key'/ { print $2; found=1 } |
||||
END { if (found) exit 0; else exit 1 }' "$file" \ |
||||
|| echo "__NOTSET__" |
||||
|
@ -0,0 +1,52 @@ |
||||
#!/bin/sh |
||||
# |
||||
# 2011 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/>. |
||||
# |
||||
|
||||
value_is="$(cat "$__object/explorer/value")" |
||||
value_should="$(cat "$__object/parameter/value")" |
||||
|
||||
key="$(cat "$__object/parameter/key")" |
||||
file="$(cat "$__object/parameter/file")" |
||||
delimiter="$(cat "$__object/parameter/delimiter")" |
||||
|
||||
if [ "$value_is" != "$value_should" ]; then |
||||
case "$value_is" in |
||||
__NOTSET__) |
||||
# add key and value |
||||
echo "echo \"${key}${delimiter}${value_should}\" >> \"$file\"" |
||||
;; |
||||
*) |
||||
if [ "$value_should" = '__NOTSET__' ]; then |
||||
# remove key and value |
||||
cat << DONE |
||||
sed -i '/^${key}/d' "$file" |
||||
DONE |
||||
else |
||||
# change value |
||||
cat << DONE |
||||
awk -F "$delimiter" ' |
||||
/${key}${delimiter}*/{gsub(/$value_is/, $value_should)};{print}' "$file" > "${file}+" \ |
||||
&& mv "${file}+" "$file" |
||||
|
||||
DONE |
||||
fi |
||||
;; |
||||
esac |
||||
fi |
||||
|
@ -0,0 +1,59 @@ |
||||
cdist-type__key_value(7) |
||||
======================== |
||||
Steven Armstrong <steven-cdist--@--armstrong.cc> |
||||
|
||||
|
||||
NAME |
||||
---- |
||||
cdist-type__key_value - Change property values in files |
||||
|
||||
|
||||
DESCRIPTION |
||||
----------- |
||||
This cdist type allows you to change values in a key value based config |
||||
file. |
||||
|
||||
|
||||
REQUIRED PARAMETERS |
||||
------------------- |
||||
value:: |
||||
The value for the key. Setting the value to __NOTSET__ will remove the key |
||||
from the file. |
||||
file:: |
||||
The file to operate on. |
||||
delimiter:: |
||||
The delimiter which seperates the key from the value. |
||||
|
||||
|
||||
OPTIONAL PARAMETERS |
||||
------------------- |
||||
key:: |
||||
The key to change. Defaults to object_id. |
||||
|
||||
|
||||
EXAMPLES |
||||
-------- |
||||
|
||||
-------------------------------------------------------------------------------- |
||||
# Set the maximum system user id |
||||
__key_value SYS_UID_MAX --file /etc/login.defs --value 666 --delimiter ' ' |
||||
|
||||
# Same with fancy id |
||||
__key_value my-fancy-id --file /etc/login.defs --key SYS_UID_MAX --value 666 \ |
||||
--delimiter ' ' |
||||
|
||||
# Enable packet forwarding |
||||
__key_value net.ipv4.ip_forward --file /etc/sysctl.conf --value 1 \ |
||||
--delimiter '=' |
||||
-------------------------------------------------------------------------------- |
||||
|
||||
|
||||
SEE ALSO |
||||
-------- |
||||
- cdist-type(7) |
||||
|
||||
|
||||
COPYING |
||||
------- |
||||
Copyright \(C) 2011 Steven Armstrong. Free use of this software is |
||||
granted under the terms of the GNU General Public License version 3 (GPLv3). |
@ -0,0 +1,26 @@ |
||||
#!/bin/sh |
||||
# |
||||
# 2011 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/>. |
||||
# |
||||
|
||||
if [ -f "$__object/parameter/key" ]; then |
||||
key="$(cat "$__object/parameter/key")" |
||||
else |
||||
echo "$__object_id" > "$__object/parameter/key" |
||||
fi |
||||
|
@ -0,0 +1 @@ |
||||
key |
@ -0,0 +1,3 @@ |
||||
value |
||||
file |
||||
delimiter |
Loading…
Reference in new issue