From a9d0bfee16c484696b0a1230bb6b94ad29a9adfc Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 15 Mar 2011 16:47:40 +0100 Subject: [PATCH] new type __user Signed-off-by: Steven Armstrong --- conf/type/__user/TODO | 3 ++ conf/type/__user/explorer/passwd | 27 +++++++++++++ conf/type/__user/gencode | 44 ++++++++++++++++++++ conf/type/__user/man.text | 62 +++++++++++++++++++++++++++++ conf/type/__user/parameter/optional | 7 ++++ 5 files changed, 143 insertions(+) create mode 100644 conf/type/__user/TODO create mode 100755 conf/type/__user/explorer/passwd create mode 100755 conf/type/__user/gencode create mode 100644 conf/type/__user/man.text create mode 100644 conf/type/__user/parameter/optional diff --git a/conf/type/__user/TODO b/conf/type/__user/TODO new file mode 100644 index 00000000..5c2eec7d --- /dev/null +++ b/conf/type/__user/TODO @@ -0,0 +1,3 @@ +- gencode: compair new value with existing one in $__object/explorer/passwd, only change if nessecary +- delete users + diff --git a/conf/type/__user/explorer/passwd b/conf/type/__user/explorer/passwd new file mode 100755 index 00000000..fdbfb193 --- /dev/null +++ b/conf/type/__user/explorer/passwd @@ -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 users passwd entry. +# + +name=$__object_id + +getent passwd "$name" || true + diff --git a/conf/type/__user/gencode b/conf/type/__user/gencode new file mode 100755 index 00000000..7445d6f8 --- /dev/null +++ b/conf/type/__user/gencode @@ -0,0 +1,44 @@ +#!/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 users. +# + +name="$__object_id" + +command= +if grep -q "^$name" "$__object/explorer/passwd"; then + # user exists + command="usermod" +else + # user does not exist + command="useradd" +fi + + +set -- "$@" +cd "$__object/parameter" +for property in $(ls .); do + # TODO: compair new value with existing one in $__object/explorer/passwd, only change if nessecary + set -- "$@" "--$property" "$(cat "$property")" +done + +echo $command $@ $name + diff --git a/conf/type/__user/man.text b/conf/type/__user/man.text new file mode 100644 index 00000000..e571c7c5 --- /dev/null +++ b/conf/type/__user/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/__user/parameter/optional b/conf/type/__user/parameter/optional new file mode 100644 index 00000000..fe02e227 --- /dev/null +++ b/conf/type/__user/parameter/optional @@ -0,0 +1,7 @@ +comment +home +gid +groups +password +shell +uid