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