add new type __group
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								58718f735a
							
						
					
				
			
			
				commit
				
					
						ec99a22db6
					
				
			
		
					 6 changed files with 186 additions and 0 deletions
				
			
		
							
								
								
									
										2
									
								
								conf/type/__group/TODO
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								conf/type/__group/TODO
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | - delete groups | ||||||
|  | 
 | ||||||
							
								
								
									
										27
									
								
								conf/type/__group/explorer/group
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								conf/type/__group/explorer/group
									
										
									
									
									
										Executable file
									
								
							|  | @ -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 <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # | ||||||
|  | # Get an existing groups group entry. | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | name=$__object_id | ||||||
|  | 
 | ||||||
|  | getent group "$name" || true | ||||||
|  | 
 | ||||||
							
								
								
									
										27
									
								
								conf/type/__group/explorer/gshadow
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								conf/type/__group/explorer/gshadow
									
										
									
									
									
										Executable file
									
								
							|  | @ -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 <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # | ||||||
|  | # Get an existing groups gshadow entry. | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | name=$__object_id | ||||||
|  | 
 | ||||||
|  | getent gshadow "$name" || true | ||||||
|  | 
 | ||||||
							
								
								
									
										66
									
								
								conf/type/__group/gencode
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								conf/type/__group/gencode
									
										
									
									
									
										Executable file
									
								
							|  | @ -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 <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # | ||||||
|  | # 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 | ||||||
|  | 
 | ||||||
							
								
								
									
										62
									
								
								conf/type/__group/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								conf/type/__group/man.text
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,62 @@ | ||||||
|  | cdist-type__user(7) | ||||||
|  | =================== | ||||||
|  | Steven Armstrong <steven-cdist--@--armstrong.cc> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 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). | ||||||
							
								
								
									
										2
									
								
								conf/type/__group/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								conf/type/__group/parameter/optional
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | gid | ||||||
|  | password | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue