forked from ungleich-public/cdist
		
	new type __key_value
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								15b1bdab77
							
						
					
				
			
			
				commit
				
					
						e27501218f
					
				
			
		
					 6 changed files with 174 additions and 0 deletions
				
			
		
							
								
								
									
										33
									
								
								conf/type/__key_value/explorer/value
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								conf/type/__key_value/explorer/value
									
										
									
									
									
										Executable file
									
								
							|  | @ -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__" | ||||||
|  | 
 | ||||||
							
								
								
									
										52
									
								
								conf/type/__key_value/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										52
									
								
								conf/type/__key_value/gencode-remote
									
										
									
									
									
										Executable file
									
								
							|  | @ -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 | ||||||
|  | 
 | ||||||
							
								
								
									
										59
									
								
								conf/type/__key_value/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								conf/type/__key_value/man.text
									
										
									
									
									
										Normal file
									
								
							|  | @ -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). | ||||||
							
								
								
									
										26
									
								
								conf/type/__key_value/manifest
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								conf/type/__key_value/manifest
									
										
									
									
									
										Executable file
									
								
							|  | @ -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 | ||||||
|  | 
 | ||||||
							
								
								
									
										1
									
								
								conf/type/__key_value/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								conf/type/__key_value/parameter/optional
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | key | ||||||
							
								
								
									
										3
									
								
								conf/type/__key_value/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								conf/type/__key_value/parameter/required
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | ||||||
|  | value | ||||||
|  | file | ||||||
|  | delimiter | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue