From ec99a22db61ee537836334fdfaa57f5968325b18 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 15 Mar 2011 23:37:17 +0100 Subject: [PATCH] add new type __group Signed-off-by: Steven Armstrong --- conf/type/__group/TODO | 2 + conf/type/__group/explorer/group | 27 ++++++++++++ conf/type/__group/explorer/gshadow | 27 ++++++++++++ conf/type/__group/gencode | 66 ++++++++++++++++++++++++++++ conf/type/__group/man.text | 62 ++++++++++++++++++++++++++ conf/type/__group/parameter/optional | 2 + 6 files changed, 186 insertions(+) create mode 100644 conf/type/__group/TODO create mode 100755 conf/type/__group/explorer/group create mode 100755 conf/type/__group/explorer/gshadow create mode 100755 conf/type/__group/gencode create mode 100644 conf/type/__group/man.text create mode 100644 conf/type/__group/parameter/optional diff --git a/conf/type/__group/TODO b/conf/type/__group/TODO new file mode 100644 index 00000000..c20a5d21 --- /dev/null +++ b/conf/type/__group/TODO @@ -0,0 +1,2 @@ +- delete groups + diff --git a/conf/type/__group/explorer/group b/conf/type/__group/explorer/group new file mode 100755 index 00000000..4c1e6ac0 --- /dev/null +++ b/conf/type/__group/explorer/group @@ -0,0 +1,27 @@ +#!/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 . +# +# +# Get an existing groups group entry. +# + +name=$__object_id + +getent group "$name" || true + diff --git a/conf/type/__group/explorer/gshadow b/conf/type/__group/explorer/gshadow new file mode 100755 index 00000000..51d502a1 --- /dev/null +++ b/conf/type/__group/explorer/gshadow @@ -0,0 +1,27 @@ +#!/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 . +# +# +# Get an existing groups gshadow entry. +# + +name=$__object_id + +getent gshadow "$name" || true + diff --git a/conf/type/__group/gencode b/conf/type/__group/gencode new file mode 100755 index 00000000..527a6079 --- /dev/null +++ b/conf/type/__group/gencode @@ -0,0 +1,66 @@ +#!/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 . +# +# +# Manage groups. +# + +name="$__object_id" + +command= +if grep -q "^$name" "$__object/explorer/group"; then + # group exists + command="groupmod" +else + # group does not exist + command="groupadd" +fi + + +get_current_value() { + local key="$1" + local index + case "$key" in + password) + cut -d':' -f 2 "$__object/explorer/gshadow" + break + ;; + gid) index=3;; + esac + cut -d':' -f $index "$__object/explorer/group" +} + + +set -- "$@" +cd "$__object/parameter" +for property in $(ls .); do + current_value=$(get_current_value "$property") + new_value="$(cat "$property")" + if [ "$new_value" != "$current_value" ]; then + # Shedule changed properties for update + set -- "$@" "--$property" \"$new_value\" + fi +done + + +if [ $# -gt 0 ]; then + # Update changed properties + echo $command $@ $name +fi + diff --git a/conf/type/__group/man.text b/conf/type/__group/man.text new file mode 100644 index 00000000..e571c7c5 --- /dev/null +++ b/conf/type/__group/man.text @@ -0,0 +1,62 @@ +cdist-type__user(7) +=================== +Steven Armstrong + + +NAME +---- +cdist-type__user - Manage users + + +DESCRIPTION +----------- +This cdist type allows you to create or modify users on the target. + + +REQUIRED PARAMETERS +------------------- +None. + + +OPTIONAL PARAMETERS +------------------- +comment:: + see usermod(8) +home:: + see above +gid:: + see above +groups:: + see above +password:: + see above +shell:: + see above +uid:: + see above + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Create user account for foobar with operating system default settings +__user foobar + +# Same but with a different shell +__user foobar --shell /bin/zsh + +# Set explicit uid and home +__user foobar --uid 1001 --shell /bin/zsh --home /home/foobar +-------------------------------------------------------------------------------- + + +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). diff --git a/conf/type/__group/parameter/optional b/conf/type/__group/parameter/optional new file mode 100644 index 00000000..4c661c8f --- /dev/null +++ b/conf/type/__group/parameter/optional @@ -0,0 +1,2 @@ +gid +password