Merge branch 'master' into preos
This commit is contained in:
		
				commit
				
					
						3b4258c34e
					
				
			
		
					 131 changed files with 1636 additions and 272 deletions
				
			
		
							
								
								
									
										13
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -20,6 +20,13 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A2XM=a2x -f manpage --no-xmllint -a encoding=UTF-8
 | 
					A2XM=a2x -f manpage --no-xmllint -a encoding=UTF-8
 | 
				
			||||||
A2XH=a2x -f xhtml --no-xmllint -a encoding=UTF-8
 | 
					A2XH=a2x -f xhtml --no-xmllint -a encoding=UTF-8
 | 
				
			||||||
 | 
					# Create cross-links in html man pages
 | 
				
			||||||
 | 
					# We look for something like "cdist-type(7)" and make a href out of it
 | 
				
			||||||
 | 
					# The first matching group is the man page name and the second group
 | 
				
			||||||
 | 
					# is the man page section (1 or 7). The first three lines of the input
 | 
				
			||||||
 | 
					# (xml, DOCTYPE, head tags) are ignored, since the head tags contains
 | 
				
			||||||
 | 
					# the title of the page and should not contain a href.
 | 
				
			||||||
 | 
					CROSSLINK=sed --in-place '1,3!s/\([[:alnum:]_-]*\)(\([17]\))/<a href="..\/man\2\/\1.html">&<\/a>/g'
 | 
				
			||||||
helper=./bin/build-helper
 | 
					helper=./bin/build-helper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MANDIR=docs/man
 | 
					MANDIR=docs/man
 | 
				
			||||||
| 
						 | 
					@ -86,6 +93,7 @@ MANSTATICALL=$(MANSTATICMAN) $(MANSTATICHTML)
 | 
				
			||||||
# Creating the type html page
 | 
					# Creating the type html page
 | 
				
			||||||
%.html: %.text
 | 
					%.html: %.text
 | 
				
			||||||
	$(A2XH) $^
 | 
						$(A2XH) $^
 | 
				
			||||||
 | 
						$(CROSSLINK) $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
man: $(MANTYPEALL) $(MANREFALL) $(MANSTATICALL)
 | 
					man: $(MANTYPEALL) $(MANREFALL) $(MANSTATICALL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -99,7 +107,7 @@ man-dist: man check-date
 | 
				
			||||||
	cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7
 | 
						cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7
 | 
				
			||||||
	cd ${MANWEBDIR} && git add . && git commit -m "cdist manpages update: $(CHANGELOG_VERSION)" || true
 | 
						cd ${MANWEBDIR} && git add . && git commit -m "cdist manpages update: $(CHANGELOG_VERSION)" || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
man-fix-link: web-pub
 | 
					man-latest-link: web-pub
 | 
				
			||||||
	# Fix ikiwiki, which does not like symlinks for pseudo security
 | 
						# Fix ikiwiki, which does not like symlinks for pseudo security
 | 
				
			||||||
	ssh tee.schottelius.org \
 | 
						ssh tee.schottelius.org \
 | 
				
			||||||
    	"cd /home/services/www/nico/www.nico.schottelius.org/www/software/cdist/man && rm -f latest && ln -sf "$(CHANGELOG_VERSION)" latest"
 | 
					    	"cd /home/services/www/nico/www.nico.schottelius.org/www/software/cdist/man && rm -f latest && ln -sf "$(CHANGELOG_VERSION)" latest"
 | 
				
			||||||
| 
						 | 
					@ -146,7 +154,8 @@ web-dist: web-blog web-doc
 | 
				
			||||||
web-pub: web-dist man-dist speeches-dist
 | 
					web-pub: web-dist man-dist speeches-dist
 | 
				
			||||||
	cd "${WEBDIR}" && make pub
 | 
						cd "${WEBDIR}" && make pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
web-release-all: man-fix-link
 | 
					web-release-all: man-latest-link
 | 
				
			||||||
 | 
					web-release-all-no-latest: web-pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
################################################################################
 | 
					################################################################################
 | 
				
			||||||
# Release: Mailinglist
 | 
					# Release: Mailinglist
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,6 +104,11 @@ eof
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ml-release)
 | 
					    ml-release)
 | 
				
			||||||
 | 
					        if [ $# -ne 1 ]; then
 | 
				
			||||||
 | 
					            echo "$0 ml-release version" >&2
 | 
				
			||||||
 | 
					            exit 1
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        version=$1; shift
 | 
					        version=$1; shift
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        to_a=cdist
 | 
					        to_a=cdist
 | 
				
			||||||
| 
						 | 
					@ -142,40 +147,22 @@ eof
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    freecode-release)
 | 
					    freecode-release)
 | 
				
			||||||
        version=$1; shift
 | 
					        version=$1; shift
 | 
				
			||||||
        api_token=$(awk '/machine freecode login/ { print $8 }' ~/.netrc)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        printf "Enter tag list for freecode release %s> " "$version"
 | 
					        printf "Enter tag list for freecode release %s> " "$version"
 | 
				
			||||||
        read taglist
 | 
					        read taglist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        printf "Enter changelog for freecode release %s> " "$version"
 | 
					        printf "Enter changelog for freecode release %s> " "$version"
 | 
				
			||||||
        read changelog
 | 
					        read changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        echo "Submit preview"
 | 
					        echo "Submitting to freecode ..."
 | 
				
			||||||
        cat << eof
 | 
					        python2 ~/p/foreign/freecode-submit-2.7/freecode-submit -P cdist \
 | 
				
			||||||
tag_list = $taglist
 | 
					            -v "$version" -c "$changelog" \
 | 
				
			||||||
changelog = $changelog
 | 
					            -t "$taglist" \
 | 
				
			||||||
version = $version
 | 
					            -n
 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
        printf "Press enter to submit to freecode> "
 | 
					 | 
				
			||||||
        read dummy
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        cat << eof | cfreecode-api release-add cdist
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "auth_code": "$api_token",
 | 
					 | 
				
			||||||
            "release": {
 | 
					 | 
				
			||||||
                "tag_list": "$taglist",
 | 
					 | 
				
			||||||
                "version": "$version",
 | 
					 | 
				
			||||||
                "changelog": "$changelog",
 | 
					 | 
				
			||||||
                "hidden_from_frontpage": false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    release-git-tag)
 | 
					    release-git-tag)
 | 
				
			||||||
        target_version=$($0 changelog-version)
 | 
					        target_version=$($0 changelog-version)
 | 
				
			||||||
        if git rev-parse --verify refs/tags/$target_version; then
 | 
					        if git rev-parse --verify refs/tags/$target_version 2>/dev/null; then
 | 
				
			||||||
            echo "Tag for $target_version exists, aborting"
 | 
					            echo "Tag for $target_version exists, aborting"
 | 
				
			||||||
            exit 1
 | 
					            exit 1
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
| 
						 | 
					@ -256,7 +243,11 @@ eof
 | 
				
			||||||
        make pub
 | 
					        make pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # publish man, speeches, website
 | 
					        # publish man, speeches, website
 | 
				
			||||||
 | 
					        if [ "$masterbranch" = yes ]; then
 | 
				
			||||||
            make web-release-all
 | 
					            make web-release-all
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            make web-release-all-no-latest
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Ensure that pypi release has the right version
 | 
					        # Ensure that pypi release has the right version
 | 
				
			||||||
        "$0" version
 | 
					        "$0" version
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										31
									
								
								cdist/conf/explorer/cpu_cores
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								cdist/conf/explorer/cpu_cores
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 Daniel Heule  (hda at sfs.biz)
 | 
				
			||||||
 | 
					# 2014 Thomas Oettli (otho at sfs.biz)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# FIXME: other system types (not linux ...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -r /proc/cpuinfo ]; then
 | 
				
			||||||
 | 
					    cores="$(cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l)"
 | 
				
			||||||
 | 
					    if [ ${cores} -eq 0 ]; then
 | 
				
			||||||
 | 
					        cores="1"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo "${cores}"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										31
									
								
								cdist/conf/explorer/cpu_sockets
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								cdist/conf/explorer/cpu_sockets
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 Daniel Heule  (hda at sfs.biz)
 | 
				
			||||||
 | 
					# 2014 Thomas Oettli (otho at sfs.biz)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# FIXME: other system types (not linux ...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -r /proc/cpuinfo ]; then
 | 
				
			||||||
 | 
					    sockets="$(cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)"
 | 
				
			||||||
 | 
					    if [ ${sockets} -eq 0 ]; then
 | 
				
			||||||
 | 
					        sockets="$(cat /proc/cpuinfo | grep "processor" | wc -l)"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo "${sockets}"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
| 
						 | 
					@ -24,12 +24,12 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Use ip, if available
 | 
					# Use ip, if available
 | 
				
			||||||
if command -v ip; then
 | 
					if command -v ip >/dev/null; then
 | 
				
			||||||
    ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
 | 
					    ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
 | 
				
			||||||
    exit 0
 | 
					    exit 0
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ! command -v ifconfig; then
 | 
					if ! command -v ifconfig >/dev/null; then
 | 
				
			||||||
   # no ifconfig, nothing we could do
 | 
					   # no ifconfig, nothing we could do
 | 
				
			||||||
   exit 0
 | 
					   exit 0
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										54
									
								
								cdist/conf/explorer/machine_type
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										54
									
								
								cdist/conf/explorer/machine_type
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 Daniel Heule  (hda at sfs.biz)
 | 
				
			||||||
 | 
					# 2014 Thomas Oettli (otho at sfs.biz)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# FIXME: other system types (not linux ...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -r /proc/cpuinfo ]; then
 | 
				
			||||||
 | 
					    # this should only exist on virtual guest machines,
 | 
				
			||||||
 | 
					    # tested on vmware, xen, kvm
 | 
				
			||||||
 | 
					    if grep -q "hypervisor" /proc/cpuinfo; then
 | 
				
			||||||
 | 
					        # this file is aviable in xen guest systems
 | 
				
			||||||
 | 
					        if [ -r /sys/hypervisor/type ]; then
 | 
				
			||||||
 | 
					            if grep -q -i "xen" /sys/hypervisor/type; then
 | 
				
			||||||
 | 
					                echo virtual_by_xen
 | 
				
			||||||
 | 
					                exit 
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            if [ -r /sys/class/dmi/id/product_name ]; then
 | 
				
			||||||
 | 
					                if grep -q -i 'vmware' /sys/class/dmi/id/product_name; then
 | 
				
			||||||
 | 
					                    echo "virtual_by_vmware"
 | 
				
			||||||
 | 
					                    exit
 | 
				
			||||||
 | 
					                else 
 | 
				
			||||||
 | 
					                    if grep -q -i 'bochs' /sys/class/dmi/id/product_name; then
 | 
				
			||||||
 | 
					                        echo "virtual_by_kvm"
 | 
				
			||||||
 | 
					                        exit 
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        echo "virtual_by_unknown"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        echo "physical"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    echo "unknown"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										27
									
								
								cdist/conf/explorer/memory
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								cdist/conf/explorer/memory
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 Daniel Heule  (hda at sfs.biz)
 | 
				
			||||||
 | 
					# 2014 Thomas Oettli (otho at sfs.biz)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# FIXME: other system types (not linux ...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -r /proc/meminfo ]; then
 | 
				
			||||||
 | 
					    echo "$(cat /proc/meminfo | grep "MemTotal:" | awk '{print $2}')"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@ destination="/$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
os=$("$__explorer/os")
 | 
					os=$("$__explorer/os")
 | 
				
			||||||
case "$os" in
 | 
					case "$os" in
 | 
				
			||||||
   "freebsd")
 | 
					   "freebsd"|"openbsd")
 | 
				
			||||||
      # FIXME: should be something like this based on man page, but can not test
 | 
					      # FIXME: should be something like this based on man page, but can not test
 | 
				
			||||||
      stat -f "type: %ST
 | 
					      stat -f "type: %ST
 | 
				
			||||||
owner: %Du %Su
 | 
					owner: %Du %Su
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,15 @@ group: %Dg %Sg
 | 
				
			||||||
mode: %Op %Sp
 | 
					mode: %Op %Sp
 | 
				
			||||||
size: %Dz
 | 
					size: %Dz
 | 
				
			||||||
links: %Dl
 | 
					links: %Dl
 | 
				
			||||||
 | 
					" "$destination"
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					    "macosx")
 | 
				
			||||||
 | 
					       stat -f "type: %HT
 | 
				
			||||||
 | 
					 owner: %Du %Su
 | 
				
			||||||
 | 
					 group: %Dg %Sg
 | 
				
			||||||
 | 
					 mode: %Lp %Sp
 | 
				
			||||||
 | 
					 size: %Dz
 | 
				
			||||||
 | 
					 links: %Dl
 | 
				
			||||||
 " "$destination"
 | 
					 " "$destination"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
   *)
 | 
					   *)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,12 +25,19 @@ destination="/$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
os=$("$__explorer/os")
 | 
					os=$("$__explorer/os")
 | 
				
			||||||
case "$os" in
 | 
					case "$os" in
 | 
				
			||||||
   "freebsd")
 | 
					   "freebsd"|"openbsd")
 | 
				
			||||||
      # FIXME: should be something like this based on man page, but can not test
 | 
					      # FIXME: should be something like this based on man page, but can not test
 | 
				
			||||||
      stat -f "type: %ST
 | 
					      stat -f "type: %ST
 | 
				
			||||||
owner: %Du %Su
 | 
					owner: %Du %Su
 | 
				
			||||||
group: %Dg %Sg
 | 
					group: %Dg %Sg
 | 
				
			||||||
mode: %Op %Sp
 | 
					mode: %Op %Sp
 | 
				
			||||||
 | 
					" "$destination"
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					    "macosx")
 | 
				
			||||||
 | 
					       stat -f "type: %HT
 | 
				
			||||||
 | 
					 owner: %Du %Su
 | 
				
			||||||
 | 
					 group: %Dg %Sg
 | 
				
			||||||
 | 
					 mode: %Lp %Sp
 | 
				
			||||||
 " "$destination"
 | 
					 " "$destination"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
   *)
 | 
					   *)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								cdist/conf/type/__dog_vdi/explorer/list
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										23
									
								
								cdist/conf/type/__dog_vdi/explorer/list
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					name="$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dog vdi list -r "$name"
 | 
				
			||||||
							
								
								
									
										42
									
								
								cdist/conf/type/__dog_vdi/gencode-remote
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								cdist/conf/type/__dog_vdi/gencode-remote
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					num_vdi_lines=$(wc -l < "$__object/explorer/list")
 | 
				
			||||||
 | 
					name="$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$num_vdi_lines" = 1 ]; then
 | 
				
			||||||
 | 
					    state_is=present
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    state_is=absent
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ "$state_is" = "$state_should" ] && exit 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case "$state_should" in
 | 
				
			||||||
 | 
					    present)
 | 
				
			||||||
 | 
					        size="$(cat "$__object/parameter/size")"
 | 
				
			||||||
 | 
					        echo "dog vdi create '$name' '$size'"
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    absent)
 | 
				
			||||||
 | 
					        echo "dog vdi delete '$name'"
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
							
								
								
									
										56
									
								
								cdist/conf/type/__dog_vdi/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								cdist/conf/type/__dog_vdi/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					cdist-type__dog_vdi(7)
 | 
				
			||||||
 | 
					======================
 | 
				
			||||||
 | 
					Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__dog_vdi - Manage Sheepdog VM images
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					The dog program is used to create images for sheepdog
 | 
				
			||||||
 | 
					to be used in qemu.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					state::
 | 
				
			||||||
 | 
					    Either "present" or "absent", defaults to "present"
 | 
				
			||||||
 | 
					size::
 | 
				
			||||||
 | 
					    Size of the image in "dog vdi" compatible units.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Required if state is "present".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Create a 50G size image
 | 
				
			||||||
 | 
					__dog_vdi nico-privat.sky.ungleich.ch --size 50G
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create a 50G size image (more explicit)
 | 
				
			||||||
 | 
					__dog_vdi nico-privat.sky.ungleich.ch --size 50G --state present
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Remove image
 | 
				
			||||||
 | 
					__dog_vdi nico-privat.sky.ungleich.ch --state absent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Remove image - keeping --size is ok
 | 
				
			||||||
 | 
					__dog_vdi nico-privat.sky.ungleich.ch --size 50G --state absent
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					- dog(8)
 | 
				
			||||||
 | 
					- qemu(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2014 Nico Schottelius. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										37
									
								
								cdist/conf/type/__dog_vdi/manifest
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								cdist/conf/type/__dog_vdi/manifest
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case "$state_should" in
 | 
				
			||||||
 | 
					    present)
 | 
				
			||||||
 | 
					        if [ ! -f "$__object/parameter/size" ]; then
 | 
				
			||||||
 | 
					            echo "Size is required when state is present" >&2
 | 
				
			||||||
 | 
					            exit 1
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    absent)
 | 
				
			||||||
 | 
					        :
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					        echo "Unsupported state: $state_should" >&2
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    ;;  
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__dog_vdi/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__dog_vdi/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
							
								
								
									
										2
									
								
								cdist/conf/type/__dog_vdi/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								cdist/conf/type/__dog_vdi/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
 | 
					size
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@ destination="/$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
os=$("$__explorer/os")
 | 
					os=$("$__explorer/os")
 | 
				
			||||||
case "$os" in
 | 
					case "$os" in
 | 
				
			||||||
   "freebsd")
 | 
					   "freebsd"|"openbsd")
 | 
				
			||||||
      # FIXME: should be something like this based on man page, but can not test
 | 
					      # FIXME: should be something like this based on man page, but can not test
 | 
				
			||||||
      stat -f "type: %ST
 | 
					      stat -f "type: %ST
 | 
				
			||||||
owner: %Du %Su
 | 
					owner: %Du %Su
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,15 @@ group: %Dg %Sg
 | 
				
			||||||
mode: %Op %Sp
 | 
					mode: %Op %Sp
 | 
				
			||||||
size: %Dz
 | 
					size: %Dz
 | 
				
			||||||
links: %Dl
 | 
					links: %Dl
 | 
				
			||||||
 | 
					" "$destination"
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					   "macosx")
 | 
				
			||||||
 | 
					     stat -f "type: %HT
 | 
				
			||||||
 | 
					owner: %Du %Su
 | 
				
			||||||
 | 
					group: %Dg %Sg
 | 
				
			||||||
 | 
					mode: %Lp %Sp
 | 
				
			||||||
 | 
					size: %Dz
 | 
				
			||||||
 | 
					links: %Dl
 | 
				
			||||||
" "$destination"
 | 
					" "$destination"
 | 
				
			||||||
   ;;
 | 
					   ;;
 | 
				
			||||||
   *)
 | 
					   *)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,7 @@ state::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
branch::
 | 
					branch::
 | 
				
			||||||
    Create this branch by checking out the remote branch of this name
 | 
					    Create this branch by checking out the remote branch of this name
 | 
				
			||||||
 | 
					    Default branch is "master"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group::
 | 
					group::
 | 
				
			||||||
   Group to chgrp to.
 | 
					   Group to chgrp to.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,9 @@
 | 
				
			||||||
__package git --state present
 | 
					__package git --state present
 | 
				
			||||||
 | 
					
 | 
				
			||||||
state_should="$(cat "$__object/parameter/state")"
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					owner="$(cat "$__object/parameter/owner")"
 | 
				
			||||||
 | 
					group="$(cat "$__object/parameter/group")"
 | 
				
			||||||
 | 
					mode="$(cat "$__object/parameter/mode")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Let __directory handle removal of git repos
 | 
					# Let __directory handle removal of git repos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,7 +36,10 @@ case "$state_should" in
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    absent)
 | 
					    absent)
 | 
				
			||||||
        __directory "$__object_id" --state absent
 | 
					        __directory "$__object_id" --state absent \
 | 
				
			||||||
 | 
					            --owner "$owner" \
 | 
				
			||||||
 | 
					            --group "$group" \
 | 
				
			||||||
 | 
					            --mode "$mode"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,10 @@
 | 
				
			||||||
# Retrieve the contents of /etc/hostname
 | 
					# Retrieve the contents of /etc/hostname
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Almost any distribution
 | 
				
			||||||
if [ -f /etc/hostname ]; then
 | 
					if [ -f /etc/hostname ]; then
 | 
				
			||||||
    cat /etc/hostname
 | 
					    cat /etc/hostname
 | 
				
			||||||
 | 
					# SuSE
 | 
				
			||||||
 | 
					elif [ -f /etc/HOSTNAME ]; then
 | 
				
			||||||
 | 
					    cat /etc/HOSTNAME
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										26
									
								
								cdist/conf/type/__hostname/explorer/hostname_sysconfig
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								cdist/conf/type/__hostname/explorer/hostname_sysconfig
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Retrieve the contents of /etc/hostname
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f /etc/sysconfig/network ]; then
 | 
				
			||||||
 | 
					    awk -F= '/^HOSTNAME=/ { print $2 }' /etc/sysconfig/network
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
| 
						 | 
					@ -28,14 +28,28 @@ fi
 | 
				
			||||||
os=$(cat "$__global/explorer/os")
 | 
					os=$(cat "$__global/explorer/os")
 | 
				
			||||||
name_running=$(cat "$__global/explorer/hostname")
 | 
					name_running=$(cat "$__global/explorer/hostname")
 | 
				
			||||||
name_config=$(cat "$__object/explorer/hostname_file")
 | 
					name_config=$(cat "$__object/explorer/hostname_file")
 | 
				
			||||||
 | 
					name_sysconfig=$(cat "$__object/explorer/hostname_sysconfig")
 | 
				
			||||||
has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl")
 | 
					has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
################################################################################
 | 
					################################################################################
 | 
				
			||||||
# If everything is ok -> exit
 | 
					# If everything is ok -> exit
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					case "$os" in
 | 
				
			||||||
 | 
					    archlinux|debian|suse|ubuntu)
 | 
				
			||||||
        if [ "$name_config" = "$name_should" -a "$name_running" = "$name_should" ]; then
 | 
					        if [ "$name_config" = "$name_should" -a "$name_running" = "$name_should" ]; then
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    centos)
 | 
				
			||||||
 | 
					        if [ "$name_sysconfig" = "$name_should" -a "$name_running" = "$name_should" ]; then
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					        echo "Unsupported os: $os" >&2
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
################################################################################
 | 
					################################################################################
 | 
				
			||||||
# Setup hostname
 | 
					# Setup hostname
 | 
				
			||||||
| 
						 | 
					@ -45,6 +59,17 @@ echo changed >> "$__messages_out"
 | 
				
			||||||
if [ "$has_hostnamectl" ]; then
 | 
					if [ "$has_hostnamectl" ]; then
 | 
				
			||||||
    echo "hostnamectl set-hostname '$name_should'"
 | 
					    echo "hostnamectl set-hostname '$name_should'"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
 | 
					    case "$os" in
 | 
				
			||||||
 | 
					        archlinux|debian|ubuntu)
 | 
				
			||||||
            echo "hostname '$name_should'"
 | 
					            echo "hostname '$name_should'"
 | 
				
			||||||
            echo "printf '%s\n' '$name_should' > /etc/hostname"
 | 
					            echo "printf '%s\n' '$name_should' > /etc/hostname"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        centos)
 | 
				
			||||||
 | 
					            echo "hostname '$name_should'"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        suse)
 | 
				
			||||||
 | 
					            echo "hostname '$name_should'"
 | 
				
			||||||
 | 
					            echo "printf '%s\n' '$name_should' > /etc/HOSTNAME"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,12 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
os=$(cat "$__global/explorer/os")
 | 
					os=$(cat "$__global/explorer/os")
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/name" ]; then
 | 
				
			||||||
 | 
					    name_should="$(cat "$__object/parameter/name")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    name_should="$(echo "${__target_host%%.*}")"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
not_supported() {
 | 
					not_supported() {
 | 
				
			||||||
   echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
 | 
					   echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
 | 
				
			||||||
| 
						 | 
					@ -28,10 +34,17 @@ not_supported() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
case "$os" in
 | 
					case "$os" in
 | 
				
			||||||
   archlinux|debian|ubuntu)
 | 
					    archlinux|debian|suse|ubuntu)
 | 
				
			||||||
        # handled in gencode-remote
 | 
					        # handled in gencode-remote
 | 
				
			||||||
        :
 | 
					        :
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					    centos)
 | 
				
			||||||
 | 
					        __key_value sysconfig-hostname \
 | 
				
			||||||
 | 
					            --file /etc/sysconfig/network \
 | 
				
			||||||
 | 
					            --delimiter '=' \
 | 
				
			||||||
 | 
					            --key HOSTNAME \
 | 
				
			||||||
 | 
					            --value "$name_should" --exact_delimiter
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        not_supported
 | 
					        not_supported
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,7 @@ __iptables_rule established  --rule "-A INPUT -m state --state RELATED,ESTABLISH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Some service rules
 | 
					# Some service rules
 | 
				
			||||||
__iptables_rule http  --rule "-A INPUT -p tcp --dport 80 -j ACCEPT"
 | 
					__iptables_rule http  --rule "-A INPUT -p tcp --dport 80 -j ACCEPT"
 | 
				
			||||||
__iptables_rule ssh   --rule "-A INPUT -p tcp --dport 80 -j ACCEPT"
 | 
					__iptables_rule ssh   --rule "-A INPUT -p tcp --dport 22 -j ACCEPT"
 | 
				
			||||||
__iptables_rule https --rule "-A INPUT -p tcp --dport 443 -j ACCEPT"
 | 
					__iptables_rule https --rule "-A INPUT -p tcp --dport 443 -j ACCEPT"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Ensure some rules are not present anymore
 | 
					# Ensure some rules are not present anymore
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,7 @@
 | 
				
			||||||
#set -x
 | 
					#set -x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f "$__object/parameter/jaildir" ]; then
 | 
					if [ -f "$__object/parameter/jaildir" ]; then
 | 
				
			||||||
   jaildir="$(cat "$__object/parameter/name")"
 | 
					   jaildir="$(cat "$__object/parameter/jaildir")"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   jaildir="/usr/jail"
 | 
					   jaildir="/usr/jail"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ else
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f "$__object/parameter/jaildir" ]; then
 | 
					if [ -f "$__object/parameter/jaildir" ]; then
 | 
				
			||||||
   jaildir="$(cat "$__object/parameter/name")"
 | 
					   jaildir="$(cat "$__object/parameter/jaildir")"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   jaildir="/usr/jail"
 | 
					   jaildir="/usr/jail"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,14 +32,14 @@ else
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f "$__object/parameter/jaildir" ]; then
 | 
					if [ -f "$__object/parameter/jaildir" ]; then
 | 
				
			||||||
   jaildir="$(cat "$__object/parameter/name")"
 | 
					   jaildir="$(cat "$__object/parameter/jaildir")"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   jaildir="/usr/jail"
 | 
					   jaildir="/usr/jail"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
# backslash-escaped $jaildir
 | 
					# backslash-escaped $jaildir
 | 
				
			||||||
sjaildir="$(echo ${jaildir} | sed 's#/#\\/#g')"
 | 
					sjaildir="$(echo ${jaildir} | sed 's#/#\\/#g')"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jls_output="$(jls | grep "[ ^I]${sjaildir}\/${name}\$")" || true
 | 
					jls_output="$(jls | grep "[ 	]${sjaildir}\/${name}\$")" || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -n "${jls_output}" ]; then
 | 
					if [ -n "${jls_output}" ]; then
 | 
				
			||||||
   echo "STARTED"
 | 
					   echo "STARTED"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2012 Jake Guffey (jake.guffey at eprotex.com)
 | 
					# 2012,2014 Jake Guffey (jake.guffey at eprotex.com)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -104,6 +104,7 @@ stopJail() {
 | 
				
			||||||
# Check $status before issuing command
 | 
					# Check $status before issuing command
 | 
				
			||||||
   if [ "$status" = "STARTED" ]; then
 | 
					   if [ "$status" = "STARTED" ]; then
 | 
				
			||||||
      echo "/etc/rc.d/jail stop ${name}"
 | 
					      echo "/etc/rc.d/jail stop ${name}"
 | 
				
			||||||
 | 
					      echo "stop" >> "$__messages_out"
 | 
				
			||||||
   fi
 | 
					   fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,6 +112,7 @@ startJail() {
 | 
				
			||||||
# Check $status before issuing command
 | 
					# Check $status before issuing command
 | 
				
			||||||
   if [ "$status" = "NOTSTART" ]; then
 | 
					   if [ "$status" = "NOTSTART" ]; then
 | 
				
			||||||
      echo "/etc/rc.d/jail start ${name}"
 | 
					      echo "/etc/rc.d/jail start ${name}"
 | 
				
			||||||
 | 
					      echo "start" >> "$__messages_out"
 | 
				
			||||||
   fi
 | 
					   fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,6 +164,7 @@ EOF
 | 
				
			||||||
         rm -f /etc/rc.conf.bak
 | 
					         rm -f /etc/rc.conf.bak
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
 | 
					   echo "delete" >> "$__messages_out"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
createJail() {
 | 
					createJail() {
 | 
				
			||||||
| 
						 | 
					@ -215,6 +218,7 @@ cat <<EOF
 | 
				
			||||||
   fi
 | 
					   fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
 | 
					   echo "create" >> "$__messages_out"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Create the ro+rw mountpoint entries in fstab
 | 
					# Create the ro+rw mountpoint entries in fstab
 | 
				
			||||||
cat <<EOF
 | 
					cat <<EOF
 | 
				
			||||||
| 
						 | 
					@ -310,6 +314,7 @@ if [ "$onboot" = "yes" ]; then
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      unset jail_list
 | 
					      unset jail_list
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
 | 
					   echo "onboot" >> "$__messages_out"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Add the normal entries into the jail's rc.conf
 | 
					# Add the normal entries into the jail's rc.conf
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ This type is used on FreeBSD to manage jails.
 | 
				
			||||||
REQUIRED PARAMETERS
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
   Either "present" or "absent."
 | 
					   Either "present" or "absent", defaults to "present".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jailbase::
 | 
					jailbase::
 | 
				
			||||||
   The location of the .tgz archive containing the base fs for your jails.
 | 
					   The location of the .tgz archive containing the base fs for your jails.
 | 
				
			||||||
| 
						 | 
					@ -67,6 +67,19 @@ be removed then re-added with the correct IP address/netmask or the appropriate
 | 
				
			||||||
line (jail_<name>_ip="...") modified within rc.conf through some alternate
 | 
					line (jail_<name>_ip="...") modified within rc.conf through some alternate
 | 
				
			||||||
means.
 | 
					means.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MESSAGES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					start::
 | 
				
			||||||
 | 
					   The jail was started
 | 
				
			||||||
 | 
					stop::
 | 
				
			||||||
 | 
					   The jail was stopped
 | 
				
			||||||
 | 
					create:
 | 
				
			||||||
 | 
					   The jail was created
 | 
				
			||||||
 | 
					delete::
 | 
				
			||||||
 | 
					   The jail was deleted
 | 
				
			||||||
 | 
					onboot::
 | 
				
			||||||
 | 
					   The jail was configured to start on boot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXAMPLES
 | 
					EXAMPLES
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__jail/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__jail/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
| 
						 | 
					@ -5,3 +5,4 @@ interface
 | 
				
			||||||
devfs-ruleset
 | 
					devfs-ruleset
 | 
				
			||||||
jaildir
 | 
					jaildir
 | 
				
			||||||
jailbase
 | 
					jailbase
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					# 2014 Daniel Heule     (hda at sfs.biz)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -18,36 +19,85 @@
 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
key="$(cat "$__object/parameter/key" 2>/dev/null \
 | 
					export key="$(cat "$__object/parameter/key" 2>/dev/null \
 | 
				
			||||||
   || echo "$__object_id")"
 | 
					   || echo "$__object_id")"
 | 
				
			||||||
state="$(cat "$__object/parameter/state" 2>/dev/null \
 | 
					export state="$(cat "$__object/parameter/state")"
 | 
				
			||||||
   || echo "present")"
 | 
					 | 
				
			||||||
file="$(cat "$__object/parameter/file")"
 | 
					 | 
				
			||||||
delimiter="$(cat "$__object/parameter/delimiter")"
 | 
					 | 
				
			||||||
value="$(cat "$__object/parameter/value" 2>/dev/null \
 | 
					 | 
				
			||||||
   || echo "__CDIST_NOTSET__")"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
case "$state" in
 | 
					file="$(cat "$__object/parameter/file")"
 | 
				
			||||||
   absent)
 | 
					
 | 
				
			||||||
      if grep -q -E "^$key$delimiter+" "$file"; then
 | 
					if [ ! -f "$file" ]; then
 | 
				
			||||||
         # if the key exists, with whatever value, we will have to remove it
 | 
					    echo "nosuchfile"
 | 
				
			||||||
         # so report it as present
 | 
					    exit
 | 
				
			||||||
         echo present
 | 
					 | 
				
			||||||
      else
 | 
					 | 
				
			||||||
         # key does not exist
 | 
					 | 
				
			||||||
         echo absent
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
   ;;
 | 
					
 | 
				
			||||||
   present)
 | 
					export delimiter="$(cat "$__object/parameter/delimiter")"
 | 
				
			||||||
      if grep -q -E "^$key$delimiter+$value$" "$file"; then
 | 
					export value="$(cat "$__object/parameter/value" 2>/dev/null \
 | 
				
			||||||
         # key exists and value is same
 | 
					   || echo "__CDIST_NOTSET__")"
 | 
				
			||||||
         echo present
 | 
					if [ -f "$__object/parameter/exact_delimiter" ]; then
 | 
				
			||||||
      elif grep -q -E "^$key$delimiter+" "$file"; then
 | 
					    export exact_delimiter=1
 | 
				
			||||||
         # key exists, but value is empty or different
 | 
					 | 
				
			||||||
         echo wrongvalue
 | 
					 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
         # key does not exist
 | 
					    export exact_delimiter=0
 | 
				
			||||||
         echo absent
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
   ;;
 | 
					
 | 
				
			||||||
esac
 | 
					awk -f - "$file" <<"AWK_EOF"
 | 
				
			||||||
 | 
					BEGIN {
 | 
				
			||||||
 | 
					    state=ENVIRON["state"]
 | 
				
			||||||
 | 
					    key=ENVIRON["key"]
 | 
				
			||||||
 | 
					    delimiter=ENVIRON["delimiter"]
 | 
				
			||||||
 | 
					    value=ENVIRON["value"]
 | 
				
			||||||
 | 
					    exact_delimiter=ENVIRON["exact_delimiter"]
 | 
				
			||||||
 | 
					    found=0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					# enter the main loop
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    i = index($0,key)
 | 
				
			||||||
 | 
					    if(i == 1) {
 | 
				
			||||||
 | 
					        delval = substr($0,length(key)+1)
 | 
				
			||||||
 | 
					        delpos = index(delval,delimiter)
 | 
				
			||||||
 | 
					        if(delpos == 0) {
 | 
				
			||||||
 | 
					            # in this case, the delimiter was not found
 | 
				
			||||||
 | 
					            next
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if(delpos > 1) {
 | 
				
			||||||
 | 
					            spaces = substr(delval,1,delpos-1)
 | 
				
			||||||
 | 
					            sub(/[ \t]*/,"",spaces)
 | 
				
			||||||
 | 
					            if( length(spaces) > 0 ) {
 | 
				
			||||||
 | 
					                # if there are not only spaces between key and delimiter,
 | 
				
			||||||
 | 
					                # continue since we we are on the wrong line
 | 
				
			||||||
 | 
					                next
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if( exact_delimiter == 1) {
 | 
				
			||||||
 | 
					                # we have key and delimiter, but since additional spaces are not alowed
 | 
				
			||||||
 | 
					                # return wrongformat
 | 
				
			||||||
 | 
					                found=1
 | 
				
			||||||
 | 
					                print "wrongformat"
 | 
				
			||||||
 | 
					                exit
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        found=1
 | 
				
			||||||
 | 
					        if(state == "absent") {
 | 
				
			||||||
 | 
					            # on state absent, only the ocurance is relevant, so exit here
 | 
				
			||||||
 | 
					            print "present"
 | 
				
			||||||
 | 
					            exit
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        linevalue=substr(delval,delpos + length(delimiter))
 | 
				
			||||||
 | 
					        if(exact_delimiter == 0){
 | 
				
			||||||
 | 
					            #ok, now strip tabs and whitespaces at the beginning of the value
 | 
				
			||||||
 | 
					            sub(/[ \t]*/,"",linevalue)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        # Key with separator found
 | 
				
			||||||
 | 
					        if(linevalue == value) {
 | 
				
			||||||
 | 
					            # exact match found, so state is present
 | 
				
			||||||
 | 
					            print "present"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            print "wrongvalue"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        exit
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					END {
 | 
				
			||||||
 | 
					    if(found == 0)
 | 
				
			||||||
 | 
					        print "absent"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					AWK_EOF
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										102
									
								
								cdist/conf/type/__key_value/files/remote_script.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								cdist/conf/type/__key_value/files/remote_script.sh
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,102 @@
 | 
				
			||||||
 | 
					export key="$(cat "$__object/parameter/key" 2>/dev/null \
 | 
				
			||||||
 | 
					   || echo "$__object_id")"
 | 
				
			||||||
 | 
					export state="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file="$(cat "$__object/parameter/file")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export delimiter="$(cat "$__object/parameter/delimiter")"
 | 
				
			||||||
 | 
					export value="$(cat "$__object/parameter/value" 2>/dev/null \
 | 
				
			||||||
 | 
					   || echo "__CDIST_NOTSET__")"
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/exact_delimiter" ]; then
 | 
				
			||||||
 | 
					    export exact_delimiter=1
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    export exact_delimiter=0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tmpfile=$(mktemp "${file}.cdist.XXXXXXXXXX")
 | 
				
			||||||
 | 
					# preserve ownership and permissions by copying existing file over tmpfile
 | 
				
			||||||
 | 
					if [ -f "$file" ]; then
 | 
				
			||||||
 | 
					    cp -p "$file" "$tmpfile"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    touch "$file"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					awk -f - "$file" >"$tmpfile" <<"AWK_EOF"
 | 
				
			||||||
 | 
					BEGIN {
 | 
				
			||||||
 | 
					    # import variables in a secure way ..
 | 
				
			||||||
 | 
					    state=ENVIRON["state"]
 | 
				
			||||||
 | 
					    key=ENVIRON["key"]
 | 
				
			||||||
 | 
					    delimiter=ENVIRON["delimiter"]
 | 
				
			||||||
 | 
					    value=ENVIRON["value"]
 | 
				
			||||||
 | 
					    comment=ENVIRON["comment"]
 | 
				
			||||||
 | 
					    exact_delimiter=ENVIRON["exact_delimiter"]
 | 
				
			||||||
 | 
					    inserted=0
 | 
				
			||||||
 | 
					    lastline=""
 | 
				
			||||||
 | 
					    lastlinepopulated=0
 | 
				
			||||||
 | 
					    line=key delimiter value
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					# enter the main loop
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    # I dont use regex, this is by design, so we can match against every value without special meanings of chars ...
 | 
				
			||||||
 | 
					    i = index($0,key)
 | 
				
			||||||
 | 
					    if(i == 1) {
 | 
				
			||||||
 | 
					        delval = substr($0,length(key)+1)
 | 
				
			||||||
 | 
					        delpos = index(delval,delimiter)
 | 
				
			||||||
 | 
					        if(delpos > 1) {
 | 
				
			||||||
 | 
					            spaces = substr(delval,1,delpos-1)
 | 
				
			||||||
 | 
					            sub(/[ \t]*/,"",spaces)
 | 
				
			||||||
 | 
					            if( length(spaces) > 0 ) {
 | 
				
			||||||
 | 
					                # if there are not only spaces between key and delimiter,
 | 
				
			||||||
 | 
					                # continue since we we are on the wrong line
 | 
				
			||||||
 | 
					                if(lastlinepopulated == 1) {
 | 
				
			||||||
 | 
					                    print lastline
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                lastline=$0
 | 
				
			||||||
 | 
					                lastlinepopulated=1
 | 
				
			||||||
 | 
					                next
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if(state == "absent") {
 | 
				
			||||||
 | 
					            if(lastline == comment) {
 | 
				
			||||||
 | 
					                # if comment is present, clear lastlinepopulated flag
 | 
				
			||||||
 | 
					                lastlinepopulated=0
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            # if absent, simple yump over this line
 | 
				
			||||||
 | 
					            next
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            # if comment is present and not present in last line
 | 
				
			||||||
 | 
					            if (lastlinepopulated == 1) {
 | 
				
			||||||
 | 
					                print lastline
 | 
				
			||||||
 | 
					                if( comment != "" && lastline != comment) {
 | 
				
			||||||
 | 
					                    print comment
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                lastlinepopulated=0
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            inserted=1
 | 
				
			||||||
 | 
					            # state is present, so insert correct line here
 | 
				
			||||||
 | 
					            print line
 | 
				
			||||||
 | 
					            lastline=line
 | 
				
			||||||
 | 
					            next
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        if(lastlinepopulated == 1) {
 | 
				
			||||||
 | 
					            print lastline
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        lastline=$0
 | 
				
			||||||
 | 
					        lastlinepopulated=1
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					END {
 | 
				
			||||||
 | 
					    if(lastlinepopulated == 1) {
 | 
				
			||||||
 | 
					        print lastline
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if(inserted == 0 && state == "present" ) {
 | 
				
			||||||
 | 
					        if(comment != "" && lastline != comment){
 | 
				
			||||||
 | 
					            print comment
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        print line
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					AWK_EOF
 | 
				
			||||||
 | 
					mv -f "$tmpfile" "$file"
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,8 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
# 2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					# 2012-2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
 | 
					# 2014 Daniel Heule     (hda at sfs.biz)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -19,52 +20,56 @@
 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
key="$__object_id"
 | 
					 | 
				
			||||||
[ -f "$__object/parameter/key" ] && key="$(cat "$__object/parameter/key")"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
state_should="$(cat "$__object/parameter/state")"
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					 | 
				
			||||||
file="$(cat "$__object/parameter/file")"
 | 
					 | 
				
			||||||
delimiter="$(cat "$__object/parameter/delimiter")"
 | 
					 | 
				
			||||||
# escape double quotes, as that is what we use ourself below
 | 
					 | 
				
			||||||
value_escaped="$(cat "$__object/parameter/value" | sed -e "s/\([\"]\)/\\\\\1/g")"
 | 
					 | 
				
			||||||
state_is="$(cat "$__object/explorer/state")"
 | 
					state_is="$(cat "$__object/explorer/state")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ "$state_is" = "$state_should" ] && exit 0
 | 
					if [  "$state_is" = "$state_should" ]; then
 | 
				
			||||||
 | 
					    exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# here we check only if the states are valid,
 | 
				
			||||||
 | 
					# emmit messages and 
 | 
				
			||||||
 | 
					# let awk do the work ...
 | 
				
			||||||
case "$state_should" in
 | 
					case "$state_should" in
 | 
				
			||||||
    absent)
 | 
					    absent)
 | 
				
			||||||
        # remove lines starting with key
 | 
					 | 
				
			||||||
        cat << DONE
 | 
					 | 
				
			||||||
tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
 | 
					 | 
				
			||||||
# preserve ownership and permissions by copying existing file over tmpfile
 | 
					 | 
				
			||||||
cp -p "$file" "\$tmpfile"
 | 
					 | 
				
			||||||
sed '/^$key\($delimiter\+\)/d' "$file" > "\$tmpfile"
 | 
					 | 
				
			||||||
mv -f "\$tmpfile" "$file"
 | 
					 | 
				
			||||||
DONE
 | 
					 | 
				
			||||||
    ;;
 | 
					 | 
				
			||||||
    present)
 | 
					 | 
				
			||||||
        case "$state_is" in
 | 
					        case "$state_is" in
 | 
				
			||||||
            absent)
 | 
					            absent|nosuchfile)
 | 
				
			||||||
                # add new key and value
 | 
					                # nothing to do
 | 
				
			||||||
                printf 'echo "%s%s%s" >> "%s"' "$key" "$delimiter" "$value_escaped" "$file"
 | 
					 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            wrongvalue)
 | 
					            wrongformat|wrongvalue|present)
 | 
				
			||||||
                # change exisiting value
 | 
					                echo "remove" >> "$__messages_out"
 | 
				
			||||||
                cat << DONE
 | 
					 | 
				
			||||||
tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
 | 
					 | 
				
			||||||
# preserve ownership and permissions by copying existing file over tmpfile
 | 
					 | 
				
			||||||
cp -p "$file" "\$tmpfile"
 | 
					 | 
				
			||||||
sed "s|^$key\($delimiter\+\).*|$key\\1$value_escaped|" "$file" > "\$tmpfile"
 | 
					 | 
				
			||||||
mv -f "\$tmpfile" "$file"
 | 
					 | 
				
			||||||
DONE
 | 
					 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            *)
 | 
					            *)
 | 
				
			||||||
                echo "Unknown explorer state: $state_is" >&2
 | 
					                echo "Unknown explorer state: $state_is" >&2
 | 
				
			||||||
                exit 1
 | 
					                exit 1
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    present)
 | 
				
			||||||
 | 
					        case "$state_is" in
 | 
				
			||||||
 | 
					            nosuchfile)
 | 
				
			||||||
 | 
					                echo "create" >> "$__messages_out"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            absent)
 | 
				
			||||||
 | 
					                echo "insert" >> "$__messages_out"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            wrongformated|wrongvalue)
 | 
				
			||||||
 | 
					                echo "change" >> "$__messages_out"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            present)
 | 
				
			||||||
 | 
					                # nothing to do
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                echo "Unknown explorer state: $state_is" >&2
 | 
				
			||||||
 | 
					                exit 1
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
       echo "Unknown state: $state_should" >&2
 | 
					       echo "Unknown state: $state_should" >&2
 | 
				
			||||||
       exit 1
 | 
					       exit 1
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat "$__type/files/remote_script.sh"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,30 @@ key::
 | 
				
			||||||
    The key to change. Defaults to object_id.
 | 
					    The key to change. Defaults to object_id.
 | 
				
			||||||
value::
 | 
					value::
 | 
				
			||||||
    The value for the key. Optional if state=absent, required otherwise.
 | 
					    The value for the key. Optional if state=absent, required otherwise.
 | 
				
			||||||
 | 
					comment::
 | 
				
			||||||
 | 
					    If supplied, the value will be inserted before the line with the key,
 | 
				
			||||||
 | 
					    but only if the key or value must be changed.
 | 
				
			||||||
 | 
					    You need to ensure yourself that the line is prefixed with the correct
 | 
				
			||||||
 | 
					    comment sign. (for example # or ; or wathever ..)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BOOLEAN PARAMETERS
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					exact_delimiter::
 | 
				
			||||||
 | 
					    If supplied, treat additional whitespaces between key, delimiter and value
 | 
				
			||||||
 | 
					    as wrong value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MESSAGES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					remove::
 | 
				
			||||||
 | 
					    Removed existing key and value
 | 
				
			||||||
 | 
					insert::
 | 
				
			||||||
 | 
					    Added key and value
 | 
				
			||||||
 | 
					change::
 | 
				
			||||||
 | 
					    Changed value of existing key
 | 
				
			||||||
 | 
					create::
 | 
				
			||||||
 | 
					    A new line was inserted in a new file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXAMPLES
 | 
					EXAMPLES
 | 
				
			||||||
| 
						 | 
					@ -46,13 +70,19 @@ __key_value my-fancy-id --file /etc/login.defs --key SYS_UID_MAX --value 666 \
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Enable packet forwarding
 | 
					# Enable packet forwarding
 | 
				
			||||||
__key_value net.ipv4.ip_forward --file /etc/sysctl.conf --value 1 \
 | 
					__key_value net.ipv4.ip_forward --file /etc/sysctl.conf --value 1 \
 | 
				
			||||||
   --delimiter '='
 | 
					   --delimiter ' = ' --comment '# my linux kernel should act as a router'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Remove existing key/value
 | 
					# Remove existing key/value
 | 
				
			||||||
__key_value LEGACY_KEY --file /etc/somefile --state absent --delimiter '=' 
 | 
					__key_value LEGACY_KEY --file /etc/somefile --state absent --delimiter '=' 
 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MORE INFORMATION
 | 
				
			||||||
 | 
					----------------
 | 
				
			||||||
 | 
					This type try to handle as many values as possible, so it doesn't use regexes.
 | 
				
			||||||
 | 
					So you need to exactly specify the key and delimiter. Delimiter can be of any lenght.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SEE ALSO
 | 
					SEE ALSO
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
- cdist-type(7)
 | 
					- cdist-type(7)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__key_value/parameter/boolean
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__key_value/parameter/boolean
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					exact_delimiter
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__key_value/parameter/default/comment
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__key_value/parameter/default/comment
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
key
 | 
					key
 | 
				
			||||||
value
 | 
					value
 | 
				
			||||||
state
 | 
					state
 | 
				
			||||||
 | 
					comment
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					# 2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
 | 
					# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -74,8 +75,13 @@ case "$state_should" in
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cat << eof
 | 
					        cat << eof
 | 
				
			||||||
tmp=\$(mktemp)
 | 
					tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
 | 
				
			||||||
grep -v $greparg '$regex' '$file' > \$tmp && cat "\$tmp" > '$file' && rm -f "\$tmp"
 | 
					# preserve ownership and permissions of existing file
 | 
				
			||||||
 | 
					if [ -f "$file" ]; then
 | 
				
			||||||
 | 
					   cp -p "$file" "\$tmpfile"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					grep -v $greparg '$regex' '$file' > \$tmpfile || true
 | 
				
			||||||
 | 
					mv -f "\$tmpfile" "$file"
 | 
				
			||||||
eof
 | 
					eof
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					# 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -34,8 +34,13 @@ case "$type" in
 | 
				
			||||||
   symbolic)
 | 
					   symbolic)
 | 
				
			||||||
      cd "$destination_dir"
 | 
					      cd "$destination_dir"
 | 
				
			||||||
      source_is=$(ls -l "$destination" | sed 's/.*-> //g')
 | 
					      source_is=$(ls -l "$destination" | sed 's/.*-> //g')
 | 
				
			||||||
      if [ -h "$destination" -a "$source_is" = "$source" ]; then
 | 
					      if [ -h "$destination" ]; then
 | 
				
			||||||
 | 
					         # ignore trailing slashes for comparison
 | 
				
			||||||
 | 
					         if [ "${source_is%/}" = "${source%/}" ]; then
 | 
				
			||||||
            echo present
 | 
					            echo present
 | 
				
			||||||
 | 
					         else
 | 
				
			||||||
 | 
					            echo wrongsource
 | 
				
			||||||
 | 
					         fi
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
         echo absent
 | 
					         echo absent
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
# 2013 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					# 2013-2014 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -18,9 +18,6 @@
 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Mostly a wrapper for ln
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
destination="/$__object_id"
 | 
					destination="/$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,20 +47,22 @@ case "$state_should" in
 | 
				
			||||||
    present)
 | 
					    present)
 | 
				
			||||||
        if [ "$file_type" = "directory" ]; then
 | 
					        if [ "$file_type" = "directory" ]; then
 | 
				
			||||||
            # our destination is currently a directory, delete it
 | 
					            # our destination is currently a directory, delete it
 | 
				
			||||||
            cat << DONE
 | 
					            printf 'rm -rf "%s" &&\n' "$destination"
 | 
				
			||||||
rm -rf "$destination"
 | 
					        else
 | 
				
			||||||
DONE
 | 
					           if [ "$state_is" = "wrongsource" ]; then
 | 
				
			||||||
 | 
					               # our destination is a symlink but points to the wrong source,
 | 
				
			||||||
 | 
					               # delete it
 | 
				
			||||||
 | 
					               printf 'rm -f "%s" &&\n' "$destination"
 | 
				
			||||||
 | 
					           fi
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # create our link
 | 
					        # create our link
 | 
				
			||||||
        cat << DONE
 | 
					        printf 'ln %s -f "%s" "%s"\n' "$lnopt" "$source" "$destination"
 | 
				
			||||||
ln ${lnopt} -f "$source" "$destination"
 | 
					 | 
				
			||||||
DONE
 | 
					 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
    absent)
 | 
					    absent)
 | 
				
			||||||
        # only delete if it is a sym/hard link
 | 
					        # only delete if it is a sym/hard link
 | 
				
			||||||
        if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then
 | 
					        if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then
 | 
				
			||||||
            echo rm -f \"$destination\"
 | 
					            printf 'rm -f "%s"\n' "$destination"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ This cdist type allows you to setup locales.
 | 
				
			||||||
OPTIONAL PARAMETERS
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
   'present' or 'absent'
 | 
					   'present' or 'absent', defaults to present
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXAMPLES
 | 
					EXAMPLES
 | 
				
			||||||
| 
						 | 
					@ -43,5 +43,5 @@ SEE ALSO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPYING
 | 
					COPYING
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
Copyright \(C) 2013 Nico Schottelius. Free use of this software is
 | 
					Copyright \(C) 2013-2014 Nico Schottelius. Free use of this software is
 | 
				
			||||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2013 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					# 2013-2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -29,4 +29,12 @@ case "$os" in
 | 
				
			||||||
        # Debian needs a seperate package
 | 
					        # Debian needs a seperate package
 | 
				
			||||||
        __package locales --state present
 | 
					        __package locales --state present
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					    suse)
 | 
				
			||||||
 | 
					        :
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					        echo "Sorry, do not know how to handle os: $os" >&2
 | 
				
			||||||
 | 
					        echo "Please edit the type ${__type##*/} to fix this." >&2
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,8 +50,11 @@ fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pkg_version="$(cat "$__object/explorer/pkg_version")"
 | 
					pkg_version="$(cat "$__object/explorer/pkg_version")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO: Shouldn't be hardcoded
 | 
					if [ -f "$__object/parameter/pkg_path" ]; then                                  
 | 
				
			||||||
echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$machine/
 | 
					  pkg_path="$(cat "$__object/parameter/pkg_path")"                              
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  pkg_path="ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$machine/"
 | 
				
			||||||
 | 
					fi                                                                              
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ "$pkg_version" ]; then
 | 
					if [ "$pkg_version" ]; then
 | 
				
			||||||
    state_is="present"
 | 
					    state_is="present"
 | 
				
			||||||
| 
						 | 
					@ -65,10 +68,16 @@ case "$state_should" in
 | 
				
			||||||
    present)
 | 
					    present)
 | 
				
			||||||
        # use this because pkg_add doesn't properly handle errors
 | 
					        # use this because pkg_add doesn't properly handle errors
 | 
				
			||||||
        cat << eof
 | 
					        cat << eof
 | 
				
			||||||
status=\$(pkg_add "$pkgopts" "$name--$flavor")
 | 
					export PKG_PATH="$pkg_path"                                              
 | 
				
			||||||
 | 
					status=\$(pkg_add "$pkgopts" "$name--$flavor" 2>&1)
 | 
				
			||||||
 | 
					pkg_info | grep "^${name}.*${flavor}" > /dev/null 2>&1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# no error
 | 
					# We didn't find the package in the list of 'installed packages', so it failed
 | 
				
			||||||
if [ -n "\$status" ]; then
 | 
					# This is necessary because pkg_add doesn't return properly
 | 
				
			||||||
 | 
					if [ \$? -ne 0 ]; then
 | 
				
			||||||
 | 
					    if [ -z "\${status}" ]; then
 | 
				
			||||||
 | 
					      status="Failed to add package, uncaught exception."
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
    echo "Error: \$status"
 | 
					    echo "Error: \$status"
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					@ -79,9 +88,14 @@ eof
 | 
				
			||||||
        # use this because pkg_add doesn't properly handle errors
 | 
					        # use this because pkg_add doesn't properly handle errors
 | 
				
			||||||
        cat << eof
 | 
					        cat << eof
 | 
				
			||||||
status=\$(pkg_delete "$pkgopts" "$name--$flavor")
 | 
					status=\$(pkg_delete "$pkgopts" "$name--$flavor")
 | 
				
			||||||
 | 
					pkg_info | grep "^${name}.*${flavor}" > /dev/null 2>&1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# no error
 | 
					# We found the package in the list of 'installed packages'
 | 
				
			||||||
if [ -n "\$status" ]; then
 | 
					# This would indicate that pkg_delete failed, send the output of pkg_delete
 | 
				
			||||||
 | 
					if [ \$? -eq 0 ]; then
 | 
				
			||||||
 | 
					    if [ -z "\${status}" ]; then
 | 
				
			||||||
 | 
					      status="Failed to remove package, uncaught exception."
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
    echo "Error: \$status"
 | 
					    echo "Error: \$status"
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,8 @@ flavor::
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
    Either "present" or "absent", defaults to "present"
 | 
					    Either "present" or "absent", defaults to "present"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pkg_path::
 | 
				
			||||||
 | 
					    Manually specify a PKG_PATH to add packages from.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXAMPLES
 | 
					EXAMPLES
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
| 
						 | 
					@ -45,6 +47,10 @@ __package_pkg_openbsd python --state present --name python2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Remove obsolete package
 | 
					# Remove obsolete package
 | 
				
			||||||
__package_pkg_openbsd puppet --state absent
 | 
					__package_pkg_openbsd puppet --state absent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add a package using a particular mirror
 | 
				
			||||||
 | 
					__package_pkg_openbsd bash \
 | 
				
			||||||
 | 
					  --pkg_path http://openbsd.mirrorcatalogs.com/snapshots/packages/amd64
 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
name
 | 
					name
 | 
				
			||||||
flavor
 | 
					flavor
 | 
				
			||||||
state
 | 
					state
 | 
				
			||||||
 | 
					pkg_path
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					# 2011-2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,14 @@ else
 | 
				
			||||||
   name="$__object_id"
 | 
					   name="$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Support installing from an URL
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/url" ]; then
 | 
				
			||||||
 | 
					   install_name="$(cat "$__object/parameter/url")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   install_name="$name"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
state_should="$(cat "$__object/parameter/state")"
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if grep -q -E "(centos|redhat|amazon)" "$__global/explorer/os"; then
 | 
					if grep -q -E "(centos|redhat|amazon)" "$__global/explorer/os"; then
 | 
				
			||||||
| 
						 | 
					@ -47,7 +55,7 @@ fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
case "$state_should" in
 | 
					case "$state_should" in
 | 
				
			||||||
    present)
 | 
					    present)
 | 
				
			||||||
        echo yum $opts install \"$name\"
 | 
					        echo yum $opts install \"$install_name\"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
    absent)
 | 
					    absent)
 | 
				
			||||||
        echo yum $opts remove \"$name\"
 | 
					        echo yum $opts remove \"$name\"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,8 @@ name::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
    Either "present" or "absent", defaults to "present"
 | 
					    Either "present" or "absent", defaults to "present"
 | 
				
			||||||
 | 
					url::
 | 
				
			||||||
 | 
					    URL to use for the package
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXAMPLES
 | 
					EXAMPLES
 | 
				
			||||||
| 
						 | 
					@ -41,6 +43,9 @@ __package_yum python --state present --name python2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Remove obsolete package
 | 
					# Remove obsolete package
 | 
				
			||||||
__package_yum puppet --state absent
 | 
					__package_yum puppet --state absent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__package epel-release-6-8 \
 | 
				
			||||||
 | 
					    --url http://mirror.switch.ch/ftp/mirror/epel/6/i386/epel-release-6-8.noarch.rpm
 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,2 +1,3 @@
 | 
				
			||||||
name
 | 
					name
 | 
				
			||||||
state
 | 
					state
 | 
				
			||||||
 | 
					url
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ This type is used on *BSD systems to manage the pf firewall's ruleset.
 | 
				
			||||||
REQUIRED PARAMETERS
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
   Either "absent" (no ruleset at all) or "present"
 | 
					   Either "absent" (no ruleset at all) or "present", defaults to "present".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OPTIONAL PARAMETERS
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__pf_ruleset/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__pf_ruleset/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
| 
						 | 
					@ -1 +1,2 @@
 | 
				
			||||||
source
 | 
					source
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,8 +19,7 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
name="$__object_id"
 | 
					name="$__object_id"
 | 
				
			||||||
state_should="present"
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
 | 
					 | 
				
			||||||
state_is="$(cat "$__object/explorer/state")"
 | 
					state_is="$(cat "$__object/explorer/state")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ "$state_should" != "$state_is" ]; then
 | 
					if [ "$state_should" != "$state_is" ]; then
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ This cdist type allows you to create or drop postgres databases.
 | 
				
			||||||
OPTIONAL PARAMETERS
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
   either 'present' or 'absent'
 | 
					   either 'present' or 'absent', defaults to 'present'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
owner::
 | 
					owner::
 | 
				
			||||||
   the role owning this database
 | 
					   the role owning this database
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
| 
						 | 
					@ -20,8 +20,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
name="$__object_id"
 | 
					name="$__object_id"
 | 
				
			||||||
state_is="$(cat "$__object/explorer/state")"
 | 
					state_is="$(cat "$__object/explorer/state")"
 | 
				
			||||||
state_should="present"
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ "$state_is" = "$state_should" ] && exit 0
 | 
					[ "$state_is" = "$state_should" ] && exit 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__postgres_role/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__postgres_role/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
| 
						 | 
					@ -14,17 +14,15 @@ The qemu-img program is used to create qemu images for
 | 
				
			||||||
qemu and (qemu-)kvm.
 | 
					qemu and (qemu-)kvm.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REQUIRED PARAMETERS
 | 
					 | 
				
			||||||
-------------------
 | 
					 | 
				
			||||||
size::
 | 
					 | 
				
			||||||
    Size of the image in qemu-img compatible units.
 | 
					 | 
				
			||||||
    See qemu-img(1).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
OPTIONAL PARAMETERS
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
    Either "present" or "absent", defaults to "present"
 | 
					    Either "present" or "absent", defaults to "present"
 | 
				
			||||||
 | 
					size::
 | 
				
			||||||
 | 
					    Size of the image in qemu-img compatible units.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Required if state is "present".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXAMPLES
 | 
					EXAMPLES
 | 
				
			||||||
| 
						 | 
					@ -42,9 +40,10 @@ __qemu_img /home/services/kvm/vm/myoldvm/system-disk --state absent
 | 
				
			||||||
SEE ALSO
 | 
					SEE ALSO
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
- cdist-type(7)
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					- qemu-img(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPYING
 | 
					COPYING
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
Copyright \(C) 2012 Nico Schottelius. Free use of this software is
 | 
					Copyright \(C) 2012-2014 Nico Schottelius. Free use of this software is
 | 
				
			||||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,11 +3,23 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
format="$(cat "$__object/parameter/format")"
 | 
					format="$(cat "$__object/parameter/format")"
 | 
				
			||||||
state="$(cat "$__object/parameter/state")"
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diskimage="/$__object_id"
 | 
					diskimage="/$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Absent is ensured by __file, present by gencode-remote
 | 
					case "$state_should" in
 | 
				
			||||||
if [ "$state" = "absent" ]; then
 | 
					    present)
 | 
				
			||||||
    __file "$diskimage" --state absent
 | 
					        if [ ! -f "$__object/parameter/size" ]; then
 | 
				
			||||||
 | 
					            echo "Size is required when state is present" >&2
 | 
				
			||||||
 | 
					            exit 1
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    absent)
 | 
				
			||||||
 | 
					        # Absent is ensured by __file, present by gencode-remote
 | 
				
			||||||
 | 
					        __file "$diskimage" --state absent
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					        echo "Unsupported state: $state_should" >&2
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,2 +1,3 @@
 | 
				
			||||||
format
 | 
					format
 | 
				
			||||||
state
 | 
					state
 | 
				
			||||||
 | 
					size
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1 +0,0 @@
 | 
				
			||||||
size
 | 
					 | 
				
			||||||
							
								
								
									
										49
									
								
								cdist/conf/type/__rbenv/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								cdist/conf/type/__rbenv/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,49 @@
 | 
				
			||||||
 | 
					cdist-type__rbenv(7)
 | 
				
			||||||
 | 
					====================
 | 
				
			||||||
 | 
					Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__rbenv - Manage rbenv installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					This cdist type allows you to manage rbenv installations.
 | 
				
			||||||
 | 
					It also installs ruby-build.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					state::
 | 
				
			||||||
 | 
					    Either "present" or "absent", defaults to "present"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					owner::
 | 
				
			||||||
 | 
					    Which user should own the rbenv installation, defaults to root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Install rbenv including ruby-build for nico
 | 
				
			||||||
 | 
					__rbenv /home/nico
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Install rbenv including ruby-build for nico
 | 
				
			||||||
 | 
					__rbenv /home/nico --owner nico
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Bastian does not need rbenv anymore, he began to code C99
 | 
				
			||||||
 | 
					__rbenv /home/bastian --state absent
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2012-2014 Nico Schottelius. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										38
									
								
								cdist/conf/type/__rbenv/manifest
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								cdist/conf/type/__rbenv/manifest
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2012-2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					homedir="$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					owner="$(cat "$__object/parameter/owner")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rbenvdir="$homedir/.rbenv"
 | 
				
			||||||
 | 
					rubybuilddir="$rbenvdir/plugins/ruby-build"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__git "$rbenvdir" \
 | 
				
			||||||
 | 
					    --source git://github.com/sstephenson/rbenv.git \
 | 
				
			||||||
 | 
					    --owner "$owner" \
 | 
				
			||||||
 | 
					    --state "$state_should"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require="__git/$rbenvdir" __git "$rubybuilddir" \
 | 
				
			||||||
 | 
					    --source git://github.com/sstephenson/ruby-build.git \
 | 
				
			||||||
 | 
					    --owner "$owner" \
 | 
				
			||||||
 | 
					    --state "$state_should"
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__rbenv/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__rbenv/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__rbenv/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__rbenv/parameter/required
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					owner
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ RVM is the Ruby enVironment Manager for the Ruby programming language.
 | 
				
			||||||
REQUIRED PARAMETERS
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
    Either "present" or "absent".
 | 
					    Either "present" or "absent", defaults to "present".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXAMPLES
 | 
					EXAMPLES
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__rvm/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__rvm/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@ user::
 | 
				
			||||||
gemset::
 | 
					gemset::
 | 
				
			||||||
    The gemset to use
 | 
					    The gemset to use
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
    Either "present" or "absent"
 | 
					    Either "present" or "absent", defaults to "present".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OPTIONAL PARAMETERS
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__rvm_gem/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__rvm_gem/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
| 
						 | 
					@ -1 +1,2 @@
 | 
				
			||||||
default
 | 
					default
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,2 @@
 | 
				
			||||||
state
 | 
					 | 
				
			||||||
gemset
 | 
					gemset
 | 
				
			||||||
user
 | 
					user
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@ REQUIRED PARAMETERS
 | 
				
			||||||
user::
 | 
					user::
 | 
				
			||||||
    The remote user account to use
 | 
					    The remote user account to use
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
    Either "present" or "absent".
 | 
					    Either "present" or "absent", defaults to "present".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BOOLEAN PARAMETERS
 | 
					BOOLEAN PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__rvm_gemset/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__rvm_gemset/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
| 
						 | 
					@ -1,2 +1 @@
 | 
				
			||||||
state
 | 
					 | 
				
			||||||
user
 | 
					user
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@ REQUIRED PARAMETERS
 | 
				
			||||||
user::
 | 
					user::
 | 
				
			||||||
    The remote user account to use
 | 
					    The remote user account to use
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
    Either "present" or "absent".
 | 
					    Either "present" or "absent", defaults to "present".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BOOLEAN PARAMETERS
 | 
					BOOLEAN PARAMETERS
 | 
				
			||||||
------------------
 | 
					------------------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__rvm_ruby/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__rvm_ruby/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__rvm_ruby/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__rvm_ruby/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
| 
						 | 
					@ -1,2 +1 @@
 | 
				
			||||||
state
 | 
					 | 
				
			||||||
user
 | 
					user
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								cdist/conf/type/__ssh_authorized_keys/explorer/group
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										22
									
								
								cdist/conf/type/__ssh_authorized_keys/explorer/group
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gid="$("$__type_explorer/passwd" | cut -d':' -f 4)"
 | 
				
			||||||
 | 
					getent group "$gid" || true
 | 
				
			||||||
| 
						 | 
					@ -40,9 +40,6 @@ state::
 | 
				
			||||||
file::
 | 
					file::
 | 
				
			||||||
   an alternative destination file, defaults to ~$owner/.ssh/authorized_keys
 | 
					   an alternative destination file, defaults to ~$owner/.ssh/authorized_keys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
comment::
 | 
					 | 
				
			||||||
   an optional comment
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
BOOLEAN PARAMETERS
 | 
					BOOLEAN PARAMETERS
 | 
				
			||||||
------------------
 | 
					------------------
 | 
				
			||||||
| 
						 | 
					@ -67,12 +64,11 @@ __ssh_authorized_keys root \
 | 
				
			||||||
__ssh_authorized_keys user-name \
 | 
					__ssh_authorized_keys user-name \
 | 
				
			||||||
   --key "ssh-rsa AXYZAAB3NzaC1yc2..."
 | 
					   --key "ssh-rsa AXYZAAB3NzaC1yc2..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# same as above, but with explicit owner, two keys and a comment
 | 
					# same as above, but with explicit owner and two keys
 | 
				
			||||||
__ssh_authorized_keys some-fancy-id \
 | 
					__ssh_authorized_keys some-fancy-id \
 | 
				
			||||||
   --owner user-name \
 | 
					   --owner user-name \
 | 
				
			||||||
   --key "ssh-rsa AXYZAAB3NzaC1yc2..." \
 | 
					   --key "ssh-rsa AXYZAAB3NzaC1yc2..." \
 | 
				
			||||||
   --key "ssh-rsa AZXYAAB3NzaC1yc2..." \
 | 
					   --key "ssh-rsa AZXYAAB3NzaC1yc2..."
 | 
				
			||||||
   --comment "allow the members of project foo to login"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# same as above, but authorized_keys file in non standard location
 | 
					# same as above, but authorized_keys file in non standard location
 | 
				
			||||||
__ssh_authorized_keys some-fancy-id \
 | 
					__ssh_authorized_keys some-fancy-id \
 | 
				
			||||||
| 
						 | 
					@ -97,5 +93,5 @@ SEE ALSO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPYING
 | 
					COPYING
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
Copyright \(C) 2012 Steven Armstrong. Free use of this software is
 | 
					Copyright \(C) 2012-2014 Steven Armstrong. Free use of this software is
 | 
				
			||||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					# 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					# 2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -32,7 +33,7 @@ else
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ]; then
 | 
					if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ]; then
 | 
				
			||||||
   group="$(cut -d':' -f 4 "$__object/explorer/passwd")"
 | 
					   group="$(cut -d':' -f 1 "$__object/explorer/group")"
 | 
				
			||||||
   if [ -z "$group" ]; then
 | 
					   if [ -z "$group" ]; then
 | 
				
			||||||
      echo "Failed to get owners group from explorer." >&2
 | 
					      echo "Failed to get owners group from explorer." >&2
 | 
				
			||||||
      exit 1
 | 
					      exit 1
 | 
				
			||||||
| 
						 | 
					@ -56,16 +57,32 @@ if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ];
 | 
				
			||||||
   fi
 | 
					   fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Generate entry for inclusion in authorized_keys file
 | 
					# Remove legacy blocks created by old versions of this type
 | 
				
			||||||
(
 | 
					# FIXME: remove me in 3.2+
 | 
				
			||||||
if [ -f "$__object/parameter/comment" ]; then
 | 
					 | 
				
			||||||
   echo "# $(cat "$__object/parameter/comment")"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
cat "$__object/parameter/key"
 | 
					 | 
				
			||||||
) | \
 | 
					 | 
				
			||||||
__block "$__object_name" \
 | 
					__block "$__object_name" \
 | 
				
			||||||
   --file "$file" \
 | 
					   --file "$file" \
 | 
				
			||||||
   --prefix "#cdist:$__object_name" \
 | 
					   --prefix "#cdist:$__object_name" \
 | 
				
			||||||
   --suffix "#/cdist:$__object_name" \
 | 
					   --suffix "#/cdist:$__object_name" \
 | 
				
			||||||
   --state "$state" \
 | 
					   --state 'absent' \
 | 
				
			||||||
   --text -
 | 
					   --text - << DONE
 | 
				
			||||||
 | 
					remove legacy block
 | 
				
			||||||
 | 
					DONE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_cksum() {
 | 
				
			||||||
 | 
					   echo "$1" | cksum | cut -d' ' -f 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while read key; do
 | 
				
			||||||
 | 
					   cksum_key="$(_cksum "$key")"
 | 
				
			||||||
 | 
					   line_id="${owner}-${cksum_key}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   set -- "$line_id"
 | 
				
			||||||
 | 
					   set -- "$@" --file "$file"
 | 
				
			||||||
 | 
					   set -- "$@" --regex ".*$key.*"
 | 
				
			||||||
 | 
					   if [ "$state" = 'present' ]; then
 | 
				
			||||||
 | 
					      set -- "$@" --line "$key"
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					   set -- "$@" --state "$state"
 | 
				
			||||||
 | 
					   # Ensure __line does not read stdin
 | 
				
			||||||
 | 
					   require="__block/$__object_name" __line "$@" < /dev/null
 | 
				
			||||||
 | 
					done < "$__object/parameter/key"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,3 @@
 | 
				
			||||||
owner
 | 
					owner
 | 
				
			||||||
state
 | 
					state
 | 
				
			||||||
file
 | 
					file
 | 
				
			||||||
comment
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,13 +27,18 @@ os=$(cat "$__global/explorer/os")
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
case "$os" in
 | 
					case "$os" in
 | 
				
			||||||
    archlinux|debian|ubuntu)
 | 
					    archlinux|debian|ubuntu)
 | 
				
			||||||
        __package tzdata --state present
 | 
					        package=tzdata
 | 
				
			||||||
        require="__package/tzdata" __link /etc/localtime    \
 | 
					    ;;
 | 
				
			||||||
            --source "/usr/share/zoneinfo/${timezone}"      \
 | 
					    suse)
 | 
				
			||||||
            --type symbolic
 | 
					        package=timezone
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        echo "Unsupported OS $os" >&2
 | 
					        echo "Unsupported OS $os" >&2
 | 
				
			||||||
        exit 1
 | 
					        exit 1
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__package "$package" --state present
 | 
				
			||||||
 | 
					require="__package/$package" __link /etc/localtime    \
 | 
				
			||||||
 | 
					    --source "/usr/share/zoneinfo/${timezone}"      \
 | 
				
			||||||
 | 
					    --type symbolic
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,9 +26,10 @@ os="$($__explorer/os)"
 | 
				
			||||||
# Default to using shadow passwords
 | 
					# Default to using shadow passwords
 | 
				
			||||||
database="shadow"
 | 
					database="shadow"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ "$os" = "freebsd" ]; then
 | 
					case "$os" in
 | 
				
			||||||
   database="passwd"
 | 
					  "freebsd"|"openbsd")  database="passwd";;
 | 
				
			||||||
fi
 | 
					esac
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
getent "$database" "$name" || true
 | 
					getent "$database" "$name" || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										61
									
								
								cdist/conf/type/__yum_repo/files/repo.template
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										61
									
								
								cdist/conf/type/__yum_repo/files/repo.template
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,61 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					set -u
 | 
				
			||||||
 | 
					cat << DONE
 | 
				
			||||||
 | 
					# Created by cdist ${__type##*/}
 | 
				
			||||||
 | 
					# Do not change. Changes will be overwritten.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[$repo_name]
 | 
				
			||||||
 | 
					DONE
 | 
				
			||||||
 | 
					# single value properties
 | 
				
			||||||
 | 
					single_value='name
 | 
				
			||||||
 | 
					metalink
 | 
				
			||||||
 | 
					mirrorlist
 | 
				
			||||||
 | 
					gpgcakey
 | 
				
			||||||
 | 
					gpgcheck 
 | 
				
			||||||
 | 
					exclude
 | 
				
			||||||
 | 
					includepkgs
 | 
				
			||||||
 | 
					failovermethod
 | 
				
			||||||
 | 
					timeout
 | 
				
			||||||
 | 
					http_caching
 | 
				
			||||||
 | 
					retries
 | 
				
			||||||
 | 
					throttle
 | 
				
			||||||
 | 
					bandwidth
 | 
				
			||||||
 | 
					sslcacert
 | 
				
			||||||
 | 
					sslverify
 | 
				
			||||||
 | 
					sslclientcert
 | 
				
			||||||
 | 
					sslclientkey
 | 
				
			||||||
 | 
					ssl_check_cert_permissions
 | 
				
			||||||
 | 
					metadata_expire
 | 
				
			||||||
 | 
					mirrorlist_expire
 | 
				
			||||||
 | 
					proxy
 | 
				
			||||||
 | 
					proxy_username
 | 
				
			||||||
 | 
					proxy_password
 | 
				
			||||||
 | 
					username
 | 
				
			||||||
 | 
					password
 | 
				
			||||||
 | 
					cost'
 | 
				
			||||||
 | 
					for key in $single_value; do
 | 
				
			||||||
 | 
					   if [ -f "$__object/parameter/$key" ]; then
 | 
				
			||||||
 | 
					      printf '%s=%s\n' "$key" "$(cat "$__object/parameter/$key")"
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					# multi value properties
 | 
				
			||||||
 | 
					for key in baseurl gpgkey; do
 | 
				
			||||||
 | 
					   if [ -f "$__object/parameter/$key" ]; then
 | 
				
			||||||
 | 
					      printf '%s=' "$key"
 | 
				
			||||||
 | 
					      prefix=''
 | 
				
			||||||
 | 
					      while read line; do
 | 
				
			||||||
 | 
					         printf '%s%s\n' "$prefix" "$line"
 | 
				
			||||||
 | 
					         prefix='   '
 | 
				
			||||||
 | 
					      done < "$__object/parameter/$key"
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					# boolean properties
 | 
				
			||||||
 | 
					for key in enabled repo_gpgcheck keepalive skip_if_unavailable; do
 | 
				
			||||||
 | 
					   if [ -f "$__object/parameter/$key" ]; then
 | 
				
			||||||
 | 
					      printf '%s=1\n' "$key"
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					# special cases
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/disablegroups" ]; then
 | 
				
			||||||
 | 
					   printf 'enablegroups=0\n'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										91
									
								
								cdist/conf/type/__yum_repo/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								cdist/conf/type/__yum_repo/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,91 @@
 | 
				
			||||||
 | 
					cdist-type__yum_repo(7)
 | 
				
			||||||
 | 
					=======================
 | 
				
			||||||
 | 
					Steven Armstrong <steven-cdist--@--armstrong.cc>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__yum_repo - manage yum repositories
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					For all undocumented parameters see yum.conf(5).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					None.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					state::
 | 
				
			||||||
 | 
					   'present' or 'absent'. Defaults to 'present'
 | 
				
			||||||
 | 
					repositoryid::
 | 
				
			||||||
 | 
					   Defaults to __object_id.
 | 
				
			||||||
 | 
					name::
 | 
				
			||||||
 | 
					baseurl::
 | 
				
			||||||
 | 
					   Can be specified multiple times.
 | 
				
			||||||
 | 
					metalink::
 | 
				
			||||||
 | 
					mirrorlist::
 | 
				
			||||||
 | 
					gpgkey::
 | 
				
			||||||
 | 
					   Can be specified multiple times.
 | 
				
			||||||
 | 
					gpgcakey::
 | 
				
			||||||
 | 
					gpgcheck::
 | 
				
			||||||
 | 
					exclude::
 | 
				
			||||||
 | 
					includepkgs::
 | 
				
			||||||
 | 
					failovermethod::
 | 
				
			||||||
 | 
					timeout::
 | 
				
			||||||
 | 
					http_caching::
 | 
				
			||||||
 | 
					retries::
 | 
				
			||||||
 | 
					throttle::
 | 
				
			||||||
 | 
					bandwidth::
 | 
				
			||||||
 | 
					sslcacert::
 | 
				
			||||||
 | 
					sslverify::
 | 
				
			||||||
 | 
					sslclientcert::
 | 
				
			||||||
 | 
					sslclientkey::
 | 
				
			||||||
 | 
					ssl_check_cert_permissions::
 | 
				
			||||||
 | 
					metadata_expire::
 | 
				
			||||||
 | 
					mirrorlist_expire::
 | 
				
			||||||
 | 
					proxy::
 | 
				
			||||||
 | 
					proxy_username::
 | 
				
			||||||
 | 
					proxy_password::
 | 
				
			||||||
 | 
					username::
 | 
				
			||||||
 | 
					password::
 | 
				
			||||||
 | 
					cost::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BOOLEAN PARAMETERS
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					enabled::
 | 
				
			||||||
 | 
					repo_gpgcheck::
 | 
				
			||||||
 | 
					disablegroups::
 | 
				
			||||||
 | 
					   ! enablegroups
 | 
				
			||||||
 | 
					keepalive::
 | 
				
			||||||
 | 
					skip_if_unavailable::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					__yum_repo epel \
 | 
				
			||||||
 | 
					   --name 'Extra Packages for Enterprise Linux 6 - $basearch' \
 | 
				
			||||||
 | 
					   --mirrorlist 'https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch' \
 | 
				
			||||||
 | 
					   --failovermethod priority \
 | 
				
			||||||
 | 
					   --enabled \
 | 
				
			||||||
 | 
					   --gpgcheck 1 \
 | 
				
			||||||
 | 
					   --gpgkey https://fedoraproject.org/static/0608B895.txt
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2014 Steven Armstrong. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										40
									
								
								cdist/conf/type/__yum_repo/manifest
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										40
									
								
								cdist/conf/type/__yum_repo/manifest
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2014 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					os=$(cat "$__global/explorer/os")
 | 
				
			||||||
 | 
					state="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case "$os" in
 | 
				
			||||||
 | 
					   centos)
 | 
				
			||||||
 | 
					      repo_name="$__object_id"
 | 
				
			||||||
 | 
					      export repo_name
 | 
				
			||||||
 | 
					      repo_file="/etc/yum.repos.d/${repo_name}.repo"
 | 
				
			||||||
 | 
					      "$__type/files/repo.template" | \
 | 
				
			||||||
 | 
					         __file "$repo_file" \
 | 
				
			||||||
 | 
					            --owner root --group root --mode 644 \
 | 
				
			||||||
 | 
					            --state "$state" \
 | 
				
			||||||
 | 
					            --source -
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					   *)
 | 
				
			||||||
 | 
					      echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
 | 
				
			||||||
 | 
					      echo "Please contribute an implementation for it if you can." >&2
 | 
				
			||||||
 | 
					      exit 1
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
							
								
								
									
										3
									
								
								cdist/conf/type/__yum_repo/notes
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								cdist/conf/type/__yum_repo/notes
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Configuring_Yum_and_Yum_Repositories.html
 | 
				
			||||||
 | 
					https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/sect-Configuring_Software_Repositories.html
 | 
				
			||||||
 | 
					http://docs.puppetlabs.com/references/latest/type.html#yumrepo
 | 
				
			||||||
							
								
								
									
										5
									
								
								cdist/conf/type/__yum_repo/parameter/boolean
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								cdist/conf/type/__yum_repo/parameter/boolean
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					enabled
 | 
				
			||||||
 | 
					repo_gpgcheck
 | 
				
			||||||
 | 
					disablegroups
 | 
				
			||||||
 | 
					keepalive
 | 
				
			||||||
 | 
					skip_if_unavailable
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__yum_repo/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__yum_repo/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					present
 | 
				
			||||||
							
								
								
									
										27
									
								
								cdist/conf/type/__yum_repo/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								cdist/conf/type/__yum_repo/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					bandwidth
 | 
				
			||||||
 | 
					cost
 | 
				
			||||||
 | 
					exclude
 | 
				
			||||||
 | 
					failovermethod
 | 
				
			||||||
 | 
					gpgcakey
 | 
				
			||||||
 | 
					gpgcheck
 | 
				
			||||||
 | 
					http_caching
 | 
				
			||||||
 | 
					includepkgs
 | 
				
			||||||
 | 
					metadata_expire
 | 
				
			||||||
 | 
					mirrorlist
 | 
				
			||||||
 | 
					mirrorlist_expire
 | 
				
			||||||
 | 
					name
 | 
				
			||||||
 | 
					password
 | 
				
			||||||
 | 
					proxy
 | 
				
			||||||
 | 
					proxy_password
 | 
				
			||||||
 | 
					proxy_username
 | 
				
			||||||
 | 
					repositoryid
 | 
				
			||||||
 | 
					retries
 | 
				
			||||||
 | 
					sslcacert
 | 
				
			||||||
 | 
					ssl_check_cert_permissions
 | 
				
			||||||
 | 
					sslclientcert
 | 
				
			||||||
 | 
					sslclientkey
 | 
				
			||||||
 | 
					sslverify
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
 | 
					throttle
 | 
				
			||||||
 | 
					timeout
 | 
				
			||||||
 | 
					username
 | 
				
			||||||
							
								
								
									
										2
									
								
								cdist/conf/type/__yum_repo/parameter/optional_multiple
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								cdist/conf/type/__yum_repo/parameter/optional_multiple
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					baseurl
 | 
				
			||||||
 | 
					gpgkey
 | 
				
			||||||
| 
						 | 
					@ -18,11 +18,11 @@
 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Retrieve the id from the repo with the uri from parameter repo_uri  - parsed zypper output
 | 
					# Retrieve the id from the repo with the uri from parameter uri  - parsed zypper output
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
if [ -f "$__object/parameter/repo_uri" ]; then
 | 
					if [ -f "$__object/parameter/uri" ]; then
 | 
				
			||||||
   uri="$(cat "$__object/parameter/repo_uri")"
 | 
					   uri="$(cat "$__object/parameter/uri")"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   uri="$__object_id"
 | 
					   uri="$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@
 | 
				
			||||||
#exec >&2
 | 
					#exec >&2
 | 
				
			||||||
#set -x
 | 
					#set -x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zypper_def_opts=" -q "
 | 
					zypper_def_opts=" -q --non-interactive --gpg-auto-import-keys "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f "$__object/parameter/repo_desc" ]; then
 | 
					if [ -f "$__object/parameter/repo_desc" ]; then
 | 
				
			||||||
   desc="$(cat "$__object/parameter/repo_desc")"
 | 
					   desc="$(cat "$__object/parameter/repo_desc")"
 | 
				
			||||||
| 
						 | 
					@ -33,8 +33,8 @@ else
 | 
				
			||||||
   desc="$__object_id"
 | 
					   desc="$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f "$__object/parameter/repo_uri" ]; then
 | 
					if [ -f "$__object/parameter/uri" ]; then
 | 
				
			||||||
   uri="$(cat "$__object/parameter/repo_uri")"
 | 
					   uri="$(cat "$__object/parameter/uri")"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   uri="$__object_id"
 | 
					   uri="$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					@ -65,7 +65,7 @@ fi
 | 
				
			||||||
case "$state" in
 | 
					case "$state" in
 | 
				
			||||||
   present)
 | 
					   present)
 | 
				
			||||||
         if [ -z "$desc" ] || [ -z "$uri" ]; then
 | 
					         if [ -z "$desc" ] || [ -z "$uri" ]; then
 | 
				
			||||||
             echo "parameter repo_desc and repo_uri for $state needed" >&2
 | 
					             echo "parameter repo_desc and uri for $state needed" >&2
 | 
				
			||||||
             exit 4
 | 
					             exit 4
 | 
				
			||||||
         fi
 | 
					         fi
 | 
				
			||||||
         if [ -z "$repo_id" ]; then
 | 
					         if [ -z "$repo_id" ]; then
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,13 +22,13 @@ OPTIONAL PARAMETERS
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
state::
 | 
					state::
 | 
				
			||||||
    Either "present" or "absent" or "enabled" or "disabled", defaults to "present" + 
 | 
					    Either "present" or "absent" or "enabled" or "disabled", defaults to "present" + 
 | 
				
			||||||
    #present#  - make sure that the repo is aviable, needs repo_uri and repo_desc + 
 | 
					    #present#  - make sure that the repo is aviable, needs uri and repo_desc + 
 | 
				
			||||||
         for all following states, the repo can be searched via repo_id or repo_uri + 
 | 
					         for all following states, the repo can be searched via repo_id or uri + 
 | 
				
			||||||
    #absent#   - drop the repo if found + 
 | 
					    #absent#   - drop the repo if found + 
 | 
				
			||||||
    #enabled#  - a repo can have state disabled if installed via zypper service (ris), in this case, you can enable the repo + 
 | 
					    #enabled#  - a repo can have state disabled if installed via zypper service (ris), in this case, you can enable the repo + 
 | 
				
			||||||
    #disabled# - instead of absent (drop), a repo can also set to disabled, wich makes it inaccessible + 
 | 
					    #disabled# - instead of absent (drop), a repo can also set to disabled, wich makes it inaccessible + 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repo_uri::
 | 
					uri::
 | 
				
			||||||
    If supplied, use the uri and not the object id as repo uri.
 | 
					    If supplied, use the uri and not the object id as repo uri.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repo_desc::
 | 
					repo_desc::
 | 
				
			||||||
| 
						 | 
					@ -43,10 +43,10 @@ EXAMPLES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
# Ensure testrepo in installed
 | 
					# Ensure testrepo in installed
 | 
				
			||||||
__zypper_repo testrepo --state present --repo_uri http://url.to.your.repo/with/path
 | 
					__zypper_repo testrepo --state present --uri http://url.to.your.repo/with/path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Drop repo by repo uri
 | 
					# Drop repo by repo uri
 | 
				
			||||||
__zypper_repo testrepo --state absent --repo_uri http://url.to.your.repo/with/path
 | 
					__zypper_repo testrepo --state absent --uri http://url.to.your.repo/with/path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Drop repo by id number (attention: repos are always numbered from 1 to max)
 | 
					# Drop repo by id number (attention: repos are always numbered from 1 to max)
 | 
				
			||||||
__zypper_repo testrepo --state absent --repo_id 1
 | 
					__zypper_repo testrepo --state absent --repo_id 1
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ __zypper_repo testrepo --state absent --repo_id 1
 | 
				
			||||||
__zypper_repo testrepo2 --state enabled --repo_id 2
 | 
					__zypper_repo testrepo2 --state enabled --repo_id 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# enable repo by uri
 | 
					# enable repo by uri
 | 
				
			||||||
__zypper_repo testrepo3 --state enabled --repo_uri http://url.to.your.repo/with/path
 | 
					__zypper_repo testrepo3 --state enabled --uri http://url.to.your.repo/with/path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# disable a repo works like enabling it
 | 
					# disable a repo works like enabling it
 | 
				
			||||||
__zypper_repo testrepo4 --state disabled --repo_id 4
 | 
					__zypper_repo testrepo4 --state disabled --repo_id 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
state
 | 
					state
 | 
				
			||||||
repo_uri
 | 
					uri
 | 
				
			||||||
repo_desc
 | 
					repo_desc
 | 
				
			||||||
repo_id
 | 
					repo_id
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,8 +20,8 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Manage services with Zypper (mostly suse)
 | 
					# Manage services with Zypper (mostly suse)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
if [ -f "$__object/parameter/service_uri" ]; then
 | 
					if [ -f "$__object/parameter/uri" ]; then
 | 
				
			||||||
   uri="$(cat "$__object/parameter/service_uri")"
 | 
					   uri="$(cat "$__object/parameter/uri")"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   uri="/$__object_id"
 | 
					   uri="/$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,8 +20,8 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Manage services with Zypper (mostly suse)
 | 
					# Manage services with Zypper (mostly suse)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
if [ -f "$__object/parameter/service_uri" ]; then
 | 
					if [ -f "$__object/parameter/uri" ]; then
 | 
				
			||||||
   uri="$(cat "$__object/parameter/service_uri")"
 | 
					   uri="$(cat "$__object/parameter/uri")"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   uri="/$__object_id"
 | 
					   uri="/$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue