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
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
MANDIR=docs/man
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +93,7 @@ MANSTATICALL=$(MANSTATICMAN) $(MANSTATICHTML)
 | 
			
		|||
# Creating the type html page
 | 
			
		||||
%.html: %.text
 | 
			
		||||
	$(A2XH) $^
 | 
			
		||||
	$(CROSSLINK) $@
 | 
			
		||||
 | 
			
		||||
man: $(MANTYPEALL) $(MANREFALL) $(MANSTATICALL)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +107,7 @@ man-dist: man check-date
 | 
			
		|||
	cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${MANWEBDIR}/man7
 | 
			
		||||
	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
 | 
			
		||||
	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"
 | 
			
		||||
| 
						 | 
				
			
			@ -146,7 +154,8 @@ web-dist: web-blog web-doc
 | 
			
		|||
web-pub: web-dist man-dist speeches-dist
 | 
			
		||||
	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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -104,6 +104,11 @@ eof
 | 
			
		|||
    ;;
 | 
			
		||||
 | 
			
		||||
    ml-release)
 | 
			
		||||
        if [ $# -ne 1 ]; then
 | 
			
		||||
            echo "$0 ml-release version" >&2
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        version=$1; shift
 | 
			
		||||
 | 
			
		||||
        to_a=cdist
 | 
			
		||||
| 
						 | 
				
			
			@ -142,40 +147,22 @@ eof
 | 
			
		|||
 | 
			
		||||
    freecode-release)
 | 
			
		||||
        version=$1; shift
 | 
			
		||||
        api_token=$(awk '/machine freecode login/ { print $8 }' ~/.netrc)
 | 
			
		||||
 | 
			
		||||
        printf "Enter tag list for freecode release %s> " "$version"
 | 
			
		||||
        read taglist
 | 
			
		||||
 | 
			
		||||
        printf "Enter changelog for freecode release %s> " "$version"
 | 
			
		||||
        read changelog
 | 
			
		||||
 | 
			
		||||
        echo "Submit preview"
 | 
			
		||||
        cat << eof
 | 
			
		||||
tag_list = $taglist
 | 
			
		||||
changelog = $changelog
 | 
			
		||||
version = $version
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
        echo "Submitting to freecode ..."
 | 
			
		||||
        python2 ~/p/foreign/freecode-submit-2.7/freecode-submit -P cdist \
 | 
			
		||||
            -v "$version" -c "$changelog" \
 | 
			
		||||
            -t "$taglist" \
 | 
			
		||||
            -n
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
    release-git-tag)
 | 
			
		||||
        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"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
| 
						 | 
				
			
			@ -256,7 +243,11 @@ eof
 | 
			
		|||
        make pub
 | 
			
		||||
 | 
			
		||||
        # publish man, speeches, website
 | 
			
		||||
        make web-release-all
 | 
			
		||||
        if [ "$masterbranch" = yes ]; then
 | 
			
		||||
            make web-release-all
 | 
			
		||||
        else
 | 
			
		||||
            make web-release-all-no-latest
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # Ensure that pypi release has the right 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
 | 
			
		||||
if command -v ip; then
 | 
			
		||||
if command -v ip >/dev/null; then
 | 
			
		||||
    ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if ! command -v ifconfig; then
 | 
			
		||||
if ! command -v ifconfig >/dev/null; then
 | 
			
		||||
   # no ifconfig, nothing we could do
 | 
			
		||||
   exit 0
 | 
			
		||||
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")
 | 
			
		||||
case "$os" in
 | 
			
		||||
   "freebsd")
 | 
			
		||||
   "freebsd"|"openbsd")
 | 
			
		||||
      # FIXME: should be something like this based on man page, but can not test
 | 
			
		||||
      stat -f "type: %ST
 | 
			
		||||
owner: %Du %Su
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +35,15 @@ size: %Dz
 | 
			
		|||
links: %Dl
 | 
			
		||||
" "$destination"
 | 
			
		||||
   ;;
 | 
			
		||||
    "macosx")
 | 
			
		||||
       stat -f "type: %HT
 | 
			
		||||
 owner: %Du %Su
 | 
			
		||||
 group: %Dg %Sg
 | 
			
		||||
 mode: %Lp %Sp
 | 
			
		||||
 size: %Dz
 | 
			
		||||
 links: %Dl
 | 
			
		||||
 " "$destination"
 | 
			
		||||
    ;;
 | 
			
		||||
   *)
 | 
			
		||||
      stat --printf="type: %F
 | 
			
		||||
owner: %u %U
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ destination="/$__object_id"
 | 
			
		|||
 | 
			
		||||
os=$("$__explorer/os")
 | 
			
		||||
case "$os" in
 | 
			
		||||
   "freebsd")
 | 
			
		||||
   "freebsd"|"openbsd")
 | 
			
		||||
      # FIXME: should be something like this based on man page, but can not test
 | 
			
		||||
      stat -f "type: %ST
 | 
			
		||||
owner: %Du %Su
 | 
			
		||||
| 
						 | 
				
			
			@ -33,6 +33,13 @@ group: %Dg %Sg
 | 
			
		|||
mode: %Op %Sp
 | 
			
		||||
" "$destination"
 | 
			
		||||
   ;;
 | 
			
		||||
    "macosx")
 | 
			
		||||
       stat -f "type: %HT
 | 
			
		||||
 owner: %Du %Su
 | 
			
		||||
 group: %Dg %Sg
 | 
			
		||||
 mode: %Lp %Sp
 | 
			
		||||
 " "$destination"
 | 
			
		||||
    ;;
 | 
			
		||||
   *)
 | 
			
		||||
      stat --printf="type: %F
 | 
			
		||||
owner: %u %U
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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")
 | 
			
		||||
case "$os" in
 | 
			
		||||
   "freebsd")
 | 
			
		||||
   "freebsd"|"openbsd")
 | 
			
		||||
      # FIXME: should be something like this based on man page, but can not test
 | 
			
		||||
      stat -f "type: %ST
 | 
			
		||||
owner: %Du %Su
 | 
			
		||||
| 
						 | 
				
			
			@ -33,6 +33,15 @@ group: %Dg %Sg
 | 
			
		|||
mode: %Op %Sp
 | 
			
		||||
size: %Dz
 | 
			
		||||
links: %Dl
 | 
			
		||||
" "$destination"
 | 
			
		||||
   ;;
 | 
			
		||||
   "macosx")
 | 
			
		||||
     stat -f "type: %HT
 | 
			
		||||
owner: %Du %Su
 | 
			
		||||
group: %Dg %Sg
 | 
			
		||||
mode: %Lp %Sp
 | 
			
		||||
size: %Dz
 | 
			
		||||
links: %Dl
 | 
			
		||||
" "$destination"
 | 
			
		||||
   ;;
 | 
			
		||||
   *)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@ state::
 | 
			
		|||
 | 
			
		||||
branch::
 | 
			
		||||
    Create this branch by checking out the remote branch of this name
 | 
			
		||||
    Default branch is "master"
 | 
			
		||||
 | 
			
		||||
group::
 | 
			
		||||
   Group to chgrp to.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,9 @@
 | 
			
		|||
__package git --state present
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +36,10 @@ case "$state_should" in
 | 
			
		|||
    ;;
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Almost any distribution
 | 
			
		||||
if [ -f /etc/hostname ]; then
 | 
			
		||||
    cat /etc/hostname
 | 
			
		||||
# SuSE
 | 
			
		||||
elif [ -f /etc/HOSTNAME ]; then
 | 
			
		||||
    cat /etc/HOSTNAME
 | 
			
		||||
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")
 | 
			
		||||
name_running=$(cat "$__global/explorer/hostname")
 | 
			
		||||
name_config=$(cat "$__object/explorer/hostname_file")
 | 
			
		||||
name_sysconfig=$(cat "$__object/explorer/hostname_sysconfig")
 | 
			
		||||
has_hostnamectl=$(cat "$__object/explorer/has_hostnamectl")
 | 
			
		||||
 | 
			
		||||
################################################################################
 | 
			
		||||
# If everything is ok -> exit
 | 
			
		||||
#
 | 
			
		||||
if [ "$name_config" = "$name_should" -a "$name_running" = "$name_should" ]; then
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
case "$os" in
 | 
			
		||||
    archlinux|debian|suse|ubuntu)
 | 
			
		||||
        if [ "$name_config" = "$name_should" -a "$name_running" = "$name_should" ]; then
 | 
			
		||||
            exit 0
 | 
			
		||||
        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
 | 
			
		||||
| 
						 | 
				
			
			@ -45,6 +59,17 @@ echo changed >> "$__messages_out"
 | 
			
		|||
if [ "$has_hostnamectl" ]; then
 | 
			
		||||
    echo "hostnamectl set-hostname '$name_should'"
 | 
			
		||||
else
 | 
			
		||||
    echo "hostname '$name_should'"
 | 
			
		||||
    echo "printf '%s\n' '$name_should' > /etc/hostname"
 | 
			
		||||
    case "$os" in
 | 
			
		||||
        archlinux|debian|ubuntu)
 | 
			
		||||
            echo "hostname '$name_should'"
 | 
			
		||||
            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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,12 @@
 | 
			
		|||
#
 | 
			
		||||
 | 
			
		||||
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() {
 | 
			
		||||
   echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
 | 
			
		||||
| 
						 | 
				
			
			@ -28,11 +34,18 @@ not_supported() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
case "$os" in
 | 
			
		||||
   archlinux|debian|ubuntu)
 | 
			
		||||
      # handled in gencode-remote
 | 
			
		||||
      :
 | 
			
		||||
   ;;
 | 
			
		||||
   *)
 | 
			
		||||
      not_supported
 | 
			
		||||
   ;;
 | 
			
		||||
    archlinux|debian|suse|ubuntu)
 | 
			
		||||
        # handled in gencode-remote
 | 
			
		||||
        :
 | 
			
		||||
    ;;
 | 
			
		||||
    centos)
 | 
			
		||||
        __key_value sysconfig-hostname \
 | 
			
		||||
            --file /etc/sysconfig/network \
 | 
			
		||||
            --delimiter '=' \
 | 
			
		||||
            --key HOSTNAME \
 | 
			
		||||
            --value "$name_should" --exact_delimiter
 | 
			
		||||
    ;;
 | 
			
		||||
    *)
 | 
			
		||||
        not_supported
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ __iptables_rule established  --rule "-A INPUT -m state --state RELATED,ESTABLISH
 | 
			
		|||
 | 
			
		||||
# Some service rules
 | 
			
		||||
__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"
 | 
			
		||||
 | 
			
		||||
# Ensure some rules are not present anymore
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@
 | 
			
		|||
#set -x
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/jaildir" ]; then
 | 
			
		||||
   jaildir="$(cat "$__object/parameter/name")"
 | 
			
		||||
   jaildir="$(cat "$__object/parameter/jaildir")"
 | 
			
		||||
else
 | 
			
		||||
   jaildir="/usr/jail"
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ else
 | 
			
		|||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/jaildir" ]; then
 | 
			
		||||
   jaildir="$(cat "$__object/parameter/name")"
 | 
			
		||||
   jaildir="$(cat "$__object/parameter/jaildir")"
 | 
			
		||||
else
 | 
			
		||||
   jaildir="/usr/jail"
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,14 +32,14 @@ else
 | 
			
		|||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/jaildir" ]; then
 | 
			
		||||
   jaildir="$(cat "$__object/parameter/name")"
 | 
			
		||||
   jaildir="$(cat "$__object/parameter/jaildir")"
 | 
			
		||||
else
 | 
			
		||||
   jaildir="/usr/jail"
 | 
			
		||||
fi
 | 
			
		||||
# backslash-escaped $jaildir
 | 
			
		||||
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
 | 
			
		||||
   echo "STARTED"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
#!/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.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +104,7 @@ stopJail() {
 | 
			
		|||
# Check $status before issuing command
 | 
			
		||||
   if [ "$status" = "STARTED" ]; then
 | 
			
		||||
      echo "/etc/rc.d/jail stop ${name}"
 | 
			
		||||
      echo "stop" >> "$__messages_out"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -111,6 +112,7 @@ startJail() {
 | 
			
		|||
# Check $status before issuing command
 | 
			
		||||
   if [ "$status" = "NOTSTART" ]; then
 | 
			
		||||
      echo "/etc/rc.d/jail start ${name}"
 | 
			
		||||
      echo "start" >> "$__messages_out"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -162,6 +164,7 @@ EOF
 | 
			
		|||
         rm -f /etc/rc.conf.bak
 | 
			
		||||
      fi
 | 
			
		||||
EOF
 | 
			
		||||
   echo "delete" >> "$__messages_out"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
createJail() {
 | 
			
		||||
| 
						 | 
				
			
			@ -215,6 +218,7 @@ cat <<EOF
 | 
			
		|||
   fi
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
   echo "create" >> "$__messages_out"
 | 
			
		||||
 | 
			
		||||
# Create the ro+rw mountpoint entries in fstab
 | 
			
		||||
cat <<EOF
 | 
			
		||||
| 
						 | 
				
			
			@ -310,6 +314,7 @@ if [ "$onboot" = "yes" ]; then
 | 
			
		|||
      fi
 | 
			
		||||
      unset jail_list
 | 
			
		||||
EOF
 | 
			
		||||
   echo "onboot" >> "$__messages_out"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
-------------------
 | 
			
		||||
state::
 | 
			
		||||
   Either "present" or "absent."
 | 
			
		||||
   Either "present" or "absent", defaults to "present".
 | 
			
		||||
 | 
			
		||||
jailbase::
 | 
			
		||||
   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
 | 
			
		||||
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
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,8 +29,8 @@
 | 
			
		|||
# Can only be used on FreeBSD
 | 
			
		||||
os="$(cat "$__global/explorer/os")"
 | 
			
		||||
if [ ! "$os" = "freebsd" ]; then
 | 
			
		||||
	echo "__jail can only be used on FreeBSD targets!" >&2
 | 
			
		||||
	exit 1
 | 
			
		||||
   echo "__jail can only be used on FreeBSD targets!" >&2
 | 
			
		||||
   exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
jaildir="$(cat "$__object/parameter/jaildir")"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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
 | 
			
		||||
jaildir
 | 
			
		||||
jailbase
 | 
			
		||||
state
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
			
		||||
# 2014 Daniel Heule     (hda at sfs.biz)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -18,36 +19,85 @@
 | 
			
		|||
# 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")"
 | 
			
		||||
state="$(cat "$__object/parameter/state" 2>/dev/null \
 | 
			
		||||
   || echo "present")"
 | 
			
		||||
file="$(cat "$__object/parameter/file")"
 | 
			
		||||
delimiter="$(cat "$__object/parameter/delimiter")"
 | 
			
		||||
value="$(cat "$__object/parameter/value" 2>/dev/null \
 | 
			
		||||
   || echo "__CDIST_NOTSET__")"
 | 
			
		||||
export state="$(cat "$__object/parameter/state")"
 | 
			
		||||
 | 
			
		||||
case "$state" in
 | 
			
		||||
   absent)
 | 
			
		||||
      if grep -q -E "^$key$delimiter+" "$file"; then
 | 
			
		||||
         # if the key exists, with whatever value, we will have to remove it
 | 
			
		||||
         # so report it as present
 | 
			
		||||
         echo present
 | 
			
		||||
      else
 | 
			
		||||
         # key does not exist
 | 
			
		||||
         echo absent
 | 
			
		||||
      fi
 | 
			
		||||
   ;;
 | 
			
		||||
   present)
 | 
			
		||||
      if grep -q -E "^$key$delimiter+$value$" "$file"; then
 | 
			
		||||
         # key exists and value is same
 | 
			
		||||
         echo present
 | 
			
		||||
      elif grep -q -E "^$key$delimiter+" "$file"; then
 | 
			
		||||
         # key exists, but value is empty or different
 | 
			
		||||
         echo wrongvalue
 | 
			
		||||
      else
 | 
			
		||||
         # key does not exist
 | 
			
		||||
         echo absent
 | 
			
		||||
      fi
 | 
			
		||||
   ;;
 | 
			
		||||
esac
 | 
			
		||||
file="$(cat "$__object/parameter/file")"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "$file" ]; then
 | 
			
		||||
    echo "nosuchfile"
 | 
			
		||||
    exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
#
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -19,52 +20,56 @@
 | 
			
		|||
# 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")"
 | 
			
		||||
 | 
			
		||||
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" = "$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
 | 
			
		||||
    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
 | 
			
		||||
            absent)
 | 
			
		||||
                # add new key and value
 | 
			
		||||
                printf 'echo "%s%s%s" >> "%s"' "$key" "$delimiter" "$value_escaped" "$file"
 | 
			
		||||
            absent|nosuchfile)
 | 
			
		||||
                # nothing to do
 | 
			
		||||
            ;;
 | 
			
		||||
            wrongvalue)
 | 
			
		||||
                # change exisiting value
 | 
			
		||||
                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
 | 
			
		||||
            wrongformat|wrongvalue|present)
 | 
			
		||||
                echo "remove" >> "$__messages_out"
 | 
			
		||||
            ;;
 | 
			
		||||
            *)
 | 
			
		||||
                echo "Unknown explorer state: $state_is" >&2
 | 
			
		||||
                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
 | 
			
		||||
    ;;
 | 
			
		||||
    *)
 | 
			
		||||
       echo "Unknown state: $state_should" >&2
 | 
			
		||||
       exit 1
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
cat "$__type/files/remote_script.sh"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,12 +25,36 @@ delimiter::
 | 
			
		|||
OPTIONAL PARAMETERS
 | 
			
		||||
-------------------
 | 
			
		||||
state::
 | 
			
		||||
   present or absent, defaults to present. If present, sets the key to value,
 | 
			
		||||
   if absent, removes the key from the file.
 | 
			
		||||
    present or absent, defaults to present. If present, sets the key to value,
 | 
			
		||||
    if absent, removes the key from the file.
 | 
			
		||||
key::
 | 
			
		||||
   The key to change. Defaults to object_id.
 | 
			
		||||
    The key to change. Defaults to object_id.
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -46,13 +70,19 @@ __key_value my-fancy-id --file /etc/login.defs --key SYS_UID_MAX --value 666 \
 | 
			
		|||
 | 
			
		||||
# Enable packet forwarding
 | 
			
		||||
__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
 | 
			
		||||
__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
 | 
			
		||||
--------
 | 
			
		||||
- 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
 | 
			
		||||
value
 | 
			
		||||
state
 | 
			
		||||
comment
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 2014 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -74,8 +75,13 @@ case "$state_should" in
 | 
			
		|||
        fi
 | 
			
		||||
 | 
			
		||||
        cat << eof
 | 
			
		||||
tmp=\$(mktemp)
 | 
			
		||||
grep -v $greparg '$regex' '$file' > \$tmp && cat "\$tmp" > '$file' && rm -f "\$tmp"
 | 
			
		||||
tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX)
 | 
			
		||||
# 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
 | 
			
		||||
    ;;
 | 
			
		||||
    *)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
#!/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.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -34,8 +34,13 @@ case "$type" in
 | 
			
		|||
   symbolic)
 | 
			
		||||
      cd "$destination_dir"
 | 
			
		||||
      source_is=$(ls -l "$destination" | sed 's/.*-> //g')
 | 
			
		||||
      if [ -h "$destination" -a "$source_is" = "$source" ]; then
 | 
			
		||||
         echo present
 | 
			
		||||
      if [ -h "$destination" ]; then
 | 
			
		||||
         # ignore trailing slashes for comparison
 | 
			
		||||
         if [ "${source_is%/}" = "${source%/}" ]; then
 | 
			
		||||
            echo present
 | 
			
		||||
         else
 | 
			
		||||
            echo wrongsource
 | 
			
		||||
         fi
 | 
			
		||||
      else
 | 
			
		||||
         echo absent
 | 
			
		||||
      fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -18,9 +18,6 @@
 | 
			
		|||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Mostly a wrapper for ln
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
destination="/$__object_id"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -50,20 +47,22 @@ case "$state_should" in
 | 
			
		|||
    present)
 | 
			
		||||
        if [ "$file_type" = "directory" ]; then
 | 
			
		||||
            # our destination is currently a directory, delete it
 | 
			
		||||
            cat << DONE
 | 
			
		||||
rm -rf "$destination"
 | 
			
		||||
DONE
 | 
			
		||||
            printf 'rm -rf "%s" &&\n' "$destination"
 | 
			
		||||
        else
 | 
			
		||||
           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
 | 
			
		||||
 | 
			
		||||
        # create our link
 | 
			
		||||
        cat << DONE
 | 
			
		||||
ln ${lnopt} -f "$source" "$destination"
 | 
			
		||||
DONE
 | 
			
		||||
        printf 'ln %s -f "%s" "%s"\n' "$lnopt" "$source" "$destination"
 | 
			
		||||
    ;;
 | 
			
		||||
    absent)
 | 
			
		||||
        # only delete if it is a sym/hard link
 | 
			
		||||
        if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then
 | 
			
		||||
            echo rm -f \"$destination\"
 | 
			
		||||
            printf 'rm -f "%s"\n' "$destination"
 | 
			
		||||
        fi
 | 
			
		||||
    ;;
 | 
			
		||||
    *)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ This cdist type allows you to setup locales.
 | 
			
		|||
OPTIONAL PARAMETERS
 | 
			
		||||
-------------------
 | 
			
		||||
state::
 | 
			
		||||
   'present' or 'absent'
 | 
			
		||||
   'present' or 'absent', defaults to present
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
| 
						 | 
				
			
			@ -43,5 +43,5 @@ SEE ALSO
 | 
			
		|||
 | 
			
		||||
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).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
#!/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.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -29,4 +29,12 @@ case "$os" in
 | 
			
		|||
        # Debian needs a seperate package
 | 
			
		||||
        __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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,8 +50,11 @@ fi
 | 
			
		|||
 | 
			
		||||
pkg_version="$(cat "$__object/explorer/pkg_version")"
 | 
			
		||||
 | 
			
		||||
# TODO: Shouldn't be hardcoded
 | 
			
		||||
echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$machine/
 | 
			
		||||
if [ -f "$__object/parameter/pkg_path" ]; then                                  
 | 
			
		||||
  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
 | 
			
		||||
    state_is="present"
 | 
			
		||||
| 
						 | 
				
			
			@ -65,12 +68,18 @@ case "$state_should" in
 | 
			
		|||
    present)
 | 
			
		||||
        # use this because pkg_add doesn't properly handle errors
 | 
			
		||||
        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
 | 
			
		||||
if [ -n "\$status" ]; then
 | 
			
		||||
# We didn't find the package in the list of 'installed packages', so it failed
 | 
			
		||||
# 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"
 | 
			
		||||
	exit 1
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
eof
 | 
			
		||||
    ;;
 | 
			
		||||
| 
						 | 
				
			
			@ -79,9 +88,14 @@ eof
 | 
			
		|||
        # use this because pkg_add doesn't properly handle errors
 | 
			
		||||
        cat << eof
 | 
			
		||||
status=\$(pkg_delete "$pkgopts" "$name--$flavor")
 | 
			
		||||
pkg_info | grep "^${name}.*${flavor}" > /dev/null 2>&1
 | 
			
		||||
 | 
			
		||||
# no error
 | 
			
		||||
if [ -n "\$status" ]; then
 | 
			
		||||
# We found the package in the list of 'installed packages'
 | 
			
		||||
# 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"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,8 @@ flavor::
 | 
			
		|||
state::
 | 
			
		||||
    Either "present" or "absent", defaults to "present"
 | 
			
		||||
 | 
			
		||||
pkg_path::
 | 
			
		||||
    Manually specify a PKG_PATH to add packages from.
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
--------
 | 
			
		||||
| 
						 | 
				
			
			@ -45,6 +47,10 @@ __package_pkg_openbsd python --state present --name python2
 | 
			
		|||
 | 
			
		||||
# Remove obsolete package
 | 
			
		||||
__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
 | 
			
		||||
flavor
 | 
			
		||||
state
 | 
			
		||||
pkg_path
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
#!/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.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -27,6 +27,14 @@ else
 | 
			
		|||
   name="$__object_id"
 | 
			
		||||
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")"
 | 
			
		||||
 | 
			
		||||
if grep -q -E "(centos|redhat|amazon)" "$__global/explorer/os"; then
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +55,7 @@ fi
 | 
			
		|||
 | 
			
		||||
case "$state_should" in
 | 
			
		||||
    present)
 | 
			
		||||
        echo yum $opts install \"$name\"
 | 
			
		||||
        echo yum $opts install \"$install_name\"
 | 
			
		||||
    ;;
 | 
			
		||||
    absent)
 | 
			
		||||
        echo yum $opts remove \"$name\"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,8 @@ name::
 | 
			
		|||
 | 
			
		||||
state::
 | 
			
		||||
    Either "present" or "absent", defaults to "present"
 | 
			
		||||
url::
 | 
			
		||||
    URL to use for the package
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +43,9 @@ __package_yum python --state present --name python2
 | 
			
		|||
 | 
			
		||||
# Remove obsolete package
 | 
			
		||||
__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
 | 
			
		||||
state
 | 
			
		||||
url
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ This type is used on *BSD systems to manage the pf firewall's ruleset.
 | 
			
		|||
REQUIRED PARAMETERS
 | 
			
		||||
-------------------
 | 
			
		||||
state::
 | 
			
		||||
   Either "absent" (no ruleset at all) or "present"
 | 
			
		||||
   Either "absent" (no ruleset at all) or "present", defaults to "present".
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
state
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,8 +19,7 @@
 | 
			
		|||
#
 | 
			
		||||
 | 
			
		||||
name="$__object_id"
 | 
			
		||||
state_should="present"
 | 
			
		||||
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
 | 
			
		||||
state_should="$(cat "$__object/parameter/state")"
 | 
			
		||||
state_is="$(cat "$__object/explorer/state")"
 | 
			
		||||
 | 
			
		||||
if [ "$state_should" != "$state_is" ]; then
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ This cdist type allows you to create or drop postgres databases.
 | 
			
		|||
OPTIONAL PARAMETERS
 | 
			
		||||
-------------------
 | 
			
		||||
state::
 | 
			
		||||
   either 'present' or 'absent'
 | 
			
		||||
   either 'present' or 'absent', defaults to 'present'.
 | 
			
		||||
 | 
			
		||||
owner::
 | 
			
		||||
   the role owning this database
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
present
 | 
			
		||||
| 
						 | 
				
			
			@ -20,8 +20,7 @@
 | 
			
		|||
 | 
			
		||||
name="$__object_id"
 | 
			
		||||
state_is="$(cat "$__object/explorer/state")"
 | 
			
		||||
state_should="present"
 | 
			
		||||
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
 | 
			
		||||
state_should="$(cat "$__object/parameter/state")"
 | 
			
		||||
 | 
			
		||||
[ "$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.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
REQUIRED PARAMETERS
 | 
			
		||||
-------------------
 | 
			
		||||
size::
 | 
			
		||||
    Size of the image in qemu-img compatible units.
 | 
			
		||||
    See qemu-img(1).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OPTIONAL PARAMETERS
 | 
			
		||||
-------------------
 | 
			
		||||
state::
 | 
			
		||||
    Either "present" or "absent", defaults to "present"
 | 
			
		||||
size::
 | 
			
		||||
    Size of the image in qemu-img compatible units.
 | 
			
		||||
 | 
			
		||||
    Required if state is "present".
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
| 
						 | 
				
			
			@ -42,9 +40,10 @@ __qemu_img /home/services/kvm/vm/myoldvm/system-disk --state absent
 | 
			
		|||
SEE ALSO
 | 
			
		||||
--------
 | 
			
		||||
- cdist-type(7)
 | 
			
		||||
- qemu-img(1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,11 +3,23 @@
 | 
			
		|||
#
 | 
			
		||||
 | 
			
		||||
format="$(cat "$__object/parameter/format")"
 | 
			
		||||
state="$(cat "$__object/parameter/state")"
 | 
			
		||||
state_should="$(cat "$__object/parameter/state")"
 | 
			
		||||
 | 
			
		||||
diskimage="/$__object_id"
 | 
			
		||||
 | 
			
		||||
# Absent is ensured by __file, present by gencode-remote
 | 
			
		||||
if [ "$state" = "absent" ]; then
 | 
			
		||||
    __file "$diskimage" --state absent
 | 
			
		||||
fi
 | 
			
		||||
case "$state_should" in
 | 
			
		||||
    present)
 | 
			
		||||
        if [ ! -f "$__object/parameter/size" ]; then
 | 
			
		||||
            echo "Size is required when state is present" >&2
 | 
			
		||||
            exit 1
 | 
			
		||||
        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
 | 
			
		||||
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
 | 
			
		||||
-------------------
 | 
			
		||||
state::
 | 
			
		||||
    Either "present" or "absent".
 | 
			
		||||
    Either "present" or "absent", defaults to "present".
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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::
 | 
			
		||||
    The gemset to use
 | 
			
		||||
state::
 | 
			
		||||
    Either "present" or "absent"
 | 
			
		||||
    Either "present" or "absent", defaults to "present".
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
state
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,2 @@
 | 
			
		|||
state
 | 
			
		||||
gemset
 | 
			
		||||
user
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ REQUIRED PARAMETERS
 | 
			
		|||
user::
 | 
			
		||||
    The remote user account to use
 | 
			
		||||
state::
 | 
			
		||||
    Either "present" or "absent".
 | 
			
		||||
    Either "present" or "absent", defaults to "present".
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ REQUIRED PARAMETERS
 | 
			
		|||
user::
 | 
			
		||||
    The remote user account to use
 | 
			
		||||
state::
 | 
			
		||||
    Either "present" or "absent".
 | 
			
		||||
    Either "present" or "absent", defaults to "present".
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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::
 | 
			
		||||
   an alternative destination file, defaults to ~$owner/.ssh/authorized_keys
 | 
			
		||||
 | 
			
		||||
comment::
 | 
			
		||||
   an optional comment
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
BOOLEAN PARAMETERS
 | 
			
		||||
------------------
 | 
			
		||||
| 
						 | 
				
			
			@ -67,12 +64,11 @@ __ssh_authorized_keys root \
 | 
			
		|||
__ssh_authorized_keys user-name \
 | 
			
		||||
   --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 \
 | 
			
		||||
   --owner user-name \
 | 
			
		||||
   --key "ssh-rsa AXYZAAB3NzaC1yc2..." \
 | 
			
		||||
   --key "ssh-rsa AZXYAAB3NzaC1yc2..." \
 | 
			
		||||
   --comment "allow the members of project foo to login"
 | 
			
		||||
   --key "ssh-rsa AZXYAAB3NzaC1yc2..."
 | 
			
		||||
 | 
			
		||||
# same as above, but authorized_keys file in non standard location
 | 
			
		||||
__ssh_authorized_keys some-fancy-id \
 | 
			
		||||
| 
						 | 
				
			
			@ -97,5 +93,5 @@ SEE ALSO
 | 
			
		|||
 | 
			
		||||
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).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
#!/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.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +33,7 @@ else
 | 
			
		|||
fi
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
      echo "Failed to get owners group from explorer." >&2
 | 
			
		||||
      exit 1
 | 
			
		||||
| 
						 | 
				
			
			@ -56,16 +57,32 @@ if [ ! -f "$__object/parameter/noparent" -o ! -f "$__object/parameter/nofile" ];
 | 
			
		|||
   fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Generate entry for inclusion in authorized_keys file
 | 
			
		||||
(
 | 
			
		||||
if [ -f "$__object/parameter/comment" ]; then
 | 
			
		||||
   echo "# $(cat "$__object/parameter/comment")"
 | 
			
		||||
fi
 | 
			
		||||
cat "$__object/parameter/key"
 | 
			
		||||
) | \
 | 
			
		||||
# Remove legacy blocks created by old versions of this type
 | 
			
		||||
# FIXME: remove me in 3.2+
 | 
			
		||||
__block "$__object_name" \
 | 
			
		||||
   --file "$file" \
 | 
			
		||||
   --prefix "#cdist:$__object_name" \
 | 
			
		||||
   --suffix "#/cdist:$__object_name" \
 | 
			
		||||
   --state "$state" \
 | 
			
		||||
   --text -
 | 
			
		||||
   --state 'absent' \
 | 
			
		||||
   --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
 | 
			
		||||
state
 | 
			
		||||
file
 | 
			
		||||
comment
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,13 +27,18 @@ os=$(cat "$__global/explorer/os")
 | 
			
		|||
        
 | 
			
		||||
case "$os" in
 | 
			
		||||
    archlinux|debian|ubuntu)
 | 
			
		||||
        __package tzdata --state present
 | 
			
		||||
        require="__package/tzdata" __link /etc/localtime    \
 | 
			
		||||
            --source "/usr/share/zoneinfo/${timezone}"      \
 | 
			
		||||
            --type symbolic
 | 
			
		||||
        package=tzdata
 | 
			
		||||
    ;;
 | 
			
		||||
    suse)
 | 
			
		||||
        package=timezone
 | 
			
		||||
    ;;
 | 
			
		||||
    *)
 | 
			
		||||
        echo "Unsupported OS $os" >&2
 | 
			
		||||
        exit 1
 | 
			
		||||
    ;;
 | 
			
		||||
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
 | 
			
		||||
database="shadow"
 | 
			
		||||
 | 
			
		||||
if [ "$os" = "freebsd" ]; then
 | 
			
		||||
   database="passwd"
 | 
			
		||||
fi
 | 
			
		||||
case "$os" in
 | 
			
		||||
  "freebsd"|"openbsd")  database="passwd";;
 | 
			
		||||
esac
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
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/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# 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
 | 
			
		||||
   uri="$(cat "$__object/parameter/repo_uri")"
 | 
			
		||||
if [ -f "$__object/parameter/uri" ]; then
 | 
			
		||||
   uri="$(cat "$__object/parameter/uri")"
 | 
			
		||||
else
 | 
			
		||||
   uri="$__object_id"
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@
 | 
			
		|||
#exec >&2
 | 
			
		||||
#set -x
 | 
			
		||||
 | 
			
		||||
zypper_def_opts=" -q "
 | 
			
		||||
zypper_def_opts=" -q --non-interactive --gpg-auto-import-keys "
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/repo_desc" ]; then
 | 
			
		||||
   desc="$(cat "$__object/parameter/repo_desc")"
 | 
			
		||||
| 
						 | 
				
			
			@ -33,8 +33,8 @@ else
 | 
			
		|||
   desc="$__object_id"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/repo_uri" ]; then
 | 
			
		||||
   uri="$(cat "$__object/parameter/repo_uri")"
 | 
			
		||||
if [ -f "$__object/parameter/uri" ]; then
 | 
			
		||||
   uri="$(cat "$__object/parameter/uri")"
 | 
			
		||||
else
 | 
			
		||||
   uri="$__object_id"
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +65,7 @@ fi
 | 
			
		|||
case "$state" in
 | 
			
		||||
   present)
 | 
			
		||||
         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
 | 
			
		||||
         fi
 | 
			
		||||
         if [ -z "$repo_id" ]; then
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,13 +22,13 @@ OPTIONAL PARAMETERS
 | 
			
		|||
-------------------
 | 
			
		||||
state::
 | 
			
		||||
    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 + 
 | 
			
		||||
         for all following states, the repo can be searched via repo_id or repo_uri + 
 | 
			
		||||
    #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 uri + 
 | 
			
		||||
    #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 + 
 | 
			
		||||
    #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.
 | 
			
		||||
 | 
			
		||||
repo_desc::
 | 
			
		||||
| 
						 | 
				
			
			@ -43,10 +43,10 @@ EXAMPLES
 | 
			
		|||
 | 
			
		||||
--------------------------------------------------------------------------------
 | 
			
		||||
# 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
 | 
			
		||||
__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)
 | 
			
		||||
__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
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
__zypper_repo testrepo4 --state disabled --repo_id 4
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
state
 | 
			
		||||
repo_uri
 | 
			
		||||
uri
 | 
			
		||||
repo_desc
 | 
			
		||||
repo_id
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,8 +20,8 @@
 | 
			
		|||
#
 | 
			
		||||
# Manage services with Zypper (mostly suse)
 | 
			
		||||
#
 | 
			
		||||
if [ -f "$__object/parameter/service_uri" ]; then
 | 
			
		||||
   uri="$(cat "$__object/parameter/service_uri")"
 | 
			
		||||
if [ -f "$__object/parameter/uri" ]; then
 | 
			
		||||
   uri="$(cat "$__object/parameter/uri")"
 | 
			
		||||
else
 | 
			
		||||
   uri="/$__object_id"
 | 
			
		||||
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