forked from ungleich-public/cdist
		
	Merge remote-tracking branch 'telmich/master' into filestate
Conflicts: conf/type/__file/gencode-local Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
		
				commit
				
					
						8c1aa87296
					
				
			
		
					 271 changed files with 17717 additions and 3049 deletions
				
			
		
							
								
								
									
										7
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,5 +11,8 @@ doc/man/man7/cdist-type__*.text
 | 
				
			||||||
doc/man/man7/cdist-reference.text
 | 
					doc/man/man7/cdist-reference.text
 | 
				
			||||||
doc/man/man*/docbook-xsl.css
 | 
					doc/man/man*/docbook-xsl.css
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Ignore cache for version control
 | 
					# Ignore cdist cache for version control
 | 
				
			||||||
cache/
 | 
					/cache/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Python / cache
 | 
				
			||||||
 | 
					__pycache__/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,40 +0,0 @@
 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Hey hackers,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
this README is for you, for those who want to dig into cdist, hack it or try
 | 
					 | 
				
			||||||
to get a deeper understanding. Please read doc/man/man7/cdist-hacker.text.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
I hope you have a lot of fun with cdist, because it was also a lot of fun to
 | 
					 | 
				
			||||||
develop it!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   -- Nico, 20110324
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Running cdist when developing
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This file is suitable for execution and saving the objects and
 | 
					 | 
				
			||||||
explorers from cdist. I usually do it like this:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   % ./HACKERS_README
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -x
 | 
					 | 
				
			||||||
# Tell the user what we do, so this script makes sense during execution
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# prepare use (only from top level directory)
 | 
					 | 
				
			||||||
export PATH="$(pwd -P)/bin:$PATH"
 | 
					 | 
				
			||||||
export __cdist_conf_dir="$(pwd -P)/conf"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Allow user to supply hostname
 | 
					 | 
				
			||||||
target="${1:-localhost}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# And use hostname as basedir (dangerous, but hackers know what they do)
 | 
					 | 
				
			||||||
export __cdist_local_base_dir="/tmp/$target"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Run the real script
 | 
					 | 
				
			||||||
cdist-deploy-to "$target"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Display results
 | 
					 | 
				
			||||||
find "${__cdist_local_base_dir}"
 | 
					 | 
				
			||||||
							
								
								
									
										74
									
								
								README
									
										
									
									
									
								
							
							
						
						
									
										74
									
								
								README
									
										
									
									
									
								
							| 
						 | 
					@ -15,7 +15,7 @@
 | 
				
			||||||
       "P'        ""         ""  
 | 
					       "P'        ""         ""  
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[!toc levels=2]]
 | 
					[[!toc levels=3]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Introduction
 | 
					## Introduction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,13 +38,13 @@ Design | Define target state, do not focus on methods or scripts
 | 
				
			||||||
Design | Push architecture: Instantly apply your changes
 | 
					Design | Push architecture: Instantly apply your changes
 | 
				
			||||||
Small core | cdist's core is very small - less code, less bugs
 | 
					Small core | cdist's core is very small - less code, less bugs
 | 
				
			||||||
Fast development | Focus on straightforwardness of type creation is a main development objective
 | 
					Fast development | Focus on straightforwardness of type creation is a main development objective
 | 
				
			||||||
 | 
					Modern Programming Language | cdist is written in Python
 | 
				
			||||||
Requirements, Scalability | No central server needed, cdist operates in push mode and can be run from any computer
 | 
					Requirements, Scalability | No central server needed, cdist operates in push mode and can be run from any computer
 | 
				
			||||||
Requirements, Scalability, Upgrade | cdist only needs to be updated on the master, not on the target hosts
 | 
					Requirements, Scalability, Upgrade | cdist only needs to be updated on the master, not on the target hosts
 | 
				
			||||||
Requirements, Security | Uses well-know [SSH](http://www.openssh.com/) as transport protocol
 | 
					Requirements, Security | Uses well-know [SSH](http://www.openssh.com/) as transport protocol
 | 
				
			||||||
Requirements, Simplicity | Requires only shell and SSH server on the target
 | 
					Requirements, Simplicity | Requires only shell and SSH server on the target
 | 
				
			||||||
UNIX | Reuse of existing tools like cat, find, mv, ...
 | 
					UNIX | Reuse of existing tools like cat, find, mv, ...
 | 
				
			||||||
UNIX, familar environment, documentation | Is available as manpages and HTML
 | 
					UNIX, familar environment, documentation | Is available as manpages and HTML
 | 
				
			||||||
UNIX, simplicity, familar environment | cdist is written in POSIX shell
 | 
					 | 
				
			||||||
UNIX, simplicity, familar environment | cdist is configured in POSIX shell
 | 
					UNIX, simplicity, familar environment | cdist is configured in POSIX shell
 | 
				
			||||||
"""]]
 | 
					"""]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,8 +53,6 @@ UNIX, simplicity, familar environment | cdist is configured in POSIX shell
 | 
				
			||||||
The cdist documentation is included as manpages in the distribution.
 | 
					The cdist documentation is included as manpages in the distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * You can [browse the documentation of the latest version online](man) as well.
 | 
					 * You can [browse the documentation of the latest version online](man) as well.
 | 
				
			||||||
 * Or you can watch the youtube **video**
 | 
					 | 
				
			||||||
[cdist installation and first usage in less than 60 seconds][http://www.youtube.com/watch?v=PRMjzy48eTI).
 | 
					 | 
				
			||||||
 * Have a look at the [given speeches](speeches)
 | 
					 * Have a look at the [given speeches](speeches)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### OS support
 | 
					### OS support
 | 
				
			||||||
| 
						 | 
					@ -63,12 +61,14 @@ cdist was tested or is know to run on at least
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * [Archlinux](http://www.archlinux.org/)
 | 
					 * [Archlinux](http://www.archlinux.org/)
 | 
				
			||||||
 * [Debian](http://www.debian.org/)
 | 
					 * [Debian](http://www.debian.org/)
 | 
				
			||||||
 | 
					 * [CentOS](http://www.centos.org/)
 | 
				
			||||||
 * [Fedora](http://fedoraproject.org/)
 | 
					 * [Fedora](http://fedoraproject.org/)
 | 
				
			||||||
 * [Gentoo](http://www.gentoo.org/)
 | 
					 * [Gentoo](http://www.gentoo.org/)
 | 
				
			||||||
 * [Mac OS X](http://www.apple.com/macosx/)
 | 
					 * [Mac OS X](http://www.apple.com/macosx/)
 | 
				
			||||||
 * [OpenBSD](http://www.openbsd.org)
 | 
					 * [OpenBSD](http://www.openbsd.org)
 | 
				
			||||||
 * [Redhat](http://www.redhat.com/)
 | 
					 * [Redhat](http://www.redhat.com/)
 | 
				
			||||||
 * [Ubuntu](http://www.ubuntu.com/)
 | 
					 * [Ubuntu](http://www.ubuntu.com/)
 | 
				
			||||||
 | 
					 * [XenServer](http://www.citrix.com/xenserver/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Requirements
 | 
					## Requirements
 | 
				
			||||||
| 
						 | 
					@ -76,7 +76,9 @@ cdist was tested or is know to run on at least
 | 
				
			||||||
### Server
 | 
					### Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * A posix like shell
 | 
					 * A posix like shell
 | 
				
			||||||
 | 
					 * Python (>= 3.2 required)
 | 
				
			||||||
 * SSH-Client
 | 
					 * SSH-Client
 | 
				
			||||||
 | 
					 * Asciidoc (for building the manpages)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Client ("target host")
 | 
					### Client ("target host")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -84,21 +86,54 @@ cdist was tested or is know to run on at least
 | 
				
			||||||
 * SSH-Server
 | 
					 * SSH-Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Getting cdist
 | 
					## Installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Preperation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ensure you have Python 3.x and the **argparse** module installed on
 | 
				
			||||||
 | 
					the machine you use to **deploy to the targets**.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Archlinux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Archlinux already has python >= 3.2, so you only need to do:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pacman -S python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Debian
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    aptitude install python3 python3-setuptools
 | 
				
			||||||
 | 
					    easy_install3 argparse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Gentoo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Gentoo only provides python 3.2 in testing packages (http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=3&chap=3).
 | 
				
			||||||
 | 
					If you want to ensure nothing breaks you must set back the python version to what was default before.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    emerge -av =python-3.2.2 --autounmask-write
 | 
				
			||||||
 | 
					    emerge -av =python-3.2.2
 | 
				
			||||||
 | 
					    eselect python list
 | 
				
			||||||
 | 
					    eselect python list set python3.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Max OS X
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ensure you have port installed and configured (http://www.macports.org/install.php).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    port install python32
 | 
				
			||||||
 | 
					    ln -s /opt/local/bin/python3.2 /opt/local/bin/python3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Get cdist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can clone cdist from git, which gives you the advantage of having
 | 
					You can clone cdist from git, which gives you the advantage of having
 | 
				
			||||||
a version control in place for development of your own stuff as well.
 | 
					a version control in place for development of your own stuff as well.
 | 
				
			||||||
 | 
					 | 
				
			||||||
### Installation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To install cdist, execute the following commands:
 | 
					To install cdist, execute the following commands:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    git clone git://git.schottelius.org/cdist
 | 
					    git clone git://git.schottelius.org/cdist
 | 
				
			||||||
    cd cdist
 | 
					    cd cdist
 | 
				
			||||||
    export PATH=$PATH:$(pwd -P)/bin
 | 
					    export PATH=$PATH:$(pwd -P)/bin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # If you want the manpages (requires gmake and asciidoc to be installed)
 | 
					    # If you want the manpages
 | 
				
			||||||
    ./build.sh man
 | 
					    ./build man
 | 
				
			||||||
    export MANPATH=$MANPATH:$(pwd -P)/doc/man
 | 
					    export MANPATH=$MANPATH:$(pwd -P)/doc/man
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -109,11 +144,12 @@ how to use cdist.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
There are at least the following branches available:
 | 
					There are at least the following branches available:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * master: the development branch
 | 
					 * Development: master
 | 
				
			||||||
 * 1.7: Bugfixes, cleanups, new type and explorer rename
 | 
					 * 2.0: Python rewrite of cdist core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Old versions:
 | 
					Old versions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * 1.7: Bugfixes, cleanups, new type and explorer rename
 | 
				
			||||||
 * 1.6: New types, cleaned up \_\_package* types, internal cleanup
 | 
					 * 1.6: New types, cleaned up \_\_package* types, internal cleanup
 | 
				
			||||||
 * 1.5: Focus on object orientation instead of global stage orientation
 | 
					 * 1.5: Focus on object orientation instead of global stage orientation
 | 
				
			||||||
 * 1.4: Support for redefiniton of objects (if equal)
 | 
					 * 1.4: Support for redefiniton of objects (if equal)
 | 
				
			||||||
| 
						 | 
					@ -129,13 +165,13 @@ may vanish at any point. To select a specific branch use
 | 
				
			||||||
    git checkout -b <name> origin/<name>
 | 
					    git checkout -b <name> origin/<name>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    # Stay on a specific version
 | 
					    # Stay on a specific version
 | 
				
			||||||
    version=1.7
 | 
					    version=2.0
 | 
				
			||||||
    git checkout -b $version origin/$version
 | 
					    git checkout -b $version origin/$version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Mirrors
 | 
					### Mirrors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * git://github.com/telmich/cdist.git ([github](https://github.com/telmich/cdist))
 | 
					 * git://github.com/telmich/cdist.git ([github](https://github.com/telmich/cdist))
 | 
				
			||||||
 * git://git.sans.ethz.ch/cdist ([sans](http://git.sans.ethz.ch/?p=cdist;a=summary))
 | 
					 * git://git.code.sf.net/p/cdist/code ([sourceforge](https://sourceforge.net/p/cdist/code))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Update
 | 
					## Update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -144,13 +180,21 @@ To upgrade cdist in the current branch use
 | 
				
			||||||
    git pull
 | 
					    git pull
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Also update the manpages
 | 
					    # Also update the manpages
 | 
				
			||||||
    ./build.sh man
 | 
					    ./build man
 | 
				
			||||||
    export MANPATH=$MANPATH:$(pwd -P)/doc/man
 | 
					    export MANPATH=$MANPATH:$(pwd -P)/doc/man
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break.
 | 
					If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break.
 | 
				
			||||||
The master branch on the other hand is the development branch and may not be
 | 
					The master branch on the other hand is the development branch and may not be
 | 
				
			||||||
working, break your setup or eat the tree in your garden.
 | 
					working, break your setup or eat the tree in your garden.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Upgrading from 1.7 to 2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Ensure python (>= 3.2) is installed on the server
 | 
				
			||||||
 | 
					* Use "cdist config host" instead of "cdist-deploy-to host"
 | 
				
			||||||
 | 
					* Use "cdist config -p host1 host2" instead of "cdist-mass-deploy"
 | 
				
			||||||
 | 
					* Use "cdist banner" for fun
 | 
				
			||||||
 | 
					* Use **\_\_object_fq** instead of **\_\_self** in manifests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Upgrading from 1.6 to 1.7
 | 
					### Upgrading from 1.6 to 1.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* If you used the global explorer **hardware_type**, you need to change
 | 
					* If you used the global explorer **hardware_type**, you need to change
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										234
									
								
								bin/cdist
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										234
									
								
								bin/cdist
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,234 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2010-2011 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def commandline():
 | 
				
			||||||
 | 
					    """Parse command line"""
 | 
				
			||||||
 | 
					    import argparse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    import cdist.banner
 | 
				
			||||||
 | 
					    import cdist.config
 | 
				
			||||||
 | 
					    import cdist.install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Construct parser others can reuse
 | 
				
			||||||
 | 
					    parser = {}
 | 
				
			||||||
 | 
					    # Options _all_ parsers have in common
 | 
				
			||||||
 | 
					    parser['loglevel'] = argparse.ArgumentParser(add_help=False)
 | 
				
			||||||
 | 
					    parser['loglevel'].add_argument('-d', '--debug',
 | 
				
			||||||
 | 
					        help='Set log level to debug', action='store_true',
 | 
				
			||||||
 | 
					        default=False)
 | 
				
			||||||
 | 
					    parser['loglevel'].add_argument('-v', '--verbose',
 | 
				
			||||||
 | 
					        help='Set log level to info, be more verbose',
 | 
				
			||||||
 | 
					        action='store_true', default=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Main subcommand parser
 | 
				
			||||||
 | 
					    parser['main'] = argparse.ArgumentParser(description='cdist ' + cdist.VERSION,
 | 
				
			||||||
 | 
					        parents=[parser['loglevel']])
 | 
				
			||||||
 | 
					    parser['main'].add_argument('-V', '--version',
 | 
				
			||||||
 | 
					        help='Show version', action='version',
 | 
				
			||||||
 | 
					        version='%(prog)s ' + cdist.VERSION)
 | 
				
			||||||
 | 
					    parser['sub'] = parser['main'].add_subparsers(title="Commands")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Banner
 | 
				
			||||||
 | 
					    parser['banner'] = parser['sub'].add_parser('banner', 
 | 
				
			||||||
 | 
					        parents=[parser['loglevel']])
 | 
				
			||||||
 | 
					    parser['banner'].set_defaults(func=cdist.banner.banner)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Config and install (common stuff)
 | 
				
			||||||
 | 
					    parser['configinstall'] = argparse.ArgumentParser(add_help=False)
 | 
				
			||||||
 | 
					    parser['configinstall'].add_argument('host', nargs='+',
 | 
				
			||||||
 | 
					        help='one or more hosts to operate on')
 | 
				
			||||||
 | 
					    parser['configinstall'].add_argument('-c', '--cdist-home',
 | 
				
			||||||
 | 
					         help='Change cdist home (default: .. from bin directory)',
 | 
				
			||||||
 | 
					         action='store')
 | 
				
			||||||
 | 
					    parser['configinstall'].add_argument('-i', '--initial-manifest', 
 | 
				
			||||||
 | 
					         help='Path to a cdist manifest or \'-\' to read from stdin.',
 | 
				
			||||||
 | 
					         dest='manifest', required=False)
 | 
				
			||||||
 | 
					    parser['configinstall'].add_argument('-p', '--parallel',
 | 
				
			||||||
 | 
					         help='Operate on multiple hosts in parallel',
 | 
				
			||||||
 | 
					         action='store_true', dest='parallel')
 | 
				
			||||||
 | 
					    parser['configinstall'].add_argument('-s', '--sequential',
 | 
				
			||||||
 | 
					         help='Operate on multiple hosts sequentially (default)',
 | 
				
			||||||
 | 
					         action='store_false', dest='parallel')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Config
 | 
				
			||||||
 | 
					    parser['config'] = parser['sub'].add_parser('config',
 | 
				
			||||||
 | 
					        parents=[parser['loglevel'], parser['configinstall']])
 | 
				
			||||||
 | 
					    parser['config'].set_defaults(func=config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Install
 | 
				
			||||||
 | 
					    parser['install'] = parser['sub'].add_parser('install',
 | 
				
			||||||
 | 
					        parents=[parser['loglevel'], parser['configinstall']])
 | 
				
			||||||
 | 
					    parser['install'].set_defaults(func=install)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for p in parser:
 | 
				
			||||||
 | 
					        parser[p].epilog = "Get cdist at http://www.nico.schottelius.org/software/cdist/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    args = parser['main'].parse_args(sys.argv[1:])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Loglevels are handled globally in here and debug wins over verbose
 | 
				
			||||||
 | 
					    if args.verbose:
 | 
				
			||||||
 | 
					        logging.root.setLevel(logging.INFO)
 | 
				
			||||||
 | 
					    if args.debug:
 | 
				
			||||||
 | 
					        logging.root.setLevel(logging.DEBUG)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    log.debug(args)
 | 
				
			||||||
 | 
					    args.func(args)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def config(args):
 | 
				
			||||||
 | 
					    configinstall(args, mode=cdist.config.Config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def install(args):
 | 
				
			||||||
 | 
					    configinstall(args, mode=cdist.install.Install)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def configinstall(args, mode):
 | 
				
			||||||
 | 
					    """Configure or install remote system"""
 | 
				
			||||||
 | 
					    import multiprocessing
 | 
				
			||||||
 | 
					    import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    initial_manifest_tempfile = None
 | 
				
			||||||
 | 
					    if args.manifest == '-':
 | 
				
			||||||
 | 
					        # read initial manifest from stdin
 | 
				
			||||||
 | 
					        import tempfile
 | 
				
			||||||
 | 
					        handle, initial_manifest_temp_path = tempfile.mkstemp(prefix='cdist.stdin.')
 | 
				
			||||||
 | 
					        with os.fdopen(handle, 'w') as fd:
 | 
				
			||||||
 | 
					            fd.write(sys.stdin.read())
 | 
				
			||||||
 | 
					        args.manifest = initial_manifest_temp_path
 | 
				
			||||||
 | 
					        import atexit
 | 
				
			||||||
 | 
					        atexit.register(lambda: os.remove(initial_manifest_temp_path))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        process = {}
 | 
				
			||||||
 | 
					        failed_hosts = []
 | 
				
			||||||
 | 
					        time_start = time.time()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for host in args.host:
 | 
				
			||||||
 | 
					            if args.parallel:
 | 
				
			||||||
 | 
					                log.debug("Creating child process for %s", host)
 | 
				
			||||||
 | 
					                process[host] = multiprocessing.Process(target=configinstall_onehost, args=(host, args, mode, True))
 | 
				
			||||||
 | 
					                process[host].start()
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                if not configinstall_onehost(host, args, mode, parallel=False):
 | 
				
			||||||
 | 
					                    failed_hosts.append(host)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if args.parallel:
 | 
				
			||||||
 | 
					            for p in process.keys():
 | 
				
			||||||
 | 
					                log.debug("Joining process %s", p)
 | 
				
			||||||
 | 
					                process[p].join()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if not process[p].exitcode == 0:
 | 
				
			||||||
 | 
					                    failed_hosts.append(p)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if len(failed_hosts) > 0:
 | 
				
			||||||
 | 
					            log.warn("Failed to deploy to the following hosts: " + 
 | 
				
			||||||
 | 
					                " ".join(failed_hosts))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        time_end = time.time()
 | 
				
			||||||
 | 
					        log.info("Total processing time for %s host(s): %s", len(args.host),
 | 
				
			||||||
 | 
					                    (time_end - time_start))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    except KeyboardInterrupt:
 | 
				
			||||||
 | 
					        if args.parallel:
 | 
				
			||||||
 | 
					            for p in process.keys():
 | 
				
			||||||
 | 
					                # NOT needed: KeyBoardInterrupet (aka SIGINT)
 | 
				
			||||||
 | 
					                # is forwarded to processes spawned by multiprocess!
 | 
				
			||||||
 | 
					                # pid = process[p].pid.__str__()
 | 
				
			||||||
 | 
					                #log.warn("Terminating deploy " + p + " (" + pid + ")")
 | 
				
			||||||
 | 
					                # process[p].terminate()
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def configinstall_onehost(host, args, mode, parallel):
 | 
				
			||||||
 | 
					    """Configure or install ONE remote system"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        import cdist.context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        context = cdist.context.Context(
 | 
				
			||||||
 | 
					            target_host=host,
 | 
				
			||||||
 | 
					            initial_manifest=args.manifest,
 | 
				
			||||||
 | 
					            base_path=args.cdist_home,
 | 
				
			||||||
 | 
					            exec_path=sys.argv[0],
 | 
				
			||||||
 | 
					            debug=args.debug)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        c = mode(context)
 | 
				
			||||||
 | 
					        c.deploy_and_cleanup()
 | 
				
			||||||
 | 
					        context.cleanup()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    except cdist.Error as e:
 | 
				
			||||||
 | 
					        log.error(e)
 | 
				
			||||||
 | 
					        return False
 | 
				
			||||||
 | 
					    except KeyboardInterrupt:
 | 
				
			||||||
 | 
					        # Do not care in sequential mode, catch in parallel mode
 | 
				
			||||||
 | 
					        if not parallel:
 | 
				
			||||||
 | 
					            raise
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            # Catch here, above does not need to know about our errors
 | 
				
			||||||
 | 
					            return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def emulator():
 | 
				
			||||||
 | 
					    """Prepare and run emulator"""
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        import cdist.emulator
 | 
				
			||||||
 | 
					        emulator = cdist.emulator.Emulator(sys.argv)
 | 
				
			||||||
 | 
					        emulator.run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    except cdist.Error as e:
 | 
				
			||||||
 | 
					        log.error(e)
 | 
				
			||||||
 | 
					        sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == "__main__":
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        import logging
 | 
				
			||||||
 | 
					        import os
 | 
				
			||||||
 | 
					        import re
 | 
				
			||||||
 | 
					        import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cdistpythonversion = '3.2'
 | 
				
			||||||
 | 
					        if sys.version < cdistpythonversion:
 | 
				
			||||||
 | 
					            print('Cdist requires Python >= ' + cdistpythonversion +
 | 
				
			||||||
 | 
					                ' on the source host.')
 | 
				
			||||||
 | 
					            sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Ensure our /lib/ is included into PYTHON_PATH
 | 
				
			||||||
 | 
					        sys.path.insert(0, os.path.abspath(
 | 
				
			||||||
 | 
					                os.path.join(os.path.dirname(os.path.realpath(__file__)), '../lib')))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # And now import our stuff
 | 
				
			||||||
 | 
					        import cdist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        log = logging.getLogger("cdist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        logging.basicConfig(format='%(levelname)s: %(message)s')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if re.match("__", os.path.basename(sys.argv[0])):
 | 
				
			||||||
 | 
					            emulator()
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            commandline()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    except KeyboardInterrupt:
 | 
				
			||||||
 | 
					        sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sys.exit(0)
 | 
				
			||||||
| 
						 | 
					@ -1,50 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This binary is executed on the remote side to execute code
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 2 ] || __cdist_usage "<object> <type>"
 | 
					 | 
				
			||||||
set -ue
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_self="$1"; shift
 | 
					 | 
				
			||||||
__cdist_code_type="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ ! -d "$(__cdist_object_dir "$__cdist_object_self")" ]; then
 | 
					 | 
				
			||||||
   __cdist_exit_err "Object undefined"
 | 
					 | 
				
			||||||
fi  
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_code="$(__cdist_object_code "$__cdist_object_self" "${__cdist_code_type}")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_echo info "Checking code-${__cdist_code_type}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ -e "$__cdist_code" ]; then
 | 
					 | 
				
			||||||
   if [ -f "$__cdist_code" ]; then
 | 
					 | 
				
			||||||
      if [ -x "$__cdist_code" ]; then
 | 
					 | 
				
			||||||
         __cdist_echo info "Executing code-${__cdist_code_type}"
 | 
					 | 
				
			||||||
         __cdist_exec_fail_on_error "$__cdist_code"
 | 
					 | 
				
			||||||
      else
 | 
					 | 
				
			||||||
         __cdist_exit_err "$__cdist_code exists, but is not executable."
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
   else
 | 
					 | 
				
			||||||
      __cdist_exit_err "$__cdist_code exists, but is not a file."
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
							
								
								
									
										438
									
								
								bin/cdist-config
									
										
									
									
									
								
							
							
						
						
									
										438
									
								
								bin/cdist-config
									
										
									
									
									
								
							| 
						 | 
					@ -1,438 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010-2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_version="1.7.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Fail if something bogus is going on
 | 
					 | 
				
			||||||
set -u
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# cconf standard vars prefixed with cdist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_pwd="$(pwd -P)"
 | 
					 | 
				
			||||||
__cdist_mydir="${0%/*}";
 | 
					 | 
				
			||||||
__cdist_abs_mydir="$(cd "$__cdist_mydir" && pwd -P)"
 | 
					 | 
				
			||||||
__cdist_myname=${0##*/};
 | 
					 | 
				
			||||||
__cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Names / Constants
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Most values can be overriden from outside, so you can
 | 
					 | 
				
			||||||
# customise paths as you like (for distributors, geeks and hackers)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
: ${__cdist_name_bin:=bin}
 | 
					 | 
				
			||||||
: ${__cdist_name_cache:=cache}
 | 
					 | 
				
			||||||
: ${__cdist_name_code:=code}
 | 
					 | 
				
			||||||
: ${__cdist_name_conf_dir:=conf}
 | 
					 | 
				
			||||||
: ${__cdist_name_dot_cdist:=.cdist}
 | 
					 | 
				
			||||||
: ${__cdist_name_explorer:=explorer}
 | 
					 | 
				
			||||||
: ${__cdist_name_gencode:=gencode}
 | 
					 | 
				
			||||||
: ${__cdist_name_gencode_local:=local}
 | 
					 | 
				
			||||||
: ${__cdist_name_gencode_remote:=remote}
 | 
					 | 
				
			||||||
: ${__cdist_name_global:=global}
 | 
					 | 
				
			||||||
: ${__cdist_name_host:=host}
 | 
					 | 
				
			||||||
: ${__cdist_name_init:=init}
 | 
					 | 
				
			||||||
: ${__cdist_name_manifest:=manifest}
 | 
					 | 
				
			||||||
: ${__cdist_name_object:=object}
 | 
					 | 
				
			||||||
: ${__cdist_name_object_finished:=done}
 | 
					 | 
				
			||||||
: ${__cdist_name_object_prepared:=prepared}
 | 
					 | 
				
			||||||
: ${__cdist_name_object_id:=object_id}
 | 
					 | 
				
			||||||
: ${__cdist_name_object_source:=source}
 | 
					 | 
				
			||||||
: ${__cdist_name_objects_created:=.objects_created}
 | 
					 | 
				
			||||||
: ${__cdist_name_out_dir:=out}
 | 
					 | 
				
			||||||
: ${__cdist_name_parameter:=parameter}
 | 
					 | 
				
			||||||
: ${__cdist_name_parameter_required:=required}
 | 
					 | 
				
			||||||
: ${__cdist_name_parameter_optional:=optional}
 | 
					 | 
				
			||||||
: ${__cdist_name_require:=require}
 | 
					 | 
				
			||||||
: ${__cdist_name_self:=self}
 | 
					 | 
				
			||||||
: ${__cdist_name_singleton:=singleton}
 | 
					 | 
				
			||||||
: ${__cdist_name_target_host:=target_host}
 | 
					 | 
				
			||||||
: ${__cdist_name_target_user:=target_user}
 | 
					 | 
				
			||||||
: ${__cdist_name_type:=type}
 | 
					 | 
				
			||||||
: ${__cdist_name_type_bin:=type_bin}
 | 
					 | 
				
			||||||
: ${__cdist_name_type_explorer:=type_explorer}
 | 
					 | 
				
			||||||
: ${__cdist_name_type_explorer_pushed:=.explorer_pushed}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Used for IDs: Allow everything not starting with - and .
 | 
					 | 
				
			||||||
: ${__cdist_sane_regexp:=[^-\.].*}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Default remote user
 | 
					 | 
				
			||||||
: ${__cdist_remote_user:=root}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Exported variable names (usable for non core
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
: ${__cdist_name_var_explorer:=__$__cdist_name_explorer}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_type_explorer:=__$__cdist_name_type_explorer}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_global:=__$__cdist_name_global}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_manifest:=__$__cdist_name_manifest}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_target_host:=__$__cdist_name_target_host}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_target_user:=__$__cdist_name_target_user}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_object:=__$__cdist_name_object}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_object_id:=__$__cdist_name_object_id}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_self:=__$__cdist_name_self}
 | 
					 | 
				
			||||||
: ${__cdist_name_var_type:=__$__cdist_name_type}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Tempfiles
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
: ${__cdist_tmp_base_dir=/tmp}
 | 
					 | 
				
			||||||
__cdist_tmp_dir=$(mktemp -d "$__cdist_tmp_base_dir/cdist.XXXXXXXXXXXX")
 | 
					 | 
				
			||||||
__cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Local Base
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
: ${__cdist_local_base_dir:=$__cdist_tmp_dir}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Cache may *NOT* be below __cdist_local_base_dir!
 | 
					 | 
				
			||||||
: ${__cdist_local_base_cache_dir:=$__cdist_abs_mydir/../$__cdist_name_cache}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
: ${__cdist_conf_dir:="$(cd "$__cdist_abs_mydir/../conf" && pwd -P)"}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
: ${__cdist_explorer_dir:=$__cdist_conf_dir/$__cdist_name_explorer}
 | 
					 | 
				
			||||||
: ${__cdist_manifest_dir:=$__cdist_conf_dir/$__cdist_name_manifest}
 | 
					 | 
				
			||||||
: ${__cdist_manifest_init:=$__cdist_manifest_dir/$__cdist_name_init}
 | 
					 | 
				
			||||||
: ${__cdist_type_dir:=$__cdist_conf_dir/$__cdist_name_type}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Local output
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
: ${__cdist_out_dir:=$__cdist_local_base_dir/$__cdist_name_out_dir}
 | 
					 | 
				
			||||||
: ${__cdist_out_explorer_dir:=$__cdist_out_dir/$__cdist_name_explorer}
 | 
					 | 
				
			||||||
: ${__cdist_out_object_dir:=$__cdist_out_dir/$__cdist_name_object}
 | 
					 | 
				
			||||||
: ${__cdist_out_type_dir:=$__cdist_out_dir/$__cdist_name_type}
 | 
					 | 
				
			||||||
: ${__cdist_out_type_bin_dir:=$__cdist_out_dir/$__cdist_name_type_bin}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
: ${__cdist_objects_created:=$__cdist_out_object_dir/$__cdist_name_objects_created}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Remote base
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
: ${__cdist_remote_base_dir:=/var/lib/cdist}
 | 
					 | 
				
			||||||
: ${__cdist_remote_bin_dir:=$__cdist_remote_base_dir/$__cdist_name_bin}
 | 
					 | 
				
			||||||
: ${__cdist_remote_conf_dir:=$__cdist_remote_base_dir/$__cdist_name_conf_dir}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
: ${__cdist_remote_explorer_dir:=$__cdist_remote_conf_dir/$__cdist_name_explorer}
 | 
					 | 
				
			||||||
: ${__cdist_remote_type_dir:=$__cdist_remote_conf_dir/$__cdist_name_type}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Remote output
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
: ${__cdist_remote_out_dir:=$__cdist_remote_base_dir/$__cdist_name_out_dir}
 | 
					 | 
				
			||||||
: ${__cdist_remote_out_explorer_dir:=$__cdist_remote_out_dir/$__cdist_name_explorer}
 | 
					 | 
				
			||||||
: ${__cdist_remote_out_object_dir:=$__cdist_remote_out_dir/$__cdist_name_object}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Internal functions
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
__cdist_echo()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   __cdist_echo_type="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   set +u
 | 
					 | 
				
			||||||
   if [ "$__cdist_object_self" ]; then
 | 
					 | 
				
			||||||
      __cdist_echo_prefix="${__cdist_object_self}:"
 | 
					 | 
				
			||||||
   else
 | 
					 | 
				
			||||||
      __cdist_echo_prefix="core: "
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
   set -u
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   case "$__cdist_echo_type" in
 | 
					 | 
				
			||||||
      debug)
 | 
					 | 
				
			||||||
         set +u
 | 
					 | 
				
			||||||
         if [ "$__cdist_debug" ]; then
 | 
					 | 
				
			||||||
            echo $__cdist_echo_prefix "Debug: $@"
 | 
					 | 
				
			||||||
         fi
 | 
					 | 
				
			||||||
         set -u
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
      info)
 | 
					 | 
				
			||||||
         echo $__cdist_echo_prefix "$@"
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
      warn)
 | 
					 | 
				
			||||||
         echo $__cdist_echo_prefix "Warning: $@"
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
      error)
 | 
					 | 
				
			||||||
         echo $__cdist_echo_prefix "Error: $@" >&2
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
      *)
 | 
					 | 
				
			||||||
         echo "CORE BUG, who created the broken commit in $0?" >&2
 | 
					 | 
				
			||||||
         exit 23
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
   esac
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_exec_fail_on_error()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   set +e
 | 
					 | 
				
			||||||
   sh -e "$@"
 | 
					 | 
				
			||||||
   if [ "$?" -ne 0 ]; then
 | 
					 | 
				
			||||||
      __cdist_echo error  "$1 exited non-zero"
 | 
					 | 
				
			||||||
      __cdist_echo warn "Faulty code:"
 | 
					 | 
				
			||||||
      cat "$1"
 | 
					 | 
				
			||||||
      __cdist_exit_err "Aborting due to non-zero exit code."
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_exit_err()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   __cdist_echo error "$@"
 | 
					 | 
				
			||||||
   exit 1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_usage()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   __cdist_exit_err "$__cdist_myname: $@"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_init_deploy()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   __cdist_echo info "Creating clean directory structure "
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Ensure there is no old stuff, neither local nor remote
 | 
					 | 
				
			||||||
   rm -rf "$__cdist_local_base_dir"
 | 
					 | 
				
			||||||
   ssh "${__cdist_remote_user}@$1" "rm -rf ${__cdist_remote_base_dir}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Init base
 | 
					 | 
				
			||||||
   mkdir -p "$__cdist_local_base_dir"
 | 
					 | 
				
			||||||
   ssh "${__cdist_remote_user}@$1" "mkdir -p ${__cdist_remote_base_dir}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Link configuration source directory - consistent with remote
 | 
					 | 
				
			||||||
   ln -sf "$__cdist_conf_dir" "$__cdist_local_base_dir/$__cdist_name_conf_dir"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Cache
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
__cdist_cache_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   cd "${__cdist_local_base_cache_dir}" && pwd -P
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_host_cache_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_cache_dir)/$1" 
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Object
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_code()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_object_dir "$1")/${__cdist_name_code}-$2"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_prepared()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_object_dir "$1")/${__cdist_name_object_prepared}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_finished()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_object_dir "$1")/${__cdist_name_object_finished}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_object_base_dir "$1")/${__cdist_name_dot_cdist}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_base_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${__cdist_out_object_dir}/$1"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_id_from_object()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${1#*/}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Find objects, remove ./ and /MARKER
 | 
					 | 
				
			||||||
__cdist_object_list()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   local basedir="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Use subshell to prevent changing cwd in program
 | 
					 | 
				
			||||||
   (
 | 
					 | 
				
			||||||
      cd "${basedir}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      find . -name "$__cdist_name_dot_cdist" |    \
 | 
					 | 
				
			||||||
         sed -e 's;^./;;' -e "s;/${__cdist_name_dot_cdist}\$;;"
 | 
					 | 
				
			||||||
   )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_parameter_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_object_dir "$1")/${__cdist_name_parameter}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_require()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_object_dir "$1")/${__cdist_name_require}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_source_name()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$1/${__cdist_name_object_source}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_source()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   cat "$(__cdist_object_source_name "$1")"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_source_add()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$__cdist_manifest" >> "$(__cdist_object_source_name "$1")"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_type_explorer_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_object_dir "$1")/${__cdist_name_explorer}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Remote
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_remote_object_base_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${__cdist_remote_out_object_dir}/$1"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_remote_object_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_remote_object_base_dir "$1")/${__cdist_name_dot_cdist}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_remote_object_parameter_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_parameter}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_remote_object_type_explorer_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_explorer}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_remote_type_explorer_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${__cdist_remote_type_dir}/$1/${__cdist_name_explorer}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Traps
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
__cdist_tmp_removal()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   rm -rf "${__cdist_tmp_dir}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Does not work in children, will be called again in every script!
 | 
					 | 
				
			||||||
# Use only in interactive "front end" scripts
 | 
					 | 
				
			||||||
__cdist_kill_on_interrupt()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   __cdist_tmp_removal
 | 
					 | 
				
			||||||
   kill 0
 | 
					 | 
				
			||||||
   exit 1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Remove tempfiles at normal exit
 | 
					 | 
				
			||||||
trap __cdist_tmp_removal EXIT
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Type
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
__cdist_type_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${__cdist_type_dir}/$1"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_explorer_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${__cdist_type_dir}/$1/${__cdist_name_explorer}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_from_object()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${1%%/*}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_has_explorer()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   # We only create output, if there's at least one explorer
 | 
					 | 
				
			||||||
   # and can thus be used as a boolean ;-)
 | 
					 | 
				
			||||||
   if [ -d "$(__cdist_type_explorer_dir "$1")" ]; then
 | 
					 | 
				
			||||||
      ls -1 "$(__cdist_type_explorer_dir "$1")"
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_explorer_pushed()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   [ -f "${__cdist_out_type_dir}/${__cdist_name_type_explorer_pushed}" ] \
 | 
					 | 
				
			||||||
      && grep -x -q "$1" "${__cdist_out_type_dir}/${__cdist_name_type_explorer_pushed}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_explorer_pushed_add()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   [ -d "$__cdist_out_type_dir" ] || mkdir "$__cdist_out_type_dir"
 | 
					 | 
				
			||||||
   echo "$1" >> "${__cdist_out_type_dir}/${__cdist_name_type_explorer_pushed}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_gencode()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${__cdist_type_dir}/$1/${__cdist_name_gencode}-$2"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_manifest()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${__cdist_type_dir}/$1/${__cdist_name_manifest}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_parameter_dir()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_type_dir "$1")/${__cdist_name_parameter}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_parameter_optional()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_type_parameter_dir "$1")/$__cdist_name_parameter_optional"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_parameter_required()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "$(__cdist_type_parameter_dir "$1")/$__cdist_name_parameter_required"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_singleton()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo "${__cdist_type_dir}/$1/${__cdist_name_singleton}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,59 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010-2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Deploy configuration to a host
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 1 ] || __cdist_usage "<target host>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Kill children on interrupt - only in interactive scripts
 | 
					 | 
				
			||||||
trap __cdist_kill_on_interrupt INT TERM
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Make target host available for non-core
 | 
					 | 
				
			||||||
export $__cdist_name_var_target_host="$__cdist_target_host"
 | 
					 | 
				
			||||||
export $__cdist_name_var_target_user="$__cdist_remote_user"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Export variables for core, which others do not reset
 | 
					 | 
				
			||||||
export __cdist_local_base_dir
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_echo info "cdist $__cdist_version: Configuring $__cdist_target_host "
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# See cdist-stages(7)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Prepare local and remote directories
 | 
					 | 
				
			||||||
__cdist_init_deploy           "$__cdist_target_host"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Transfer cdist executables
 | 
					 | 
				
			||||||
__cdist_echo info "Transferring cdist binaries to the target host "
 | 
					 | 
				
			||||||
cdist-dir push                "$__cdist_target_host" \
 | 
					 | 
				
			||||||
   "${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}"
 | 
					 | 
				
			||||||
cdist-explorer-run-global     "$__cdist_target_host"
 | 
					 | 
				
			||||||
cdist-manifest-run-init       "$__cdist_target_host"
 | 
					 | 
				
			||||||
cdist-object-all              "$__cdist_target_host" cdist-object-prepare
 | 
					 | 
				
			||||||
cdist-object-all              "$__cdist_target_host" cdist-object-run
 | 
					 | 
				
			||||||
cdist-cache                   "$__cdist_target_host"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_echo info "cdist $__cdist_version: Successfully finished run"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,51 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Push a directory to a target, both sides have the same name (i.e. explorers)
 | 
					 | 
				
			||||||
# or
 | 
					 | 
				
			||||||
# Pull a directory from a target, both sides have the same name (i.e. explorers)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 4 ] || __cdist_usage "<push|pull> <target host> <src dir> <dst dir>"
 | 
					 | 
				
			||||||
set -ue
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_action="$1"; shift
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
__cdist_src_dir="$1"; shift
 | 
					 | 
				
			||||||
__cdist_dst_dir="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This will be the destination directory, so no subdirectories
 | 
					 | 
				
			||||||
# of the same name are created, if the directory is already existing
 | 
					 | 
				
			||||||
__cdist_top_dir="${__cdist_dst_dir%/*}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ "$__cdist_action" = "push" ]; then
 | 
					 | 
				
			||||||
   ssh "${__cdist_remote_user}@${__cdist_target_host}" \
 | 
					 | 
				
			||||||
      "mkdir -p \"${__cdist_dst_dir}\""
 | 
					 | 
				
			||||||
   scp -qr "$__cdist_src_dir" \
 | 
					 | 
				
			||||||
      "${__cdist_remote_user}@${__cdist_target_host}:${__cdist_top_dir}"
 | 
					 | 
				
			||||||
elif [ "$__cdist_action" = "pull" ]; then
 | 
					 | 
				
			||||||
   mkdir -p "${__cdist_dst_dir}"
 | 
					 | 
				
			||||||
   scp -qr "${__cdist_remote_user}@${__cdist_target_host}:${__cdist_src_dir}" \
 | 
					 | 
				
			||||||
      "${__cdist_top_dir}"
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
   __cdist_exit_err "Unknown action $__cdist_action"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,43 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010-2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Copy & run the global explorers, i.e. not bound to types
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 1 ] || __cdist_usage "<target_host>"
 | 
					 | 
				
			||||||
set -ue
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_echo info "Running global explorers "
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# copy the explorers
 | 
					 | 
				
			||||||
cdist-dir push "$__cdist_target_host" \
 | 
					 | 
				
			||||||
   "${__cdist_explorer_dir}" "${__cdist_remote_explorer_dir}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# run the initial explorers remotely
 | 
					 | 
				
			||||||
cdist-run-remote "${__cdist_target_host}" cdist-remote-explorer-run  \
 | 
					 | 
				
			||||||
   "$__cdist_name_var_explorer" "$__cdist_remote_explorer_dir"       \
 | 
					 | 
				
			||||||
   "$__cdist_remote_out_explorer_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# retrieve the results
 | 
					 | 
				
			||||||
cdist-dir pull "$__cdist_target_host" \
 | 
					 | 
				
			||||||
   "${__cdist_remote_out_explorer_dir}" "${__cdist_out_explorer_dir}"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,56 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Let's build a cconfig tree from a configuration
 | 
					 | 
				
			||||||
# And save it into the cache tree
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 2 ] || __cdist_usage "<target host> <manifest>"
 | 
					 | 
				
			||||||
set -u
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
__cdist_manifest="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Export information for cdist-type-emulator or manifest
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Config dir should not get reset - FIXME: why did I do this?
 | 
					 | 
				
			||||||
export __cdist_conf_dir
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Used to record the source in the object
 | 
					 | 
				
			||||||
export __cdist_manifest
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Export information for manifests - __cdist_out_dir comes from cdist-config
 | 
					 | 
				
			||||||
export __global="$__cdist_out_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# The actual run
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Ensure binaries exist and are up-to-date
 | 
					 | 
				
			||||||
cdist-type-build-emulation "${__cdist_out_type_bin_dir}" \
 | 
					 | 
				
			||||||
   || __cdist_exit_err "Failed to build type emulation binaries"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# prepend our path, so all cdist tools come before other tools
 | 
					 | 
				
			||||||
export PATH="${__cdist_out_type_bin_dir}:$PATH"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_exec_fail_on_error "${__cdist_manifest}"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,75 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Deploy configuration to many hosts
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -ge 1 ] || __cdist_usage "[-p] <target host> [target host ]"
 | 
					 | 
				
			||||||
set -u
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Kill children on interrupt - only in interactive scripts
 | 
					 | 
				
			||||||
trap __cdist_kill_on_interrupt INT TERM
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
filter()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   awk -v host=$1 '{ print "[" host "] " $0 }'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
parallel=""
 | 
					 | 
				
			||||||
if [ "$1" = "-p" ]; then
 | 
					 | 
				
			||||||
   parallel=yes
 | 
					 | 
				
			||||||
   shift
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
i=0
 | 
					 | 
				
			||||||
while [ $# -gt 0 ]; do
 | 
					 | 
				
			||||||
   if [ "$parallel" ]; then
 | 
					 | 
				
			||||||
      cdist-deploy-to "$1" | filter "$1" &
 | 
					 | 
				
			||||||
      # Record pid and host for use later
 | 
					 | 
				
			||||||
      i=$((i+1))
 | 
					 | 
				
			||||||
      eval pid_$i=$!
 | 
					 | 
				
			||||||
      eval host_$i=\$1
 | 
					 | 
				
			||||||
   else
 | 
					 | 
				
			||||||
      cdist-deploy-to "$1" | filter "$1"
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
   shift
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
e=0
 | 
					 | 
				
			||||||
if [ "$parallel" ]; then
 | 
					 | 
				
			||||||
   __cdist_echo info "Waiting for cdist-deploy-to jobs to finish"
 | 
					 | 
				
			||||||
   while [ "$i" -gt 0 ]; do
 | 
					 | 
				
			||||||
      eval pid=\$pid_$i
 | 
					 | 
				
			||||||
      wait "$pid"
 | 
					 | 
				
			||||||
      if [ $? -ne 0 ]; then
 | 
					 | 
				
			||||||
         e=$((e+1))
 | 
					 | 
				
			||||||
         eval e_host_$e=\$host_$i
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
      i=$((i-1))
 | 
					 | 
				
			||||||
   done
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Display all failed hosts after all runs are done, so the sysadmin gets them
 | 
					 | 
				
			||||||
while [ "$e" -gt 0 ]; do
 | 
					 | 
				
			||||||
   eval host=\$host_$e
 | 
					 | 
				
			||||||
   __cdist_echo error "Configuration of host $host failed."
 | 
					 | 
				
			||||||
   e=$((e-1))
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,56 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					 | 
				
			||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This file is part of cdist.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
# GNU General Public License for more details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Run the given command for each created object.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 2 ] || __cdist_usage "<target host> <command>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
__cdist_command="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_objects="$__cdist_tmp_dir/objects"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Ensure object dir exists, so marker can be created
 | 
					 | 
				
			||||||
mkdir -p "${__cdist_out_object_dir}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Loop until we do not create new objects anymore
 | 
					 | 
				
			||||||
# which is equal to all objects have been run
 | 
					 | 
				
			||||||
touch "$__cdist_objects_created"
 | 
					 | 
				
			||||||
while [ -f "$__cdist_objects_created" ]; do
 | 
					 | 
				
			||||||
   # Assume we're done after this run
 | 
					 | 
				
			||||||
   rm "$__cdist_objects_created"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Get listing of objects
 | 
					 | 
				
			||||||
   __cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP
 | 
					 | 
				
			||||||
   while read __cdist_object; do
 | 
					 | 
				
			||||||
      set -- "$@" "$__cdist_object"
 | 
					 | 
				
			||||||
   done < "$__cdist_objects"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   while [ $# -gt 0 ]; do
 | 
					 | 
				
			||||||
      __cdist_object="$1"; shift
 | 
					 | 
				
			||||||
      $__cdist_command "$__cdist_target_host" "$__cdist_object"
 | 
					 | 
				
			||||||
   done
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,67 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					 | 
				
			||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This file is part of cdist.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
# GNU General Public License for more details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Run the explorers for the given object on the target host.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 2 ] || __cdist_usage "<target host> <object>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
__cdist_object_self="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")"
 | 
					 | 
				
			||||||
__cdist_type="$(__cdist_type_from_object "$__cdist_object_self")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Check if type of object has >= 1 explorer
 | 
					 | 
				
			||||||
__cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")"
 | 
					 | 
				
			||||||
# Run the type explorers for the current object if any
 | 
					 | 
				
			||||||
if [ "$__cdist_has_explorer" ]; then
 | 
					 | 
				
			||||||
   if ! __cdist_type_explorer_pushed "$__cdist_type"; then
 | 
					 | 
				
			||||||
      src_dir="$(__cdist_type_explorer_dir "$__cdist_type")"
 | 
					 | 
				
			||||||
      dst_dir="$(__cdist_remote_type_explorer_dir "$__cdist_type")"
 | 
					 | 
				
			||||||
      __cdist_echo info "Transfering explorers for $__cdist_type "
 | 
					 | 
				
			||||||
      cdist-dir push "$__cdist_target_host" "$src_dir" "$dst_dir"
 | 
					 | 
				
			||||||
      __cdist_type_explorer_pushed_add "$__cdist_type"
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   __cdist_echo info "Running explorers"
 | 
					 | 
				
			||||||
   # Copy object parameters
 | 
					 | 
				
			||||||
   cdist-dir push "$__cdist_target_host"                          \
 | 
					 | 
				
			||||||
      "$(__cdist_object_parameter_dir "$__cdist_object_self")"         \
 | 
					 | 
				
			||||||
      "$(__cdist_remote_object_parameter_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Execute explorers
 | 
					 | 
				
			||||||
   cdist-run-remote "$__cdist_target_host"                     \
 | 
					 | 
				
			||||||
      "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object_self")\"" \
 | 
					 | 
				
			||||||
      "$__cdist_name_var_object_id=\"$__cdist_object_id\""     \
 | 
					 | 
				
			||||||
      "$__cdist_name_var_self=\"$__cdist_object_self\""        \
 | 
					 | 
				
			||||||
      cdist-remote-explorer-run                                \
 | 
					 | 
				
			||||||
      "$__cdist_name_var_type_explorer"                        \
 | 
					 | 
				
			||||||
      "$(__cdist_remote_type_explorer_dir "$__cdist_type")"    \
 | 
					 | 
				
			||||||
      "$(__cdist_remote_object_type_explorer_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Copy back results
 | 
					 | 
				
			||||||
   cdist-dir pull "$__cdist_target_host"                             \
 | 
					 | 
				
			||||||
      "$(__cdist_remote_object_type_explorer_dir "$__cdist_object_self")" \
 | 
					 | 
				
			||||||
      "$(__cdist_object_type_explorer_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,62 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Generate code from one object (object must be relative path!)
 | 
					 | 
				
			||||||
# WARNING: OUTPUT ON STDOUT, ERRORS NEED TO BE ON STDERR!
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 3 ] || __cdist_usage "<target host>" "<object>" "<type>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
__cdist_object_self="$1"; shift
 | 
					 | 
				
			||||||
__cdist_gencode_type="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type="$(__cdist_type_from_object "$__cdist_object_self")"
 | 
					 | 
				
			||||||
__cdist_type_gencode="$(__cdist_type_gencode "$__cdist_type" "$__cdist_gencode_type")"
 | 
					 | 
				
			||||||
__cdist_code_output="$(__cdist_object_code "$__cdist_object_self" "$__cdist_gencode_type")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# export variables for the gencode script
 | 
					 | 
				
			||||||
export __object_id="$(__cdist_object_id_from_object "$__cdist_object_self")"
 | 
					 | 
				
			||||||
export __object="$(__cdist_object_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
export __global="$__cdist_out_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ -x "$__cdist_type_gencode" ]; then
 | 
					 | 
				
			||||||
   __cdist_exec_fail_on_error "$__cdist_type_gencode" > "$__cdist_tmp_file"
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
   if [ -e "$__cdist_type_gencode" ]; then
 | 
					 | 
				
			||||||
      __cdist_exit_err "$__cdist_type_gencode exists, but is not executable"
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Ensure it's empty, if there is no gencode
 | 
					 | 
				
			||||||
   : > "$__cdist_tmp_file"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Only create code, if gencode created output
 | 
					 | 
				
			||||||
if [ "$(wc -l < "$__cdist_tmp_file")" -gt 0 ]; then
 | 
					 | 
				
			||||||
   cat - "$__cdist_tmp_file" << eof > "$__cdist_code_output"
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# The following code was generated by $__cdist_type_gencode
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
   chmod u+x "${__cdist_code_output}"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,58 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					 | 
				
			||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This file is part of cdist.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
# GNU General Public License for more details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Run the manifest for the given object.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 2 ] || __cdist_usage "<target host> <object>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
__cdist_object_self="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# FIXME: rename to __cdist_object_dir (everywhere!)
 | 
					 | 
				
			||||||
__cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_echo info "Checking manifest "
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type="$(__cdist_type_from_object "$__cdist_object_self")"
 | 
					 | 
				
			||||||
__cdist_manifest="$(__cdist_type_manifest "$__cdist_type")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ -f "$__cdist_manifest" ]; then
 | 
					 | 
				
			||||||
   if [ -x "$__cdist_manifest" ]; then
 | 
					 | 
				
			||||||
      # Make __cdist_manifest available for cdist-type-emulator
 | 
					 | 
				
			||||||
      export __cdist_manifest
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      __cdist_echo info "Executing manifest "
 | 
					 | 
				
			||||||
      export $__cdist_name_var_object="$__cdist_cur_object_dir"
 | 
					 | 
				
			||||||
      export $__cdist_name_var_object_id="$__cdist_object_id"
 | 
					 | 
				
			||||||
      export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # Tell cdist-object-run-all that there may be new objects
 | 
					 | 
				
			||||||
      touch "$__cdist_objects_created"
 | 
					 | 
				
			||||||
   else
 | 
					 | 
				
			||||||
      __cdist_exit_err "${__cdist_manifest} needs to be executable."
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,47 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					 | 
				
			||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This file is part of cdist.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
# GNU General Public License for more details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# For the given object:
 | 
					 | 
				
			||||||
#  - run type explorers
 | 
					 | 
				
			||||||
#  - run type manifest
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 2 ] || __cdist_usage "<target host> <object>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
__cdist_object_self="$1"; shift
 | 
					 | 
				
			||||||
__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Export to non-core for use in manifest and gencode scripts
 | 
					 | 
				
			||||||
export $__cdist_name_var_self=$__cdist_object_self
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_prepared="$(__cdist_object_prepared "$__cdist_object_self")"
 | 
					 | 
				
			||||||
if [ ! -f "$__cdist_object_prepared" ]; then
 | 
					 | 
				
			||||||
   __cdist_echo info "Preparing object"
 | 
					 | 
				
			||||||
   cdist-object-explorer-run  "$__cdist_target_host" "$__cdist_object_self"
 | 
					 | 
				
			||||||
   cdist-object-manifest-run  "$__cdist_target_host" "$__cdist_object_self"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Mark this object as prepared
 | 
					 | 
				
			||||||
   touch "$__cdist_object_prepared"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,65 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					 | 
				
			||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This file is part of cdist.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
# GNU General Public License for more details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# For the given object:
 | 
					 | 
				
			||||||
#  - run type explorers
 | 
					 | 
				
			||||||
#  - run type manifest
 | 
					 | 
				
			||||||
#  - generate code
 | 
					 | 
				
			||||||
#  - copy object to target
 | 
					 | 
				
			||||||
#  - execute code on target
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 2 ] || __cdist_usage "<target host> <object>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					 | 
				
			||||||
__cdist_object_self="$1"; shift
 | 
					 | 
				
			||||||
__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Export to non-core for use in manifest and gencode scripts
 | 
					 | 
				
			||||||
export $__cdist_name_var_self=$__cdist_object_self
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_finished="$(__cdist_object_finished "$__cdist_object_self")"
 | 
					 | 
				
			||||||
if [ ! -f "$__cdist_object_finished" ]; then
 | 
					 | 
				
			||||||
   # Resolve dependencies, if any
 | 
					 | 
				
			||||||
   __cdist_object_require="$(__cdist_object_require "$__cdist_object_self")"
 | 
					 | 
				
			||||||
   if [ -f "$__cdist_object_require" ]; then
 | 
					 | 
				
			||||||
      # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP
 | 
					 | 
				
			||||||
      while read __cdist_requirement; do
 | 
					 | 
				
			||||||
         set -- "$@" "$__cdist_requirement"
 | 
					 | 
				
			||||||
      done < "$__cdist_object_require"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      while [ $# -gt 0 ]; do
 | 
					 | 
				
			||||||
         __cdist_requirement="$1"; shift
 | 
					 | 
				
			||||||
         __cdist_echo info "Resolving requirement $__cdist_requirement"
 | 
					 | 
				
			||||||
         cdist-object-run "$__cdist_target_host" "$__cdist_requirement"
 | 
					 | 
				
			||||||
      done
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   cdist-object-gencode-run   "$__cdist_target_host" "$__cdist_object_self"
 | 
					 | 
				
			||||||
   cdist-object-push          "$__cdist_target_host" "$__cdist_object_self"
 | 
					 | 
				
			||||||
   cdist-object-code-run      "$__cdist_target_host" "$__cdist_object_self"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Mark this object as done
 | 
					 | 
				
			||||||
   touch "$__cdist_object_finished"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,310 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010-2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Give the user an introduction into cdist
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
banner="cdist-quickstart>"
 | 
					 | 
				
			||||||
continue="Press enter to continue or ctrl-c to abort."
 | 
					 | 
				
			||||||
create_continue="Press enter to create the described files/directories"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__prompt()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   echo -n "$banner" "$@"
 | 
					 | 
				
			||||||
   read answer
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Intro of quickstart
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
$banner cdist version $__cdist_version
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Welcome to the interactive guide to cdist!
 | 
					 | 
				
			||||||
This is the interactive tutorial and beginners help for cdist and here's
 | 
					 | 
				
			||||||
our schedule:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   - Stages:   How cdist operates
 | 
					 | 
				
			||||||
   - Explorer: Explore facts of the target host
 | 
					 | 
				
			||||||
   - Manifest: Map configurations to hosts
 | 
					 | 
				
			||||||
   - Types:    Bundled functionality
 | 
					 | 
				
			||||||
   - Deploy a configuration to the local host!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
__prompt "$continue"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Stages
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To deploy configurations to a host, you call
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   cdist-deploy-to <hostname>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
which makes calls to other scripts, which realise the so called "stages".
 | 
					 | 
				
			||||||
Usually you'll not notice this, but in case you want to debug or hack cdist,
 | 
					 | 
				
			||||||
you can run each stage on its own. Besides that, you just need to remember
 | 
					 | 
				
			||||||
that the command cdist-deploy-to is the main cdist command.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See also:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   Source of cdist-deploy-to(1), cdist-stages(7)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
__prompt "$continue"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Explorer
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The first thing cdist always does is running different explorers on the
 | 
					 | 
				
			||||||
target host. The explorers can be found in the directory
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   ${__cdist_explorer_dir}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
An explorer is executed on the target host and its output is saved to a file.
 | 
					 | 
				
			||||||
You can use these files later to decide what or how to configure the host.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
For a demonstration, we'll call the OS explorer locally now, but remember:
 | 
					 | 
				
			||||||
This is only for demonstration, normally it is run on the target host.
 | 
					 | 
				
			||||||
The os explorer will which either displays the detected operating system or
 | 
					 | 
				
			||||||
nothing if it does not know your OS.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See also:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   cdist-explorer(7)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
explorer="${__cdist_explorer_dir}/os"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__prompt "Press enter to execute $explorer"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -x
 | 
					 | 
				
			||||||
"$explorer"
 | 
					 | 
				
			||||||
set +x
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Manifest
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The initial manifest is the entry point for cdist to find out, what you would
 | 
					 | 
				
			||||||
like to have configured. It is located at
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   ${__cdist_manifest_init}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
And can be as simple as
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
__file /etc/cdist-configured --type file
 | 
					 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See also:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   cdist-manifest(7)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
__prompt "$continue"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Let's take a deeper look at the initial manifest to understand what it means:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   __file /etc/cdist-configured --type file
 | 
					 | 
				
			||||||
      |     |                    |        \\
 | 
					 | 
				
			||||||
      |     |        The parameter type    \\ With the value file
 | 
					 | 
				
			||||||
      |     |
 | 
					 | 
				
			||||||
      |     |
 | 
					 | 
				
			||||||
      |     | This is the object id
 | 
					 | 
				
			||||||
      |
 | 
					 | 
				
			||||||
   __file is a so called "type"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This essentially looks like a standard command executed in the shell.
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
__prompt "$continue"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
And that's exactly true. Manifests are shell snippets that can use
 | 
					 | 
				
			||||||
types as commands with arguments. cdist prepends a special path
 | 
					 | 
				
			||||||
that contain links to the cdist-type-emulator, to \$PATH, so you
 | 
					 | 
				
			||||||
can use your types as a command.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This is also the reason why types should always be prefixed with
 | 
					 | 
				
			||||||
"__", to prevent collisions with existing binaries.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The object id is unique per type and used to prevent you from creating
 | 
					 | 
				
			||||||
the same object twice.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Parameters are type specific and are always specified as --parameter <value>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See also:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   cdist-type-build-emulation(1), cdist-type-emulator(1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
__prompt "$continue"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Types
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Types are bundled functionality and are the main component of cdist.
 | 
					 | 
				
			||||||
If you want to have a feature x, you write the type __x. Types are stored in
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   ${__cdist_type_dir}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
And cdist ships with some types already!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See also:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   cdist-type(7)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
__prompt "Press enter to see available types"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -x
 | 
					 | 
				
			||||||
ls ${__cdist_type_dir}
 | 
					 | 
				
			||||||
set +x
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Types consist of the following parts:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   - ${__cdist_name_parameter} (${__cdist_name_parameter_required}/${__cdist_name_parameter_optional}
 | 
					 | 
				
			||||||
   - ${__cdist_name_manifest}
 | 
					 | 
				
			||||||
   - ${__cdist_name_explorer}
 | 
					 | 
				
			||||||
   - ${__cdist_name_gencode}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
__prompt "$continue"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Every type must have a directory named ${__cdist_name_parameter}, which
 | 
					 | 
				
			||||||
contains required or optional parameters (in newline seperated files).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If an object of a specific type was created in the initial manifest,
 | 
					 | 
				
			||||||
the manifest of the type is run and may create other objects.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
A type may have ${__cdist_name_explorer}, which are very similar to the
 | 
					 | 
				
			||||||
${__cdist_name_explorer} seen above, but with a different purpose:
 | 
					 | 
				
			||||||
They are specific to the type and are not relevant for other types.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
You may use them for instance to find out details on the target host,
 | 
					 | 
				
			||||||
so you can decide what to do on the target host eventually.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
After the ${__cdist_name_manifest} and the ${__cdist_name_explorer} of
 | 
					 | 
				
			||||||
a type have been run, ${__cdist_name_gencode} is executed, which creates
 | 
					 | 
				
			||||||
code to be executed on the target on stdout.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
__prompt "$continue"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Deployment
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Now you've got some basic knowledge about cdist, let's configure your a host!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Ensure that you have a ssh server running on the host and that you can login as root.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__prompt "Enter hostname or press enter for localhost: "
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ "$answer" ]; then
 | 
					 | 
				
			||||||
   host="$answer"
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
   host="localhost"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
manifestinit="conf/manifest/init"
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
I'll know setup $manifestinit, containing the following code:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
# Every machine becomes a marker, so sysadmins know that automatic
 | 
					 | 
				
			||||||
# configurations are happening
 | 
					 | 
				
			||||||
__file /etc/cdist-configured
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
case "\$__target_host" in
 | 
					 | 
				
			||||||
   $host)
 | 
					 | 
				
			||||||
      __link /tmp/cdist-testfile --source /etc/cdist-configured  --type symbolic
 | 
					 | 
				
			||||||
      __addifnosuchline /tmp/cdist-welcome --line "Welcome to cdist"
 | 
					 | 
				
			||||||
   ;;
 | 
					 | 
				
			||||||
esac
 | 
					 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
WARNING: This will overwrite ${manifestinit}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat > "$__cdist_abs_mydir/../$manifestinit" << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Every machine becomes a marker, so sysadmins know that automatic
 | 
					 | 
				
			||||||
# configurations are happening
 | 
					 | 
				
			||||||
__file /etc/cdist-configured
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
case "\$__target_host" in
 | 
					 | 
				
			||||||
   $host)
 | 
					 | 
				
			||||||
      __link /tmp/cdist-testfile --source /etc/cdist-configured  --type symbolic
 | 
					 | 
				
			||||||
      __addifnosuchline /tmp/cdist-welcome --line "Welcome to cdist"
 | 
					 | 
				
			||||||
   ;;
 | 
					 | 
				
			||||||
esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
chmod u+x "$__cdist_abs_mydir/../$manifestinit"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cmd="cdist-deploy-to $host"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__prompt "Press enter to run \"$cmd\""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# No quotes, we need field splitting
 | 
					 | 
				
			||||||
$cmd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# End
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat << eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
That's it, this is the end of the cdist-quickstart.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
I hope you've got some impression on how cdist works, here are again some
 | 
					 | 
				
			||||||
pointers on where to continue to read:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cdist(7), cdist-deploy-to(1), cdist-type(7), cdist-stages(7)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,68 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This binary is executed on the remote side to execute explorers
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# It supports different variables names to be used, so __explorers
 | 
					 | 
				
			||||||
# and __type_explorers can be submitted :-)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 3 ] || __cdist_usage "<variable name> <explorer dir> <out dir>"
 | 
					 | 
				
			||||||
set -ue
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Variable that defines the home of the explorers
 | 
					 | 
				
			||||||
__cdist_variable_name="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Find explorers here
 | 
					 | 
				
			||||||
__cdist_explorer_dir="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Write output here
 | 
					 | 
				
			||||||
__cdist_my_out_dir="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Setup environment
 | 
					 | 
				
			||||||
export $__cdist_variable_name="$__cdist_explorer_dir"
 | 
					 | 
				
			||||||
export __global="$__cdist_remote_out_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mkdir -p "$__cdist_my_out_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Ensure there is at least one explorer
 | 
					 | 
				
			||||||
num="$(ls -1 "$__cdist_explorer_dir" | wc -l)"
 | 
					 | 
				
			||||||
if [ "$num" -lt 1 ]; then
 | 
					 | 
				
			||||||
   __cdist_exit_err "${__cdist_explorer_dir}: Contains no explorers"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Execute all explorers
 | 
					 | 
				
			||||||
for explorer in "$__cdist_explorer_dir/"*; do
 | 
					 | 
				
			||||||
   explorer_name="${explorer##*/}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   if [ -f "$explorer" ]; then
 | 
					 | 
				
			||||||
      if [ ! -x "$explorer" ]; then
 | 
					 | 
				
			||||||
         __cdist_exit_err "Explorer \"$explorer\" exists, but is not executable."
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # Execute explorers and save results in remote destination directory
 | 
					 | 
				
			||||||
      "$explorer" > "${__cdist_my_out_dir}/$explorer_name"
 | 
					 | 
				
			||||||
   else
 | 
					 | 
				
			||||||
      if [ -e "$explorer" ]; then
 | 
					 | 
				
			||||||
         __cdist_exit_err "Explorer \"$explorer\" exists, but is not a file."
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,43 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010-2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Build pseudo binaries for type emulation
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 1 ] || __cdist_usage "<out dir>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_output_dir="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type_emulator="$__cdist_abs_mydir/cdist-type-emulator"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ ! -d "${__cdist_type_dir}" ]; then
 | 
					 | 
				
			||||||
   __cdist_exit_err "$__cdist_type_dir must exist and contain available types"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Get Types
 | 
					 | 
				
			||||||
cd "${__cdist_type_dir}"
 | 
					 | 
				
			||||||
ls -1 > "${__cdist_tmp_file}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Create binaries
 | 
					 | 
				
			||||||
mkdir -p "${__cdist_output_dir}"
 | 
					 | 
				
			||||||
while read type; do
 | 
					 | 
				
			||||||
   ln -sf "${__cdist_type_emulator}" "${__cdist_output_dir}/${type}"
 | 
					 | 
				
			||||||
done < "${__cdist_tmp_file}"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,182 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2010-2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Wrapper script that generates cconfig from arguments
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This script will be called everytime the manifest decides to create
 | 
					 | 
				
			||||||
# a new type
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
set -u
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Prepare object and type
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type="$__cdist_myname"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Find out whether type is a singleton or regular type
 | 
					 | 
				
			||||||
if [ -f "$(__cdist_type_singleton "$__cdist_type")" ]; then
 | 
					 | 
				
			||||||
   __cdist_object_id="$__cdist_name_singleton"
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
   [ $# -ge 1 ] || __cdist_usage "<id> <options>"
 | 
					 | 
				
			||||||
   __cdist_object_id="$1"; shift
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Verify object id
 | 
					 | 
				
			||||||
__cdist_object_id_sane=$(echo "$__cdist_object_id" | grep "^${__cdist_sane_regexp}\$")
 | 
					 | 
				
			||||||
if [ -z "$__cdist_object_id_sane" ]; then
 | 
					 | 
				
			||||||
   __cdist_usage "Insane object id, ${__cdist_object_id}."
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Prevent double slash if id begins with /
 | 
					 | 
				
			||||||
if [ "$(echo $__cdist_object_id | grep "^/")" ]; then
 | 
					 | 
				
			||||||
   __cdist_object_self="${__cdist_type}${__cdist_object_id}"
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
   __cdist_object_self="${__cdist_type}/${__cdist_object_id}"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Internal quirks
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Append id for error messages
 | 
					 | 
				
			||||||
__cdist_myname="$__cdist_myname ($__cdist_object_id)"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Create object in tmpdir first
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Save original destination
 | 
					 | 
				
			||||||
__cdist_out_object_dir_orig="$__cdist_out_object_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Store to tmp now
 | 
					 | 
				
			||||||
__cdist_out_object_dir="$__cdist_tmp_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_new_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Initialise object
 | 
					 | 
				
			||||||
mkdir -p "${__cdist_new_object_dir}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Record parameter
 | 
					 | 
				
			||||||
__cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
mkdir -p "${__cdist_parameter_dir}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
while [ $# -gt 0 ]; do
 | 
					 | 
				
			||||||
   opt="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   echo "$opt" | grep -q "^--${__cdist_sane_regexp}\$" || \
 | 
					 | 
				
			||||||
      __cdist_usage "Provide sane options"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   opt_file="${opt#--}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   [ $# -ge 1 ] || __cdist_usage "Missing value for $opt"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   value="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   echo "${value}" > "${__cdist_parameter_dir}/${opt_file}"
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Record requirements
 | 
					 | 
				
			||||||
# it's fine, if it's not set
 | 
					 | 
				
			||||||
set +u
 | 
					 | 
				
			||||||
for requirement in $require; do
 | 
					 | 
				
			||||||
   echo $requirement >> "$(__cdist_object_require "$__cdist_object_self")"
 | 
					 | 
				
			||||||
   __cdist_echo info "Recording requirement $requirement"
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
set -u
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Check newly created object
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Ensure required parameters are given
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
if [ -f "$(__cdist_type_parameter_required "$__cdist_type")" ]; then
 | 
					 | 
				
			||||||
   while read required; do
 | 
					 | 
				
			||||||
      if [ ! -f "${__cdist_parameter_dir}/${required}" ]; then
 | 
					 | 
				
			||||||
         __cdist_usage "Missing required parameter $required"
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
   done < "$(__cdist_type_parameter_required "$__cdist_type")"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Ensure that only optional or required parameters are given
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ -f "$(__cdist_type_parameter_optional "$__cdist_type")" ]; then
 | 
					 | 
				
			||||||
   cat "$(__cdist_type_parameter_optional "$__cdist_type")" > \
 | 
					 | 
				
			||||||
      "$__cdist_tmp_file"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
if [ -f "$(__cdist_type_parameter_required "$__cdist_type")" ]; then
 | 
					 | 
				
			||||||
   cat "$(__cdist_type_parameter_required "$__cdist_type")" >> \
 | 
					 | 
				
			||||||
      "$__cdist_tmp_file"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
cd "$__cdist_parameter_dir"
 | 
					 | 
				
			||||||
for parameter in $(ls -1); do
 | 
					 | 
				
			||||||
   is_valid=$(grep "^$parameter\$" "$__cdist_tmp_file")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   [ "$is_valid" ] || __cdist_usage "Unknown parameter $parameter"
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
################################################################################
 | 
					 | 
				
			||||||
# Merge object
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Restore original destination
 | 
					 | 
				
			||||||
__cdist_out_object_dir="$__cdist_out_object_dir_orig"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# If the object already exists and is exactly the same, merge it. Otherwise fail.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
if [ -e "${__cdist_object_dir}" ]; then
 | 
					 | 
				
			||||||
   # Allow diff to fail
 | 
					 | 
				
			||||||
   set +e
 | 
					 | 
				
			||||||
   diff -ru "${__cdist_new_object_dir}/${__cdist_name_parameter}" \
 | 
					 | 
				
			||||||
      "${__cdist_object_dir}/${__cdist_name_parameter}"           \
 | 
					 | 
				
			||||||
      > "$__cdist_tmp_file"; ret=$?
 | 
					 | 
				
			||||||
   set -e
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
   if [ "$ret" != 0 ]; then
 | 
					 | 
				
			||||||
      # Go to standard error
 | 
					 | 
				
			||||||
      exec >&2
 | 
					 | 
				
			||||||
      echo "${__cdist_object_self} already exists differently."
 | 
					 | 
				
			||||||
      echo "Recorded source(s):"
 | 
					 | 
				
			||||||
      __cdist_object_source "${__cdist_object_dir}"
 | 
					 | 
				
			||||||
      echo "Differences:"
 | 
					 | 
				
			||||||
      cat "$__cdist_tmp_file"
 | 
					 | 
				
			||||||
      __cdist_exit_err "Aborting due to object conflict."
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
   #
 | 
					 | 
				
			||||||
   # Move object into tree:
 | 
					 | 
				
			||||||
   # Create full path minus .cdist and move .cdist
 | 
					 | 
				
			||||||
   #
 | 
					 | 
				
			||||||
   __cdist_new_object_base_dir="$(__cdist_object_base_dir "$__cdist_object_self")"
 | 
					 | 
				
			||||||
   mkdir -p "$__cdist_new_object_base_dir"
 | 
					 | 
				
			||||||
   mv "$__cdist_new_object_dir"  "$__cdist_new_object_base_dir"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add "I was here message"
 | 
					 | 
				
			||||||
__cdist_object_source_add "${__cdist_object_dir}"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,83 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 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/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Create a new type from scratch
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. cdist-config
 | 
					 | 
				
			||||||
[ $# -eq 1 ] || __cdist_usage "<type>"
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__cdist_type="$1"; shift
 | 
					 | 
				
			||||||
__cdist_my_type_dir="$(__cdist_type_dir "$__cdist_type")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ -d "$__cdist_my_type_dir" ]; then
 | 
					 | 
				
			||||||
   __cdist_usage "Type $__cdist_type already exists"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo "Creating type $__cdist_type in $__cdist_my_type_dir ..."
 | 
					 | 
				
			||||||
# Base
 | 
					 | 
				
			||||||
mkdir -p "$__cdist_my_type_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Parameter
 | 
					 | 
				
			||||||
mkdir -p "$(__cdist_type_parameter_dir "$__cdist_type")"
 | 
					 | 
				
			||||||
touch "$(__cdist_type_parameter_dir "$__cdist_type")/${__cdist_name_parameter_required}"
 | 
					 | 
				
			||||||
touch "$(__cdist_type_parameter_dir "$__cdist_type")/${__cdist_name_parameter_optional}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Manifest
 | 
					 | 
				
			||||||
cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$__cdist_my_type_dir/${__cdist_name_manifest}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This is the manifest, which can be used to create other objects like this:
 | 
					 | 
				
			||||||
# __file /path/to/destination --source /from/where/
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# To tell cdist to make use of it, you need to make it executable (chmod +x)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Gencode remote
 | 
					 | 
				
			||||||
cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$(__cdist_type_dir "$__cdist_type")/${__cdist_name_gencode}-${__cdist_name_gencode_remote}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This file should generate code on stdout, which will be collected by cdist
 | 
					 | 
				
			||||||
# and run on the target.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# To tell cdist to make use of it, you need to make it executable (chmod +x)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$(__cdist_type_dir "$__cdist_type")/${__cdist_name_gencode}-${__cdist_name_gencode_local}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This file should generate code on stdout, which will be collected by cdist
 | 
					 | 
				
			||||||
# and run on the same machine cdist-deploy-to is executed.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# To tell cdist to make use of it, you need to make it executable (chmod +x)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eof
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Explorer
 | 
					 | 
				
			||||||
mkdir -p "$__cdist_my_type_dir/${__cdist_name_explorer}"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -26,13 +26,16 @@
 | 
				
			||||||
# exit on any error
 | 
					# exit on any error
 | 
				
			||||||
#set -e
 | 
					#set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version=$(git describe)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Manpage and HTML
 | 
					# Manpage and HTML
 | 
				
			||||||
A2XM="a2x -f manpage --no-xmllint"
 | 
					A2XM="a2x -f manpage --no-xmllint -a encoding=UTF-8"
 | 
				
			||||||
A2XH="a2x -f xhtml --no-xmllint"
 | 
					A2XH="a2x -f xhtml --no-xmllint -a encoding=UTF-8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Developer webbase
 | 
					# Developer webbase
 | 
				
			||||||
WEBDIR=$HOME/niconetz
 | 
					WEBDIR=$HOME/niconetz
 | 
				
			||||||
WEBBASE=software/cdist
 | 
					WEBBASE=$WEBDIR/software/cdist
 | 
				
			||||||
 | 
					WEBMAN=$WEBBASE/man/$version
 | 
				
			||||||
WEBPAGE=${WEBBASE}.mdwn
 | 
					WEBPAGE=${WEBBASE}.mdwn
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Documentation
 | 
					# Documentation
 | 
				
			||||||
| 
						 | 
					@ -88,29 +91,34 @@ case "$1" in
 | 
				
			||||||
   speeches)
 | 
					   speeches)
 | 
				
			||||||
      cd "$SPEECHESDIR"
 | 
					      cd "$SPEECHESDIR"
 | 
				
			||||||
      for speech in *tex; do
 | 
					      for speech in *tex; do
 | 
				
			||||||
         pdflatex $speech
 | 
					         pdflatex "$speech"
 | 
				
			||||||
         pdflatex $speech
 | 
					         pdflatex "$speech"
 | 
				
			||||||
         pdflatex $speech
 | 
					         pdflatex "$speech"
 | 
				
			||||||
      done
 | 
					      done
 | 
				
			||||||
   ;;
 | 
					   ;;
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
   web)
 | 
					   web)
 | 
				
			||||||
      cp README ${WEBDIR}/${WEBPAGE}
 | 
					      cp README ${WEBPAGE}
 | 
				
			||||||
      rm -rf ${WEBDIR}/${WEBBASE}/man && mkdir ${WEBDIR}/${WEBBASE}/man
 | 
					      rm -rf ${WEBMAN}
 | 
				
			||||||
      rm -rf ${WEBDIR}/${WEBBASE}/speeches && mkdir ${WEBDIR}/${WEBBASE}/speeches
 | 
					      mkdir -p ${WEBMAN}/man1 ${WEBMAN}/man7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      cp ${MAN1DSTDIR}/*.html ${MAN7DSTDIR}/*.html ${WEBDIR}/${WEBBASE}/man
 | 
					      # old stuff
 | 
				
			||||||
      cp ${SPEECHESDIR}/*.pdf ${WEBDIR}/${WEBBASE}/speeches
 | 
					      # rm -rf ${WEBDIR}/${WEBBASE}/speeches && mkdir ${WEBDIR}/${WEBBASE}/speeches
 | 
				
			||||||
 | 
					      # cp ${SPEECHESDIR}/*.pdf ${WEBDIR}/${WEBBASE}/speeches
 | 
				
			||||||
 | 
					      # git describe > ${WEBDIR}/${WEBBASE}/man/VERSION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      cp ${MAN1DSTDIR}/*.html ${WEBMAN}/man1 
 | 
				
			||||||
 | 
					      cp ${MAN7DSTDIR}/*.html ${WEBMAN}/man7
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      git describe > ${WEBDIR}/${WEBBASE}/man/VERSION
 | 
					 | 
				
			||||||
      cd ${WEBDIR} && git add ${WEBBASE}
 | 
					      cd ${WEBDIR} && git add ${WEBBASE}
 | 
				
			||||||
      cd ${WEBDIR} && git commit -m "cdist update" ${WEBBASE} ${WEBPAGE}
 | 
					      cd ${WEBDIR} && git commit -m "cdist update" ${WEBBASE} ${WEBPAGE}
 | 
				
			||||||
      cd ${WEBDIR} && make pub
 | 
					      cd ${WEBDIR} && make pub
 | 
				
			||||||
   ;;
 | 
					   ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   pub)
 | 
					   p|pu|pub)
 | 
				
			||||||
      git push --mirror
 | 
					      git push --mirror
 | 
				
			||||||
      git push --mirror github
 | 
					      git push --mirror github
 | 
				
			||||||
 | 
					      git push --mirror sf
 | 
				
			||||||
   ;;
 | 
					   ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   clean)
 | 
					   clean)
 | 
				
			||||||
| 
						 | 
					@ -123,14 +131,26 @@ case "$1" in
 | 
				
			||||||
      | xargs rm -f
 | 
					      | xargs rm -f
 | 
				
			||||||
   ;;
 | 
					   ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   test)
 | 
				
			||||||
 | 
					      shift # skip t
 | 
				
			||||||
 | 
					      export PYTHONPATH=$PYTHONPATH:$(pwd -P)/lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if [ $# -lt 1 ]; then
 | 
				
			||||||
 | 
					         python3 -m cdist.test
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					         python3 -m unittest "$@"
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   *)
 | 
					   *)
 | 
				
			||||||
      echo ''
 | 
					      echo ''
 | 
				
			||||||
      echo 'Welcome to cdist!'
 | 
					      echo 'Welcome to cdist!'
 | 
				
			||||||
      echo ''
 | 
					      echo ''
 | 
				
			||||||
      echo 'Here are the possible targets:'
 | 
					      echo 'Here are the possible targets:'
 | 
				
			||||||
      echo ''
 | 
					      echo ''
 | 
				
			||||||
      echo '	man: Build manpages (requires Asciidoc)'
 | 
					 | 
				
			||||||
      echo '	clean: Remove build stuff'
 | 
					      echo '	clean: Remove build stuff'
 | 
				
			||||||
 | 
					      echo '	man: Build manpages (requires Asciidoc)'
 | 
				
			||||||
 | 
					      echo '	test: Run tests'
 | 
				
			||||||
      echo ''
 | 
					      echo ''
 | 
				
			||||||
      echo ''
 | 
					      echo ''
 | 
				
			||||||
      echo "Unknown target, \"$1\"" >&2
 | 
					      echo "Unknown target, \"$1\"" >&2
 | 
				
			||||||
							
								
								
									
										26
									
								
								conf/explorer/lsb_codename
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								conf/explorer/lsb_codename
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set +e
 | 
				
			||||||
 | 
					lsb_release=$(which lsb_release 2>/dev/null)
 | 
				
			||||||
 | 
					if [ -x "$lsb_release" ]; then
 | 
				
			||||||
 | 
					   $lsb_release --short --codename
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										26
									
								
								conf/explorer/lsb_description
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								conf/explorer/lsb_description
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set +e
 | 
				
			||||||
 | 
					lsb_release=$(which lsb_release 2>/dev/null)
 | 
				
			||||||
 | 
					if [ -x "$lsb_release" ]; then
 | 
				
			||||||
 | 
					   $lsb_release --short --description
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										26
									
								
								conf/explorer/lsb_id
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								conf/explorer/lsb_id
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set +e
 | 
				
			||||||
 | 
					lsb_release=$(which lsb_release 2>/dev/null)
 | 
				
			||||||
 | 
					if [ -x "$lsb_release" ]; then
 | 
				
			||||||
 | 
					   $lsb_release --short --id
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										26
									
								
								conf/explorer/lsb_release
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								conf/explorer/lsb_release
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set +e
 | 
				
			||||||
 | 
					lsb_release=$(which lsb_release 2>/dev/null)
 | 
				
			||||||
 | 
					if [ -x "$lsb_release" ]; then
 | 
				
			||||||
 | 
					   $lsb_release --short --release
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@ if grep -q ^Fedora /etc/redhat-release 2>/dev/null; then
 | 
				
			||||||
   exit 0
 | 
					   exit 0
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# CentOS is also based on Redhat, this return before redhat!
 | 
					# CentOS is also based on Redhat, thus return before redhat!
 | 
				
			||||||
if grep -q ^CentOS /etc/redhat-release 2>/dev/null; then
 | 
					if grep -q ^CentOS /etc/redhat-release 2>/dev/null; then
 | 
				
			||||||
    echo centos
 | 
					    echo centos
 | 
				
			||||||
    exit 0
 | 
					    exit 0
 | 
				
			||||||
| 
						 | 
					@ -65,6 +65,16 @@ if [ -f /etc/SuSE-release ]; then
 | 
				
			||||||
   exit 0
 | 
					   exit 0
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f /etc/owl-release ]; then
 | 
				
			||||||
 | 
					   echo owl
 | 
				
			||||||
 | 
					   exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f /etc/cdist-preos ]; then
 | 
				
			||||||
 | 
					   echo cdist-preos
 | 
				
			||||||
 | 
					   exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uname_s="$(uname -s)"
 | 
					uname_s="$(uname -s)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Assume there is no tr on the client -> do lower case ourselves
 | 
					# Assume there is no tr on the client -> do lower case ourselves
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,6 +42,9 @@ case "$($__explorer/os)" in
 | 
				
			||||||
   *bsd|solaris)
 | 
					   *bsd|solaris)
 | 
				
			||||||
      uname -r
 | 
					      uname -r
 | 
				
			||||||
   ;;
 | 
					   ;;
 | 
				
			||||||
 | 
					   owl)
 | 
				
			||||||
 | 
					      cat /etc/owl-release
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
   redhat|centos)
 | 
					   redhat|centos)
 | 
				
			||||||
      cat /etc/redhat-release
 | 
					      cat /etc/redhat-release
 | 
				
			||||||
   ;;
 | 
					   ;;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2010-2011 Daniel Roth (dani-cdist@d-roth.li)
 | 
					# 2010-2011 Daniel Roth (dani-cdist@d-roth.li)
 | 
				
			||||||
 | 
					# 2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -25,9 +26,18 @@ else
 | 
				
			||||||
   file="/$__object_id"
 | 
					   file="/$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
regex=$(cat "$__object/parameter/line")
 | 
					if [ -f "$__object/parameter/regex" ]; then
 | 
				
			||||||
 | 
					    regex=$(cat "$__object/parameter/regex")
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    wrap=$(cat "$__object/parameter/line")
 | 
				
			||||||
 | 
					    regex="^$wrap\$"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f "$file" ]; then
 | 
					if [ -f "$file" ]; then
 | 
				
			||||||
   grep -q "^$regex\$" "$file"
 | 
					   # sh -e is our environment, we know what we do,
 | 
				
			||||||
 | 
					   # skip error detection for now
 | 
				
			||||||
 | 
					   set +e
 | 
				
			||||||
 | 
					   grep -q "$regex" "$file"
 | 
				
			||||||
   if [ $? -eq 1 ]; then
 | 
					   if [ $? -eq 1 ]; then
 | 
				
			||||||
      echo "NOTFOUND"
 | 
					      echo "NOTFOUND"
 | 
				
			||||||
   else
 | 
					   else
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,9 @@ OPTIONAL PARAMETERS
 | 
				
			||||||
file::
 | 
					file::
 | 
				
			||||||
   If supplied, use this as the destination file.
 | 
					   If supplied, use this as the destination file.
 | 
				
			||||||
   Otherwise the object_id is used.
 | 
					   Otherwise the object_id is used.
 | 
				
			||||||
 | 
					regex::
 | 
				
			||||||
 | 
					   If supplied, search for this regex.
 | 
				
			||||||
 | 
					   Otherwise entire line must be matched.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXAMPLES
 | 
					EXAMPLES
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1 +1,2 @@
 | 
				
			||||||
file
 | 
					file
 | 
				
			||||||
 | 
					regex
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,4 +27,4 @@ require="__package/python-software-properties" \
 | 
				
			||||||
   --source "$__type/files/remove-apt-repository" \
 | 
					   --source "$__type/files/remove-apt-repository" \
 | 
				
			||||||
   --mode 0755
 | 
					   --mode 0755
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require="$__self" __apt_update_index
 | 
					require="$__object_name" __apt_update_index
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,5 +38,5 @@ if [ -f "$__object/parameter/comment" ]; then
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
echo "$entry" >> "$__object/parameter/entry"
 | 
					echo "$entry" >> "$__object/parameter/entry"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require="$__self" __autofs_master
 | 
					require="$__object_name" __autofs_master
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ if [ ! -f "$__object/parameter/header" ]; then
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ -d "$__object/files" ] || mkdir "$__object/files"
 | 
					[ -d "$__object/files" ] || mkdir "$__object/files"
 | 
				
			||||||
require="$__self" __file /etc/auto.master --source "$__object/files/auto.master" \
 | 
					require="$__object_name" __file /etc/auto.master --source "$__object/files/auto.master" \
 | 
				
			||||||
   --mode 644 \
 | 
					   --mode 644 \
 | 
				
			||||||
   --owner root \
 | 
					   --owner root \
 | 
				
			||||||
   --group root
 | 
					   --group root
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										37
									
								
								conf/type/__cdistmarker/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										37
									
								
								conf/type/__cdistmarker/gencode-remote
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (C) 2011 Daniel Maher (phrawzty+cdist at gmail.com)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist (https://github.com/telmich/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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The marker file is established in the docs, but it isn't obligatory.
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/destination" ]; then
 | 
				
			||||||
 | 
					    destination="$(cat "$__object/parameter/destination")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    destination='/etc/cdist-configured'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The basic output of date is usually good enough, but variety is the
 | 
				
			||||||
 | 
					#   spice of life...
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/format" ]; then
 | 
				
			||||||
 | 
					    format="$(cat "$__object/parameter/format")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    format='-u'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Dump the timestamp in UTC to the marker
 | 
				
			||||||
 | 
					echo "date $format > $destination"
 | 
				
			||||||
							
								
								
									
										55
									
								
								conf/type/__cdistmarker/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								conf/type/__cdistmarker/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					cdist-type__cdistmarker(7)
 | 
				
			||||||
 | 
					==========================
 | 
				
			||||||
 | 
					Daniel Maher <phrawzty+cdist at gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__cdistmarker - Add a timestamped cdist marker.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					This type is used to add a common marker file which indicates that a given
 | 
				
			||||||
 | 
					machine is being managed by cdist. The contents of this file consist of a
 | 
				
			||||||
 | 
					timestamp, which can be used to determine the most recent time at which cdist
 | 
				
			||||||
 | 
					was run against the machine in question.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					None.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					destination::
 | 
				
			||||||
 | 
					    The path and filename of the marker.
 | 
				
			||||||
 | 
					    Default: /etc/cdist-configured
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					format::
 | 
				
			||||||
 | 
					    The format of the timestamp. This is passed directly to system 'date'.
 | 
				
			||||||
 | 
					    Default: -u
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Creates the marker as normal.
 | 
				
			||||||
 | 
					__cdistmarker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Creates the marker differently.
 | 
				
			||||||
 | 
					__cdistmarker --file /tmp/cdist_marker --format '+%s'
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2011 Daniel Maher. Free use of this software is granted under
 | 
				
			||||||
 | 
					the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										2
									
								
								conf/type/__cdistmarker/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								conf/type/__cdistmarker/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					destination
 | 
				
			||||||
 | 
					format
 | 
				
			||||||
							
								
								
									
										0
									
								
								conf/type/__cdistmarker/singleton
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								conf/type/__cdistmarker/singleton
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										39
									
								
								conf/type/__cron/explorer/entry
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										39
									
								
								conf/type/__cron/explorer/entry
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,39 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					name="$__object_id"
 | 
				
			||||||
 | 
					user="$(cat "$__object/parameter/user")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prefix="#cdist:__cron/$name"
 | 
				
			||||||
 | 
					suffix="#/cdist:__cron/$name"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					crontab -u $user -l | awk -v prefix="$prefix" -v suffix="$suffix" '
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   if (index($0,prefix)) {
 | 
				
			||||||
 | 
					      triggered=1
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   if (triggered) {
 | 
				
			||||||
 | 
					      if (index($0,suffix)) {
 | 
				
			||||||
 | 
					            triggered=0
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      print
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					'
 | 
				
			||||||
							
								
								
									
										63
									
								
								conf/type/__cron/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										63
									
								
								conf/type/__cron/gencode-remote
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,63 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					user="$(cat "$__object/parameter/user")"
 | 
				
			||||||
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					state_is=$(diff -q "$__object/parameter/entry" "$__object/explorer/entry" \
 | 
				
			||||||
 | 
					   && echo present \
 | 
				
			||||||
 | 
					   || echo absent
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$state_is" != "$state_should" ]; then
 | 
				
			||||||
 | 
					   case "$state_should" in
 | 
				
			||||||
 | 
					      present)
 | 
				
			||||||
 | 
					         cat << DONE
 | 
				
			||||||
 | 
					tmp=\$(mktemp)
 | 
				
			||||||
 | 
					crontab -u $user -l > \$tmp
 | 
				
			||||||
 | 
					cat >> \$tmp << EOC
 | 
				
			||||||
 | 
					$(cat "$__object/parameter/entry")"
 | 
				
			||||||
 | 
					EOC
 | 
				
			||||||
 | 
					crontab -u $user \$tmp
 | 
				
			||||||
 | 
					rm \$tmp
 | 
				
			||||||
 | 
					DONE
 | 
				
			||||||
 | 
					      ;;
 | 
				
			||||||
 | 
					      absent)
 | 
				
			||||||
 | 
					         # defined in type manifest
 | 
				
			||||||
 | 
					         prefix="$(cat "$__object/parameter/prefix")"
 | 
				
			||||||
 | 
					         suffix="$(cat "$__object/parameter/suffix")"
 | 
				
			||||||
 | 
					         cat << DONE
 | 
				
			||||||
 | 
					crontab -u $user -l | awk -v prefix="$prefix" -v suffix="$suffix" '
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   if (index(\$0,prefix)) {
 | 
				
			||||||
 | 
					      triggered=1
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   if (triggered) {
 | 
				
			||||||
 | 
					      if (index(\$0,suffix)) {
 | 
				
			||||||
 | 
					            triggered=0
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   } else {
 | 
				
			||||||
 | 
					      print
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					' | crontab -u $user -
 | 
				
			||||||
 | 
					DONE
 | 
				
			||||||
 | 
					      ;;
 | 
				
			||||||
 | 
					   esac
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										61
									
								
								conf/type/__cron/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								conf/type/__cron/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,61 @@
 | 
				
			||||||
 | 
					cdist-type__cron(7)
 | 
				
			||||||
 | 
					===================
 | 
				
			||||||
 | 
					Steven Armstrong <steven-cdist--@--armstrong.cc>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__cron - installs and manages cron jobs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					This cdist type allows you to manage entries in a users crontab.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					user::
 | 
				
			||||||
 | 
					   The user who's crontab is edited
 | 
				
			||||||
 | 
					command::
 | 
				
			||||||
 | 
					   The command to run.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					state::
 | 
				
			||||||
 | 
					   Either present or absent. Defaults to present.
 | 
				
			||||||
 | 
					minute::
 | 
				
			||||||
 | 
					   See crontab(5). Defaults to *
 | 
				
			||||||
 | 
					hour::
 | 
				
			||||||
 | 
					   See crontab(5). Defaults to *
 | 
				
			||||||
 | 
					day_of_month::
 | 
				
			||||||
 | 
					   See crontab(5). Defaults to *
 | 
				
			||||||
 | 
					month::
 | 
				
			||||||
 | 
					   See crontab(5). Defaults to *
 | 
				
			||||||
 | 
					day_of_week::
 | 
				
			||||||
 | 
					   See crontab(5). Defaults to *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# add cronjob
 | 
				
			||||||
 | 
					__cron some-id --user root --command "/path/to/script"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# remove cronjob
 | 
				
			||||||
 | 
					__cron some-id --user root --command "/path/to/script" --state absent
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					- crontab(5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2011 Steven Armstrong. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										66
									
								
								conf/type/__cron/manifest
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								conf/type/__cron/manifest
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,66 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					name="$__object_id"
 | 
				
			||||||
 | 
					user="$(cat "$__object/parameter/user")"
 | 
				
			||||||
 | 
					command="$(cat "$__object/parameter/command")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# set defaults
 | 
				
			||||||
 | 
					if [ ! -f "$__object/parameter/state" ]; then
 | 
				
			||||||
 | 
					   echo "present" > "$__object/parameter/state"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/minute" ]; then
 | 
				
			||||||
 | 
					   minute="$(cat "$__object/parameter/minute")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   minute="*"
 | 
				
			||||||
 | 
					   echo "$minute" > "$__object/parameter/minute"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/hour" ]; then
 | 
				
			||||||
 | 
					   hour="$(cat "$__object/parameter/hour")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   hour="*"
 | 
				
			||||||
 | 
					   echo "$hour" > "$__object/parameter/hour"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/day_of_month" ]; then
 | 
				
			||||||
 | 
					   day_of_month="$(cat "$__object/parameter/day_of_month")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   day_of_month="*"
 | 
				
			||||||
 | 
					   echo "$day_of_month" > "$__object/parameter/day_of_month"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/month" ]; then
 | 
				
			||||||
 | 
					   month="$(cat "$__object/parameter/month")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   month="*"
 | 
				
			||||||
 | 
					   echo "$month" > "$__object/parameter/month"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/day_of_week" ]; then
 | 
				
			||||||
 | 
					   day_of_week="$(cat "$__object/parameter/day_of_week")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   day_of_week="*"
 | 
				
			||||||
 | 
					   echo "$day_of_week" > "$__object/parameter/day_of_week"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: if changed, also change in explorers
 | 
				
			||||||
 | 
					prefix="#cdist:__cron/$name"
 | 
				
			||||||
 | 
					suffix="#/cdist:__cron/$name"
 | 
				
			||||||
 | 
					echo "$prefix" | tee "$__object/parameter/prefix" > "$__object/parameter/entry"
 | 
				
			||||||
 | 
					echo "$minute $hour $day_of_month $month $day_of_week $command" >> "$__object/parameter/entry"
 | 
				
			||||||
 | 
					echo "$suffix" | tee "$__object/parameter/suffix" >> "$__object/parameter/entry"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								conf/type/__cron/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								conf/type/__cron/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
 | 
					minute
 | 
				
			||||||
 | 
					hour
 | 
				
			||||||
 | 
					day_of_month
 | 
				
			||||||
 | 
					month
 | 
				
			||||||
 | 
					day_of_week
 | 
				
			||||||
							
								
								
									
										2
									
								
								conf/type/__cron/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								conf/type/__cron/parameter/required
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					user
 | 
				
			||||||
 | 
					command
 | 
				
			||||||
							
								
								
									
										38
									
								
								conf/type/__mkfs/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								conf/type/__mkfs/gencode-remote
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					device="$(cat "$__object/parameter/device")"
 | 
				
			||||||
 | 
					type="$(cat "$__object/parameter/type")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$type" = "swap" ]; then
 | 
				
			||||||
 | 
					   echo "mkswap $device"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   command="mkfs -t $type -q"
 | 
				
			||||||
 | 
					   if [ -f "$__object/parameter/options" ]; then
 | 
				
			||||||
 | 
					      options="$(cat "$__object/parameter/options")"
 | 
				
			||||||
 | 
					      command="$command $options"
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					   command="$command $device"
 | 
				
			||||||
 | 
					   if [ -f "$__object/parameter/blocks" ]; then
 | 
				
			||||||
 | 
					      blocks="$(cat "$__object/parameter/blocks")"
 | 
				
			||||||
 | 
					      command="$command $blocks"
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					   echo "$command"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										0
									
								
								conf/type/__mkfs/install
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								conf/type/__mkfs/install
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										57
									
								
								conf/type/__mkfs/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								conf/type/__mkfs/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,57 @@
 | 
				
			||||||
 | 
					cdist-type__mkfs(7)
 | 
				
			||||||
 | 
					===================
 | 
				
			||||||
 | 
					Steven Armstrong <steven-cdist--@--armstrong.cc>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__mkfs - build a linux file system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					This cdist type is a wrapper for the mkfs command.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					type::
 | 
				
			||||||
 | 
					   The filesystem type to use. Same as mkfs -t.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					device::
 | 
				
			||||||
 | 
					   defaults to object_id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					options::
 | 
				
			||||||
 | 
					   file system-specific options to be passed to the mkfs command
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					blocks::
 | 
				
			||||||
 | 
					   the number of blocks to be used for the file system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# reiserfs /dev/sda5
 | 
				
			||||||
 | 
					__mkfs /dev/sda5 --type reiserfs
 | 
				
			||||||
 | 
					# same thing with explicit device
 | 
				
			||||||
 | 
					__mkfs whatever --device /dev/sda5 --type reiserfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# jfs with journal on /dev/sda2
 | 
				
			||||||
 | 
					__mkfs /dev/sda1 --type jfs --options "-j /dev/sda2"
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					- mkfs(8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2011 Steven Armstrong. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										31
									
								
								conf/type/__mkfs/manifest
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								conf/type/__mkfs/manifest
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# set defaults
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/device" ]; then
 | 
				
			||||||
 | 
					   device="(cat "$__object/parameter/device")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   device="/$__object_id"
 | 
				
			||||||
 | 
					   echo "$device" > "$__object/parameter/device"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type="(cat "$__object/parameter/type")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					options="(cat "$__object/parameter/options")"
 | 
				
			||||||
							
								
								
									
										3
									
								
								conf/type/__mkfs/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								conf/type/__mkfs/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					device
 | 
				
			||||||
 | 
					options
 | 
				
			||||||
 | 
					blocks
 | 
				
			||||||
							
								
								
									
										1
									
								
								conf/type/__mkfs/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								conf/type/__mkfs/parameter/required
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					type
 | 
				
			||||||
| 
						 | 
					@ -49,4 +49,4 @@ for property in $(ls .); do
 | 
				
			||||||
   fi
 | 
					   fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require="$__self" __package_$type "$@"
 | 
					require="$__object_name" __package_$type "$@"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,13 +27,6 @@ else
 | 
				
			||||||
   name="$__object_id"
 | 
					   name="$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Check for preseeding and add preseed as here document
 | 
					 | 
				
			||||||
if [ -f "$__object/parameter/preseed" ]; then
 | 
					 | 
				
			||||||
   echo "debconf-set-selections << __file-eof"
 | 
					 | 
				
			||||||
   cat "$(cat "$__object/parameter/preseed")"
 | 
					 | 
				
			||||||
   echo "__file-eof"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
state="$(cat "$__object/parameter/state")"
 | 
					state="$(cat "$__object/parameter/state")"
 | 
				
			||||||
is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status" || true)"
 | 
					is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status" || true)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										31
									
								
								conf/type/__package_luarocks/explorer/pkg_status
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								conf/type/__package_luarocks/explorer/pkg_status
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2012 SwellPath, Inc.
 | 
				
			||||||
 | 
					# Christian G. Warden <cwarden@xerus.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 status of a rock
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/name" ]; then
 | 
				
			||||||
 | 
					   name="$(cat "$__object/parameter/name")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   name="$__object_id"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Accept luarocks failing if package is not known/installed
 | 
				
			||||||
 | 
					luarocks list "$name" | egrep -A1 "^$name$" || exit 0
 | 
				
			||||||
							
								
								
									
										52
									
								
								conf/type/__package_luarocks/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										52
									
								
								conf/type/__package_luarocks/gencode-remote
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2012 SwellPath, Inc.
 | 
				
			||||||
 | 
					# Christian G. Warden <cwarden@xerus.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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Manage LuaRocks packages
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/name" ]; then
 | 
				
			||||||
 | 
					   name="$(cat "$__object/parameter/name")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   name="$__object_id"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					state="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					is_installed="$(grep "(installed)" "$__object/explorer/pkg_status" || true)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case "$state" in
 | 
				
			||||||
 | 
					   installed)
 | 
				
			||||||
 | 
					      # Install only if non-existent
 | 
				
			||||||
 | 
					      if [ -z "$is_installed" ]; then
 | 
				
			||||||
 | 
					         echo luarocks install \"$name\"
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					   removed)
 | 
				
			||||||
 | 
					      # Remove only if existent
 | 
				
			||||||
 | 
					      if [ -n "$is_installed" ]; then
 | 
				
			||||||
 | 
					         echo luarocks remove \"$name\"
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					   *)
 | 
				
			||||||
 | 
					      echo "Unknown state: $state" >&2
 | 
				
			||||||
 | 
					      exit 1
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
							
								
								
									
										49
									
								
								conf/type/__package_luarocks/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								conf/type/__package_luarocks/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,49 @@
 | 
				
			||||||
 | 
					cdist-type__package_luarocks(7)
 | 
				
			||||||
 | 
					==============================
 | 
				
			||||||
 | 
					Christian G. Warden <cwarden@xerus.org>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__package_luarocks - Manage luarocks packages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					LuaRocks is a deployment and management system for Lua modules.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					state::
 | 
				
			||||||
 | 
					   Either "installed" or "removed".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					name::
 | 
				
			||||||
 | 
					   If supplied, use the name and not the object id as the package name.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Ensure luasocket is installed
 | 
				
			||||||
 | 
					__package_luarocks luasocket --state installed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Remove package
 | 
				
			||||||
 | 
					__package_luarocks luasocket --state removed
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					- cdist-type__package(7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2012 SwellPath, Inc. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										23
									
								
								conf/type/__package_luarocks/manifest
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								conf/type/__package_luarocks/manifest
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2012 SwellPath, Inc.
 | 
				
			||||||
 | 
					# Christian G. Warden <cwarden@xerus.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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__package luarocks --state installed
 | 
				
			||||||
 | 
					__package make --state installed
 | 
				
			||||||
							
								
								
									
										1
									
								
								conf/type/__package_luarocks/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								conf/type/__package_luarocks/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					name
 | 
				
			||||||
							
								
								
									
										1
									
								
								conf/type/__package_luarocks/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								conf/type/__package_luarocks/parameter/required
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
							
								
								
									
										30
									
								
								conf/type/__package_rubygem/explorer/pkg_status
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								conf/type/__package_rubygem/explorer/pkg_status
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Chase Allen James (nx-cdist@nu-ex.com)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 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 status of a rubygem
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/name" ]; then
 | 
				
			||||||
 | 
					   name="$(cat "$__object/parameter/name")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   name="$__object_id"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Except gem failing, if package is not known / installed
 | 
				
			||||||
 | 
					gem list -i "$name" 2>/dev/null || exit 0
 | 
				
			||||||
							
								
								
									
										51
									
								
								conf/type/__package_rubygem/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										51
									
								
								conf/type/__package_rubygem/gencode-remote
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Chase Allen James <nx-cdist@nu-ex.com>
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Manage Rubygem packages
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/name" ]; then
 | 
				
			||||||
 | 
					   name="$(cat "$__object/parameter/name")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   name="$__object_id"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					state="$(cat "$__object/parameter/state")"
 | 
				
			||||||
 | 
					is_installed="$(grep "true" "$__object/explorer/pkg_status" || true)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case "$state" in
 | 
				
			||||||
 | 
					   installed)
 | 
				
			||||||
 | 
					      # Install only if non-existent
 | 
				
			||||||
 | 
					      if [ -z "$is_installed" ]; then
 | 
				
			||||||
 | 
					         echo gem install \"$name\" --no-ri --no-rdoc
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					   removed)
 | 
				
			||||||
 | 
					      # Remove only if existent
 | 
				
			||||||
 | 
					      if [ -n "$is_installed" ]; then
 | 
				
			||||||
 | 
					         echo gem uninstall \"$name\"
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					   *)
 | 
				
			||||||
 | 
					      echo "Unknown state: $state" >&2
 | 
				
			||||||
 | 
					      exit 1
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
							
								
								
									
										49
									
								
								conf/type/__package_rubygem/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								conf/type/__package_rubygem/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,49 @@
 | 
				
			||||||
 | 
					cdist-type__package_rubygem(7)
 | 
				
			||||||
 | 
					==============================
 | 
				
			||||||
 | 
					Chase Allen James <nx-cdist@nu-ex.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__package_rubygem - Manage rubygem packages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					Rubygems is the default package management system for the Ruby programming language.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					state::
 | 
				
			||||||
 | 
					   Either "installed" or "removed".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					name::
 | 
				
			||||||
 | 
					   If supplied, use the name and not the object id as the package name.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Ensure sinatra is installed
 | 
				
			||||||
 | 
					__package_rubygem sinatra --state installed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Remove package
 | 
				
			||||||
 | 
					__package_rubygem rails --state removed
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					- cdist-type__package(7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2011 Chase Allen James. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										1
									
								
								conf/type/__package_rubygem/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								conf/type/__package_rubygem/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					name
 | 
				
			||||||
							
								
								
									
										1
									
								
								conf/type/__package_rubygem/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								conf/type/__package_rubygem/parameter/required
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					state
 | 
				
			||||||
							
								
								
									
										0
									
								
								conf/type/__partition_msdos/install
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								conf/type/__partition_msdos/install
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										62
									
								
								conf/type/__partition_msdos/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								conf/type/__partition_msdos/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,62 @@
 | 
				
			||||||
 | 
					cdist-type__partition_msdos(7)
 | 
				
			||||||
 | 
					==============================
 | 
				
			||||||
 | 
					Steven Armstrong <steven-cdist--@--armstrong.cc>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__partition_msdos - creates msdos partitions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					This cdist type allows you to create msdos paritions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					type::
 | 
				
			||||||
 | 
					   the partition type used in fdisk (such as 82 or 83) or "extended"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					partition::
 | 
				
			||||||
 | 
					   defaults to object_id
 | 
				
			||||||
 | 
					bootable::
 | 
				
			||||||
 | 
					   mark partition as bootable, true or false, defaults to false
 | 
				
			||||||
 | 
					size::
 | 
				
			||||||
 | 
					   the size of the partition (such as 32M or 15G, whole numbers
 | 
				
			||||||
 | 
					   only), '+' for remaining space, or 'n%' for percentage of remaining
 | 
				
			||||||
 | 
					   (these should only be used after all specific partition sizes are
 | 
				
			||||||
 | 
					   specified). Defaults to +.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# 128MB, linux, bootable
 | 
				
			||||||
 | 
					__partition_msdos /dev/sda1 --type 83 --size 128M --bootable true
 | 
				
			||||||
 | 
					# 512MB, swap
 | 
				
			||||||
 | 
					__partition_msdos /dev/sda2 --type 82 --size 512M
 | 
				
			||||||
 | 
					# 100GB, extended
 | 
				
			||||||
 | 
					__partition_msdos /dev/sda3 --type extended --size 100G
 | 
				
			||||||
 | 
					# 10GB, linux
 | 
				
			||||||
 | 
					__partition_msdos /dev/sda5 --type 83 --size 10G
 | 
				
			||||||
 | 
					# 50% of the free space of the extended partition, linux
 | 
				
			||||||
 | 
					__partition_msdos /dev/sda6 --type 83 --size 50%
 | 
				
			||||||
 | 
					# rest of the extended partition, linux
 | 
				
			||||||
 | 
					__partition_msdos /dev/sda7 --type 83 --size +
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2011 Steven Armstrong. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										41
									
								
								conf/type/__partition_msdos/manifest
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										41
									
								
								conf/type/__partition_msdos/manifest
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,41 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# set defaults
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/partition" ]; then
 | 
				
			||||||
 | 
					   partition="(cat "$__object/parameter/partition")"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					   partition="/$__object_id"
 | 
				
			||||||
 | 
					   echo "$partition" > "$__object/parameter/partition"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					device="$(echo "$partition" | sed 's/[0-9]//g')"
 | 
				
			||||||
 | 
					echo "$device" > "$__object/parameter/device"
 | 
				
			||||||
 | 
					minor="$(echo "$partition" | sed 's/[^0-9]//g')"
 | 
				
			||||||
 | 
					echo "$minor" > "$__object/parameter/minor"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ ! -f "$__object/parameter/bootable" ]; then
 | 
				
			||||||
 | 
					   echo "false" > "$__object/parameter/bootable"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ ! -f "$__object/parameter/size" ]; then
 | 
				
			||||||
 | 
					   echo "+" > "$__object/parameter/size"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# pull in the type that actually does something with the above parameters
 | 
				
			||||||
 | 
					require="$__object_name" __partition_msdos_apply
 | 
				
			||||||
							
								
								
									
										3
									
								
								conf/type/__partition_msdos/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								conf/type/__partition_msdos/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					partition
 | 
				
			||||||
 | 
					bootable
 | 
				
			||||||
 | 
					size
 | 
				
			||||||
							
								
								
									
										1
									
								
								conf/type/__partition_msdos/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								conf/type/__partition_msdos/parameter/required
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					type
 | 
				
			||||||
							
								
								
									
										3
									
								
								conf/type/__partition_msdos_apply/explorer/partitions
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								conf/type/__partition_msdos_apply/explorer/partitions
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat /proc/partitions
 | 
				
			||||||
							
								
								
									
										61
									
								
								conf/type/__partition_msdos_apply/files/lib.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								conf/type/__partition_msdos_apply/files/lib.sh
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,61 @@
 | 
				
			||||||
 | 
					die() {
 | 
				
			||||||
 | 
					   echo "[__partition_msdos_apply] $@" >&2
 | 
				
			||||||
 | 
					   exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					debug() {
 | 
				
			||||||
 | 
					   #echo "[__partition_msdos_apply] $@" >&2
 | 
				
			||||||
 | 
					   :
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fdisk_command() {
 | 
				
			||||||
 | 
					   local device="$1"
 | 
				
			||||||
 | 
					   local cmd="$2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   debug fdisk_command "running fdisk command '${cmd}' on device ${device}"
 | 
				
			||||||
 | 
					   printf "${cmd}\nw\n" | fdisk -c -u "$device"
 | 
				
			||||||
 | 
					   # give disk some time
 | 
				
			||||||
 | 
					   sleep 1
 | 
				
			||||||
 | 
					   return $?
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create_disklabel() {
 | 
				
			||||||
 | 
					   local device=$1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   debug create_disklabel "creating new msdos disklabel"
 | 
				
			||||||
 | 
					   fdisk_command ${device} "o"
 | 
				
			||||||
 | 
					   return $?
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create_partition() {
 | 
				
			||||||
 | 
					  local device="$1"
 | 
				
			||||||
 | 
					  local minor="$2"
 | 
				
			||||||
 | 
					  local size="$3"
 | 
				
			||||||
 | 
					  local type="$4"
 | 
				
			||||||
 | 
					  local primary_count="$5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [ "$type" = "extended" -o "$type" = "5" ]; then
 | 
				
			||||||
 | 
					    # Extended partition
 | 
				
			||||||
 | 
					    primary_extended="e\n"
 | 
				
			||||||
 | 
					    first_minor="${minor}\n"
 | 
				
			||||||
 | 
					    [ "${minor}" = "4" ] && first_minor=""
 | 
				
			||||||
 | 
					    type_minor="${minor}\n"
 | 
				
			||||||
 | 
					    [ "${minor}" = "1" ] && type_minor=""
 | 
				
			||||||
 | 
					    type="5"
 | 
				
			||||||
 | 
					  elif [ "${minor}" -lt "5" ]; then
 | 
				
			||||||
 | 
					    primary_extended="p\n"
 | 
				
			||||||
 | 
					    first_minor="${minor}\n"
 | 
				
			||||||
 | 
					    [ "${minor}" = "4" ] && first_minor=""
 | 
				
			||||||
 | 
					    type_minor="${minor}\n"
 | 
				
			||||||
 | 
					    [ "${minor}" = "1" ] && type_minor=""
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    # Logical partitions
 | 
				
			||||||
 | 
					    first_minor="${minor}\n"
 | 
				
			||||||
 | 
					    type_minor="${minor}\n"
 | 
				
			||||||
 | 
					    primary_extended="l\n"
 | 
				
			||||||
 | 
					    [ "$primary_count" -gt "3" ] && primary_extended=""
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  [ -n "${size}" ] && size="+${size}M"
 | 
				
			||||||
 | 
					  fdisk_command ${device} "n\n${primary_extended}${first_minor}\n${size}\nt\n${type_minor}${type}\n"
 | 
				
			||||||
 | 
					  return $?
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										138
									
								
								conf/type/__partition_msdos_apply/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										138
									
								
								conf/type/__partition_msdos_apply/gencode-remote
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,138 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is part of cdist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# cdist is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					die() {
 | 
				
			||||||
 | 
					   echo "[__partition_msdos_apply] $@" >&2
 | 
				
			||||||
 | 
					   exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					debug() {
 | 
				
			||||||
 | 
					   #echo "[__partition_msdos_apply] $@" >&2
 | 
				
			||||||
 | 
					   :
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Convert a size specifier 1G 100M or 50% into the corresponding numeric MB.
 | 
				
			||||||
 | 
					size_to_mb() {
 | 
				
			||||||
 | 
					   local size=$1
 | 
				
			||||||
 | 
					   local available_size="$2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   local number_suffix="$(echo ${size} | sed -e 's:\.[0-9]\+::' -e 's:\([0-9]\+\)\([MmGg%]\)[Bb]\?:\1|\2:')"
 | 
				
			||||||
 | 
					   local number="$(echo ${number_suffix} | cut -d '|' -f1)"
 | 
				
			||||||
 | 
					   local suffix="$(echo ${number_suffix} | cut -d '|' -f2)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   case "$suffix" in
 | 
				
			||||||
 | 
					      M|m)
 | 
				
			||||||
 | 
					         size="$number"
 | 
				
			||||||
 | 
					         ;;
 | 
				
			||||||
 | 
					      G|g)
 | 
				
			||||||
 | 
					         size="$(( $number * 1024 ))"
 | 
				
			||||||
 | 
					         ;;
 | 
				
			||||||
 | 
					      %)
 | 
				
			||||||
 | 
					         size="$(( $available_size * $number / 100 ))"
 | 
				
			||||||
 | 
					         ;;
 | 
				
			||||||
 | 
					      *)
 | 
				
			||||||
 | 
					         size="-1"
 | 
				
			||||||
 | 
					   esac
 | 
				
			||||||
 | 
					   echo "$size"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# include function library for use on target
 | 
				
			||||||
 | 
					cat "$__type/files/lib.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					partitions="$__object/explorer/partitions"
 | 
				
			||||||
 | 
					objects=$(find "$__global/object/__partition_msdos" -path "*.cdist")
 | 
				
			||||||
 | 
					current_device=""
 | 
				
			||||||
 | 
					available_device_size=
 | 
				
			||||||
 | 
					available_extended_size=
 | 
				
			||||||
 | 
					available_size=
 | 
				
			||||||
 | 
					primary_count=0
 | 
				
			||||||
 | 
					for object in $objects; do
 | 
				
			||||||
 | 
					   device="$(cat "$object/parameter/device")"
 | 
				
			||||||
 | 
					   if [ "$current_device" != "$device" ]; then
 | 
				
			||||||
 | 
					      echo "create_disklabel \"$device\" || die 'Failed to create disklabel for $device'"
 | 
				
			||||||
 | 
					      current_device="$device"
 | 
				
			||||||
 | 
					      device_name=$(echo ${device} | sed -e 's:^/dev/::;s:/:\\/:g')
 | 
				
			||||||
 | 
					      available_device_size=$(( $(awk "/${device_name}\$/ { print \$3; }" "$partitions") / 1024))
 | 
				
			||||||
 | 
					      # make sure we don't go past the end of the drive
 | 
				
			||||||
 | 
					      available_device_size=$((available_device_size - 2))
 | 
				
			||||||
 | 
					      available_extended_size=0
 | 
				
			||||||
 | 
					      primary_count=0
 | 
				
			||||||
 | 
					      debug "----- $device"
 | 
				
			||||||
 | 
					      debug "current_device=$current_device"
 | 
				
			||||||
 | 
					      debug "available_device_size=$available_device_size"
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   type="$(cat "$object/parameter/type")"
 | 
				
			||||||
 | 
					   partition="$(cat "$object/parameter/partition")"
 | 
				
			||||||
 | 
					   minor="$(cat "$object/parameter/minor")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   bootable="$(cat "$object/parameter/bootable")"
 | 
				
			||||||
 | 
					   size="$(cat "$object/parameter/size")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if [ "${minor}" -lt "5" ]; then
 | 
				
			||||||
 | 
					      # Primary partitions
 | 
				
			||||||
 | 
					      primary_count=$(( $primary_count + 1 ))
 | 
				
			||||||
 | 
					      available_size=$available_device_size
 | 
				
			||||||
 | 
					   else
 | 
				
			||||||
 | 
					      # Logical partitions
 | 
				
			||||||
 | 
					      available_size=$available_extended_size
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if [ "$size" = "+" ]; then
 | 
				
			||||||
 | 
					      # use rest of device
 | 
				
			||||||
 | 
					      partition_size=""
 | 
				
			||||||
 | 
					      available_size=0
 | 
				
			||||||
 | 
					   else
 | 
				
			||||||
 | 
					      partition_size=$(size_to_mb "$size" "$available_size")
 | 
				
			||||||
 | 
					      available_size="$(( $available_size - $partition_size ))"
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if [ "${minor}" -lt "5" ]; then
 | 
				
			||||||
 | 
					      # Primary partitions
 | 
				
			||||||
 | 
					      available_device_size=$available_size
 | 
				
			||||||
 | 
					      if [ "$type" = "extended" -o "$type" = "5" ]; then
 | 
				
			||||||
 | 
					         # Extended partition
 | 
				
			||||||
 | 
					         available_extended_size=$partition_size
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					   else
 | 
				
			||||||
 | 
					      # Logical paritions
 | 
				
			||||||
 | 
					      available_extended_size=$available_size
 | 
				
			||||||
 | 
					   fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   [ "$partition_size" = "-1" ] && die "could not translate size '$size' to a usable value"
 | 
				
			||||||
 | 
					   debug "----- $partition"
 | 
				
			||||||
 | 
					   debug "primary_count=$primary_count"
 | 
				
			||||||
 | 
					   debug "current_device=$current_device"
 | 
				
			||||||
 | 
					   debug "device=$device"
 | 
				
			||||||
 | 
					   debug "type=$type"
 | 
				
			||||||
 | 
					   debug "partition=$partition"
 | 
				
			||||||
 | 
					   debug "minor=$minor"
 | 
				
			||||||
 | 
					   debug "bootable=$bootable"
 | 
				
			||||||
 | 
					   debug "size=$size"
 | 
				
			||||||
 | 
					   debug "partition_size=$partition_size"
 | 
				
			||||||
 | 
					   debug "available_size=$available_size"
 | 
				
			||||||
 | 
					   debug "available_device_size=$available_device_size"
 | 
				
			||||||
 | 
					   debug "available_extended_size=$available_extended_size"
 | 
				
			||||||
 | 
					   debug "----------"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   echo "create_partition '$device' '$minor' '$partition_size' '$type' '$primary_count' \
 | 
				
			||||||
 | 
					      || die 'Failed to create partition: $partition'"
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										0
									
								
								conf/type/__partition_msdos_apply/install
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								conf/type/__partition_msdos_apply/install
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										42
									
								
								conf/type/__partition_msdos_apply/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								conf/type/__partition_msdos_apply/man.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					cdist-type__partition_msdos_apply(7)
 | 
				
			||||||
 | 
					====================================
 | 
				
			||||||
 | 
					Steven Armstrong <steven-cdist--@--armstrong.cc>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__partition_msdos_apply - Apply dos partition settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					Create the partitions defined with __partition_msdos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					None.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					__partition_msdos_apply
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist-type(7)
 | 
				
			||||||
 | 
					- cdist-type__partition_msdos_apply(7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2011 Steven Armstrong. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
							
								
								
									
										0
									
								
								conf/type/__partition_msdos_apply/singleton
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								conf/type/__partition_msdos_apply/singleton
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -24,7 +24,7 @@
 | 
				
			||||||
if [ -f "$__object/parameter/name" ]; then
 | 
					if [ -f "$__object/parameter/name" ]; then
 | 
				
			||||||
   name="$(cat "$__object/parameter/name")"
 | 
					   name="$(cat "$__object/parameter/name")"
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   name="/$__object_id"
 | 
					   name="$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pgrep -x -f "$name" || true
 | 
					pgrep -x -f "$name" || true
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,6 +50,10 @@ __process /usr/sbin/sshd --state stopped --stop "/etc/rc.d/sshd stop"
 | 
				
			||||||
# Ensure cups is running, which runs with -C ...:
 | 
					# Ensure cups is running, which runs with -C ...:
 | 
				
			||||||
__process cups --start "/etc/rc.d/cups start" --state running \
 | 
					__process cups --start "/etc/rc.d/cups start" --state running \
 | 
				
			||||||
   --name "/usr/sbin/cupsd -C /etc/cups/cupsd.conf"
 | 
					   --name "/usr/sbin/cupsd -C /etc/cups/cupsd.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ensure rpc.statd is running (which usually runs with -L) using a regexp
 | 
				
			||||||
 | 
					__process rpcstatd --state running --start "/etc/init.d/statd start" \
 | 
				
			||||||
 | 
					    --name "rpc.statd.*"
 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then
 | 
				
			||||||
      current_value="$(awk -F: '{ print $ENVIRON["field"] }' < "$file")"
 | 
					      current_value="$(awk -F: '{ print $ENVIRON["field"] }' < "$file")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if [ "$new_value" != "$current_value" ]; then
 | 
					      if [ "$new_value" != "$current_value" ]; then
 | 
				
			||||||
         set -- "$@" "--$property" \"$new_value\"
 | 
					         set -- "$@" "--$property" \'$new_value\'
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
   done
 | 
					   done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,7 +67,7 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   for property in $(ls .); do
 | 
					   for property in $(ls .); do
 | 
				
			||||||
      new_value="$(cat "$property")"
 | 
					      new_value="$(cat "$property")"
 | 
				
			||||||
      set -- "$@" "--$property" \"$new_value\"
 | 
					      set -- "$@" "--$property" \'$new_value\'
 | 
				
			||||||
   done
 | 
					   done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   echo useradd "$@" "$name"
 | 
					   echo useradd "$@" "$name"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,44 @@
 | 
				
			||||||
1.7.1:
 | 
					2.0.5:
 | 
				
			||||||
 | 
						* New Type: __package_luarocks (Christian G. Warden)
 | 
				
			||||||
 | 
						* Feature: __addifnosuchline supports matching on 
 | 
				
			||||||
 | 
							regular expressions (Daniel Maher)
 | 
				
			||||||
 | 
						* Documentation: (Re)write of the tutorial
 | 
				
			||||||
 | 
						* Cleanup: Explicitly require Python >= 3.2 (do not fail implicitly)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2.0.4: 2011-11-18
 | 
				
			||||||
 | 
						* Bugfix core: Remove traceback when sending SIGINT (aka Ctrl-C)
 | 
				
			||||||
 | 
						* Bugfix core: Accept parameters with - in the name (Steven Armstrong)
 | 
				
			||||||
 | 
						* Cleanup: __object_fq variable removed (never used)
 | 
				
			||||||
 | 
						* Cleanup: Environment variable __self DEPRECATED, use __object_name instead
 | 
				
			||||||
 | 
						* Cleanup: Environment variable __self scheduled for removal in cdist 2.1
 | 
				
			||||||
 | 
						* Documentation: Many examples for use of __remote_* (Steven Armstrong)
 | 
				
			||||||
 | 
						* Feature: Automatically require all used objects (Steven Armstrong)
 | 
				
			||||||
 | 
						* New Type: __cron (Steven Armstrong)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2.0.3: 2011-10-18
 | 
				
			||||||
 | 
						* Improved logging, added --verbose, by more quiet by default
 | 
				
			||||||
 | 
						* Bugfix __user: Correct quoting (Steven Armstrong)
 | 
				
			||||||
 | 
						* Bugfix __addifnosuchline: Falsely exited
 | 
				
			||||||
 | 
						* Bugfix requirements: Restore original require="" behaviour
 | 
				
			||||||
 | 
						* Feature requirements: Check for broken object_ids and abort
 | 
				
			||||||
 | 
						* Massive refactoring and unittesting introduced (Steven Armstrong)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2.0.2: 2011-09-27
 | 
				
			||||||
 | 
						* Add support for detection of OpenWall Linux (Matthias Teege)
 | 
				
			||||||
 | 
						* Add support for __debug variable in manifests
 | 
				
			||||||
 | 
						* Bugfix core: Various issues with type emulator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2.0.1: 2011-09-23
 | 
				
			||||||
 | 
						* Bugfix core: Always print source of error in case of exec errors
 | 
				
			||||||
 | 
						* Bugfix core: Various smaller bugs in string concatenation
 | 
				
			||||||
 | 
						* Feature: Add marker "changed" to changed objects
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2.0.0: 2011-09-16
 | 
				
			||||||
 | 
						* New Type: __package_rubygem (Chase Allen James)
 | 
				
			||||||
 | 
						* __self replaced by __object_fq
 | 
				
			||||||
 | 
						* Rewrote cdist in Python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1.7.1: 2011-07-26
 | 
				
			||||||
	* Documentation: Add explorers to reference
 | 
						* Documentation: Add explorers to reference
 | 
				
			||||||
	* Documentation: Typo cleanup (Derek Brost)
 | 
						* Documentation: Typo cleanup (Derek Brost)
 | 
				
			||||||
	* Type __key_value: Bugfix (Steven Armstrong)
 | 
						* Type __key_value: Bugfix (Steven Armstrong)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										12
									
								
								doc/dev/benchmark-parallel-deploy
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								doc/dev/benchmark-parallel-deploy
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					outfile="$1"; shift
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(
 | 
				
			||||||
 | 
					   for host in "$@"; do
 | 
				
			||||||
 | 
					      hosts="$hosts $host"
 | 
				
			||||||
 | 
					      cdist config -c ~/p/cdist-nutzung -p $hosts 2>&1
 | 
				
			||||||
 | 
					   done
 | 
				
			||||||
 | 
					) | tee "$outfile"
 | 
				
			||||||
 | 
					echo "----------"
 | 
				
			||||||
 | 
					grep 'INFO: Total processing time for' "$outfile" | sed 's/.*: //'
 | 
				
			||||||
							
								
								
									
										7
									
								
								doc/dev/fancy-ideas
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								doc/dev/fancy-ideas
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					== types with namespaces ==
 | 
				
			||||||
 | 
					- allow types to have namespaces, e.g.
 | 
				
			||||||
 | 
					   __path/my/type
 | 
				
			||||||
 | 
					implemented as a proof of concept at:
 | 
				
			||||||
 | 
					https://github.com/asteven/cdist/tree/type-namespaces
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								doc/dev/lastchanges
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										24
									
								
								doc/dev/lastchanges
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2011 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/>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Show the lastest changes from this (upcoming) release
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					awk '/^$/ { exit } { print $0 } END { print "-----" }' < "${0%/*}/../changelog"
 | 
				
			||||||
							
								
								
									
										2
									
								
								doc/dev/logs/2011-04-20.slashdot-articles
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								doc/dev/logs/2011-04-20.slashdot-articles
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					http://slashdot.org/submission/1533922/cdist-162---usable-configuration-management
 | 
				
			||||||
 | 
					http://slashdot.org/submission/1522134/Cdist-Configuration-management-that-makes-fun#
 | 
				
			||||||
							
								
								
									
										7
									
								
								doc/dev/logs/2011-04-21.benchmark-eth
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								doc/dev/logs/2011-04-21.benchmark-eth
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					cdist-mass-deploy -p ikq02.ethz.ch; 142
 | 
				
			||||||
 | 
					cdist-mass-deploy -p ikq02.ethz.ch ikq03.ethz.ch; 194
 | 
				
			||||||
 | 
					cdist-mass-deploy -p ikq02.ethz.ch ikq03.ethz.ch ikq04.ethz.ch; 271
 | 
				
			||||||
 | 
					cdist-mass-deploy -p ikq02.ethz.ch ikq03.ethz.ch ikq04.ethz.ch ikq05.ethz.ch; 328
 | 
				
			||||||
 | 
					cdist-mass-deploy -p ikq02.ethz.ch ikq03.ethz.ch ikq04.ethz.ch ikq05.ethz.ch ikq06.ethz.ch; 456
 | 
				
			||||||
 | 
					cdist-mass-deploy -p ikq02.ethz.ch ikq03.ethz.ch ikq04.ethz.ch ikq05.ethz.ch ikq06.ethz.ch ikq07.ethz.ch; 568
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										56
									
								
								doc/dev/logs/2011-04-27.benchmark
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								doc/dev/logs/2011-04-27.benchmark
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					% x200
 | 
				
			||||||
 | 
					data = [ 1 104; 2 129; 6 249 ; 25 1267  ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% x201, 4.2.2.4 dns, eth
 | 
				
			||||||
 | 
					data = [ 1 143; 2 159; 3 198; 4 244; 5 299; 6 350; 7 435; 8 429 ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% x201, von zuhause aus
 | 
				
			||||||
 | 
					data2 = [ 226 242 275 296 306 357 403 400 409 685 617 672 ]
 | 
				
			||||||
 | 
					plot(0:size(data)(2)-1, data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					hold off;
 | 
				
			||||||
 | 
					plot(data(:,1), data(:,2))
 | 
				
			||||||
 | 
					% per host time:
 | 
				
			||||||
 | 
					data(:,2)' ./ data(:,1)'
 | 
				
			||||||
 | 
					hold on;
 | 
				
			||||||
 | 
					plot(data(:,1), data(:,2)' ./ data(:,1)')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Testing on
 | 
				
			||||||
 | 
					   Intel(R) Core(TM)2 Duo CPU     P8400  @ 2.26GHz
 | 
				
			||||||
 | 
					   4 GiB RAM
 | 
				
			||||||
 | 
					   Intel Gbit Nic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- 169 objects, all done (i.e. rerun)
 | 
				
			||||||
 | 
					- runs are cpu bound
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1 host:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					core: cdist 1.6.2: Successfully finished run
 | 
				
			||||||
 | 
					Run: 104s (1 minutes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2 hosts:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[13:48] kr:cdist-nutzung% mytime cdist-mass-deploy -p ikq03.ethz.ch ikq04.ethz.ch              
 | 
				
			||||||
 | 
					Run: 129s (2 minutes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					6 hosts: (7 specified, but ikq01.ethz.ch is dead)
 | 
				
			||||||
 | 
					cdist-mass-deploy -p ikq01.ethz.ch ikq02.ethz.ch ikq03.ethz.ch ikq04.ethz.ch ikq05.ethz.ch ikq06.ethz.ch ikq07.ethz.ch
 | 
				
			||||||
 | 
					Run: 294s (4 minutes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					25 hosts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[13:58] kr:cdist-nutzung% mytime cdist-mass-deploy -p $(sed 's/^root@//' ~/.dsh/group/ikr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Run: 723s (12 minutes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					25 hosts without proxy command now:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Run: 1267s (21 minutes)
 | 
				
			||||||
 | 
					Run: 1212s (20 minutes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[14:11] kr:cdist-nutzung% mytime cdist-mass-deploy -p $(sed 's/^root@//' ~/.dsh/group/ikr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								doc/dev/logs/2011-04-27.benchmark.dash
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								doc/dev/logs/2011-04-27.benchmark.dash
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					Run: 78s (1 minutes)
 | 
				
			||||||
 | 
					[13:25] kr:cdist-nutzung% mytime cdist-deploy-to ikq02.ethz.ch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% mit dash, eth, x201, Mit Apr 27 13:41:49 CEST 2011
 | 
				
			||||||
 | 
					data = [ 0 73 77 89 107 130 151 180 197 228 251 260 199 295 335 276 ]
 | 
				
			||||||
 | 
					plot(0:size(data2)(2)-1, data2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										1725
									
								
								doc/dev/logs/2011-04-27.debug-timing
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1725
									
								
								doc/dev/logs/2011-04-27.debug-timing
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										20
									
								
								doc/dev/logs/2011-06-24.cinst_preos
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								doc/dev/logs/2011-06-24.cinst_preos
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					- new executable cinst-deploy-to
 | 
				
			||||||
 | 
					- types used by cinst are marked as such ('cinst-only')
 | 
				
			||||||
 | 
					- cdist-deploy-to and cinst-deploy-to read the same manifest
 | 
				
			||||||
 | 
					- cdist ignores types marked as 'cinst-only'
 | 
				
			||||||
 | 
					- cinst ignores types not marked as 'cinst-only'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- update $__explorer/os to recognize preos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- cinst types will ONLY BE CALLED if $__explorer/os == 'preos'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					cinst types:
 | 
				
			||||||
 | 
					__partition_msdos /dev/sda1 --type 83 --size 100M --bootable
 | 
				
			||||||
 | 
					__partition_msdos /dev/sda2 --type 82 --size 512M
 | 
				
			||||||
 | 
					__fs_jfs /dev/sda1 --args "-c -q"
 | 
				
			||||||
 | 
					__fstab_entry /dev/sda1 --type jfs --mountpoint / --options noatime --freq 0 --passno 0
 | 
				
			||||||
 | 
					__fstab_entry /dev/sda2 --type swap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								doc/dev/logs/2011-06-25.trigger-graphic
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								doc/dev/logs/2011-06-25.trigger-graphic
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					client -------------------> trigger via ssh ----------> server
 | 
				
			||||||
 | 
					                                                      ~/.ssh/authorized_keys
 | 
				
			||||||
 | 
					                                                      -> cdist-deploy-to <da-wo-ich-herkomme>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ssh -R 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					server -> via cdist-deploy-to -> client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cdist-mass-deploy -p <host a .. host b...>
 | 
				
			||||||
							
								
								
									
										4
									
								
								doc/dev/logs/2011-09-08.obsolete_debugging
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								doc/dev/logs/2011-09-08.obsolete_debugging
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					Debugging cdist:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[0:13] kr:cdist-nutzung% ./local/update-local-core && __cdist_debug=1 __cdist_local_base_dir=/tmp/cdist cdist-deploy-to ikq04.ethz.ch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										110
									
								
								doc/dev/logs/2011-09-12
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								doc/dev/logs/2011-09-12
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,110 @@
 | 
				
			||||||
 | 
					Benchmark from home/X201 (2 cores, 4 threads):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   ikq (1): 72.192397 
 | 
				
			||||||
 | 
					   ikq (2): INFO: Total processing time for 2 hosts: 74.1845
 | 
				
			||||||
 | 
					   ikq* (6): INFO: Total processing time: 117.572312
 | 
				
			||||||
 | 
					   ikq* + ikr3 (9): INFO: Total processing time: 120.307662
 | 
				
			||||||
 | 
					   ikq* + ikr (14): INFO: Total processing time: 139.769807
 | 
				
			||||||
 | 
					   ikq* + ikr (18): INFO: Total processing time: 186.354398
 | 
				
			||||||
 | 
					   ikq* + ikr (22): INFO: Total processing time: 225.793533
 | 
				
			||||||
 | 
					   ikq* + ikr (26): INFO: Total processing time: 237.06687
 | 
				
			||||||
 | 
					   ikq* + ikr (31): INFO: Total processing time: 276.912414
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ikr07.ethz.ch ikr09.ethz.ch ikr10.ethz.ch ikr11.ethz.ch
 | 
				
			||||||
 | 
					ikr13.ethz.ch ikr14.ethz.ch ikr15.ethz.ch ikr16.ethz.ch
 | 
				
			||||||
 | 
					ikr17.ethz.ch ikr19.ethz.ch ikr20.ethz.ch ikr21.ethz.ch
 | 
				
			||||||
 | 
					ikr23.ethz.ch ikr24.ethz.ch ikr25.ethz.ch ikr26.ethz.ch
 | 
				
			||||||
 | 
					ikr27.ethz.ch ikr28.ethz.ch ikr29.ethz.ch ikr30.ethz.ch
 | 
				
			||||||
 | 
					ikr31.ethz.ch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cdist -c ~/p/cdist-nutzung -p ikq02.ethz.ch ikq03.ethz.ch ikq04.ethz.ch ikq05.ethz.ch ikq06.ethz.ch ikq07.ethz.ch ikr01.ethz.ch ikr02.ethz.ch ikr03.ethz.ch ikr05.ethz.ch ikr07.ethz.ch ikr09.ethz.ch ikr10.ethz.ch ikr11.ethz.ch ikr13.ethz.ch ikr14.ethz.ch ikr15.ethz.ch ikr16.ethz.ch ikr17.ethz.ch ikr19.ethz.ch ikr20.ethz.ch ikr21.ethz.ch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					INFO: Total processing time for 1 hosts: 72.166661
 | 
				
			||||||
 | 
					INFO: Total processing time for 2 hosts: 76.633228
 | 
				
			||||||
 | 
					INFO: Total processing time for 3 host(s): 77.199817
 | 
				
			||||||
 | 
					INFO: Total processing time for 4 host(s): 94.045175
 | 
				
			||||||
 | 
					INFO: Total processing time for 5 host(s): 103.226354
 | 
				
			||||||
 | 
					INFO: Total processing time for 6 host(s): 107.76097
 | 
				
			||||||
 | 
					INFO: Total processing time for 7 host(s): 101.571705
 | 
				
			||||||
 | 
					INFO: Total processing time for 8 host(s): 107.600093
 | 
				
			||||||
 | 
					INFO: Total processing time for 9 host(s): 116.500371
 | 
				
			||||||
 | 
					INFO: Total processing time for 10 host(s): 119.445805
 | 
				
			||||||
 | 
					INFO: Total processing time for 11 host(s): 123.944385
 | 
				
			||||||
 | 
					INFO: Total processing time for 12 host(s): 130.499098
 | 
				
			||||||
 | 
					INFO: Total processing time for 13 host(s): 137.250861
 | 
				
			||||||
 | 
					INFO: Total processing time for 14 host(s): 154.9841
 | 
				
			||||||
 | 
					INFO: Total processing time for 15 host(s): 139.659637
 | 
				
			||||||
 | 
					INFO: Total processing time for 16 host(s): 142.70005
 | 
				
			||||||
 | 
					INFO: Total processing time for 17 host(s): 148.541452
 | 
				
			||||||
 | 
					INFO: Total processing time for 18 host(s): 159.360809
 | 
				
			||||||
 | 
					INFO: Total processing time for 19 host(s): 171.907864
 | 
				
			||||||
 | 
					INFO: Total processing time for 20 host(s): 178.76695
 | 
				
			||||||
 | 
					INFO: Total processing time for 21 host(s): 183.856671
 | 
				
			||||||
 | 
					INFO: Total processing time for 22 host(s): 194.504221
 | 
				
			||||||
 | 
					INFO: Total processing time for 23 host(s): 207.314842
 | 
				
			||||||
 | 
					INFO: Total processing time for 24 host(s): 215.846502
 | 
				
			||||||
 | 
					INFO: Total processing time for 25 host(s): 217.223581
 | 
				
			||||||
 | 
					INFO: Total processing time for 26 host(s): 238.591705
 | 
				
			||||||
 | 
					INFO: Total processing time for 27 host(s): 238.478493
 | 
				
			||||||
 | 
					INFO: Total processing time for 28 host(s): 246.058718
 | 
				
			||||||
 | 
					INFO: Total processing time for 29 host(s): 264.208372
 | 
				
			||||||
 | 
					INFO: Total processing time for 30 host(s): 265.560685
 | 
				
			||||||
 | 
					INFO: Total processing time for 31 host(s): 282.264488
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					Use:
 | 
				
			||||||
 | 
					   grep "^INFO: Total processing time" doc/dev/logs/2011-09-12 | sed 's/.*: //'
 | 
				
			||||||
 | 
					   octave
 | 
				
			||||||
 | 
					      times = [ /* paste here ]
 | 
				
			||||||
 | 
					      plot(times)
 | 
				
			||||||
 | 
					      # keep the graph
 | 
				
			||||||
 | 
					      hold on
 | 
				
			||||||
 | 
					      # Scale linearly with the single host value
 | 
				
			||||||
 | 
					      plot((1:31)*times(1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					octave
 | 
				
			||||||
 | 
					time = [
 | 
				
			||||||
 | 
					72.166661
 | 
				
			||||||
 | 
					76.633228
 | 
				
			||||||
 | 
					77.199817
 | 
				
			||||||
 | 
					94.045175
 | 
				
			||||||
 | 
					103.226354
 | 
				
			||||||
 | 
					107.76097
 | 
				
			||||||
 | 
					101.571705
 | 
				
			||||||
 | 
					107.600093
 | 
				
			||||||
 | 
					116.500371
 | 
				
			||||||
 | 
					119.445805
 | 
				
			||||||
 | 
					123.944385
 | 
				
			||||||
 | 
					130.499098
 | 
				
			||||||
 | 
					137.250861
 | 
				
			||||||
 | 
					154.9841
 | 
				
			||||||
 | 
					139.659637
 | 
				
			||||||
 | 
					142.70005
 | 
				
			||||||
 | 
					148.541452
 | 
				
			||||||
 | 
					159.360809
 | 
				
			||||||
 | 
					171.907864
 | 
				
			||||||
 | 
					178.76695
 | 
				
			||||||
 | 
					183.856671
 | 
				
			||||||
 | 
					194.504221
 | 
				
			||||||
 | 
					207.314842
 | 
				
			||||||
 | 
					215.846502
 | 
				
			||||||
 | 
					217.223581
 | 
				
			||||||
 | 
					238.591705
 | 
				
			||||||
 | 
					238.478493
 | 
				
			||||||
 | 
					246.058718
 | 
				
			||||||
 | 
					264.208372
 | 
				
			||||||
 | 
					265.560685
 | 
				
			||||||
 | 
					282.264488
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					plot(times, "-;cdist;", times(1)*[1:length(times)]', "-;linear;")
 | 
				
			||||||
 | 
					title("Configuration duration (cdist-2.0.0-rc4)")
 | 
				
			||||||
 | 
					ylabel("Number of hosts")
 | 
				
			||||||
 | 
					xlabel("Time in seconds")
 | 
				
			||||||
 | 
					print('cdist-2.0.0-rc4.png', '-dpng')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										6960
									
								
								doc/dev/logs/2011-09-12.benchmark-home
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6960
									
								
								doc/dev/logs/2011-09-12.benchmark-home
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										3
									
								
								doc/dev/logs/2011-09-13
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								doc/dev/logs/2011-09-13
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					Name for installer:
 | 
				
			||||||
 | 
					   installer (flag)
 | 
				
			||||||
 | 
					   $__installer (variable) - gesetzt oder nicht
 | 
				
			||||||
							
								
								
									
										63
									
								
								doc/dev/logs/2011-09-16.benchmark-r815-no-control-socket
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								doc/dev/logs/2011-09-16.benchmark-r815-no-control-socket
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,63 @@
 | 
				
			||||||
 | 
					48 core
 | 
				
			||||||
 | 
					model name      : AMD Opteron(tm) Processor 6174
 | 
				
			||||||
 | 
					128 GB RAM
 | 
				
			||||||
 | 
					Dell  PowerEdge R815
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					root@sgs-r815-01:~/cdist-nutzung# grep "Total processing time for"  deploy-all-benchmark-noikr13
 | 
				
			||||||
 | 
					INFO: Total processing time for 1 host(s): 257.641541
 | 
				
			||||||
 | 
					INFO: Total processing time for 2 host(s): 257.025783
 | 
				
			||||||
 | 
					INFO: Total processing time for 3 host(s): 258.933088
 | 
				
			||||||
 | 
					INFO: Total processing time for 4 host(s): 259.253074
 | 
				
			||||||
 | 
					INFO: Total processing time for 5 host(s): 260.331896
 | 
				
			||||||
 | 
					INFO: Total processing time for 6 host(s): 262.051349
 | 
				
			||||||
 | 
					INFO: Total processing time for 7 host(s): 323.820878
 | 
				
			||||||
 | 
					INFO: Total processing time for 8 host(s): 329.081856
 | 
				
			||||||
 | 
					INFO: Total processing time for 9 host(s): 333.346278
 | 
				
			||||||
 | 
					INFO: Total processing time for 10 host(s): 334.832419
 | 
				
			||||||
 | 
					INFO: Total processing time for 11 host(s): 330.572375
 | 
				
			||||||
 | 
					INFO: Total processing time for 12 host(s): 331.726628
 | 
				
			||||||
 | 
					INFO: Total processing time for 13 host(s): 331.740591
 | 
				
			||||||
 | 
					INFO: Total processing time for 14 host(s): 331.237139
 | 
				
			||||||
 | 
					INFO: Total processing time for 15 host(s): 331.718861
 | 
				
			||||||
 | 
					INFO: Total processing time for 16 host(s): 332.374645
 | 
				
			||||||
 | 
					INFO: Total processing time for 17 host(s): 331.510445
 | 
				
			||||||
 | 
					INFO: Total processing time for 18 host(s): 332.030743
 | 
				
			||||||
 | 
					INFO: Total processing time for 19 host(s): 332.193198
 | 
				
			||||||
 | 
					INFO: Total processing time for 20 host(s): 333.933765
 | 
				
			||||||
 | 
					INFO: Total processing time for 21 host(s): 335.292953
 | 
				
			||||||
 | 
					INFO: Total processing time for 22 host(s): 337.253608
 | 
				
			||||||
 | 
					INFO: Total processing time for 23 host(s): 337.831493
 | 
				
			||||||
 | 
					INFO: Total processing time for 24 host(s): 339.024737
 | 
				
			||||||
 | 
					INFO: Total processing time for 25 host(s): 343.515044
 | 
				
			||||||
 | 
					INFO: Total processing time for 26 host(s): 339.759678
 | 
				
			||||||
 | 
					INFO: Total processing time for 27 host(s): 339.378998
 | 
				
			||||||
 | 
					INFO: Total processing time for 28 host(s): 339.640378
 | 
				
			||||||
 | 
					INFO: Total processing time for 29 host(s): 340.885614
 | 
				
			||||||
 | 
					INFO: Total processing time for 30 host(s): 341.836923
 | 
				
			||||||
 | 
					INFO: Total processing time for 31 host(s): 343.825758
 | 
				
			||||||
 | 
					INFO: Total processing time for 32 host(s): 344.176089
 | 
				
			||||||
 | 
					INFO: Total processing time for 33 host(s): 345.408518
 | 
				
			||||||
 | 
					INFO: Total processing time for 34 host(s): 347.15322
 | 
				
			||||||
 | 
					INFO: Total processing time for 35 host(s): 351.330649
 | 
				
			||||||
 | 
					INFO: Total processing time for 36 host(s): 347.640758
 | 
				
			||||||
 | 
					INFO: Total processing time for 37 host(s): 347.381126
 | 
				
			||||||
 | 
					INFO: Total processing time for 38 host(s): 347.053406
 | 
				
			||||||
 | 
					INFO: Total processing time for 39 host(s): 347.453166
 | 
				
			||||||
 | 
					INFO: Total processing time for 40 host(s): 347.84804
 | 
				
			||||||
 | 
					INFO: Total processing time for 41 host(s): 349.035272
 | 
				
			||||||
 | 
					INFO: Total processing time for 42 host(s): 349.41507
 | 
				
			||||||
 | 
					INFO: Total processing time for 43 host(s): 351.208072
 | 
				
			||||||
 | 
					INFO: Total processing time for 44 host(s): 351.788401
 | 
				
			||||||
 | 
					INFO: Total processing time for 45 host(s): 351.730259
 | 
				
			||||||
 | 
					INFO: Total processing time for 46 host(s): 515.693497
 | 
				
			||||||
 | 
					INFO: Total processing time for 47 host(s): 352.702677
 | 
				
			||||||
 | 
					INFO: Total processing time for 48 host(s): 353.418003
 | 
				
			||||||
 | 
					INFO: Total processing time for 49 host(s): 355.07111
 | 
				
			||||||
 | 
					INFO: Total processing time for 50 host(s): 354.622388
 | 
				
			||||||
 | 
					INFO: Total processing time for 51 host(s): 355.192521
 | 
				
			||||||
 | 
					INFO: Total processing time for 52 host(s): 355.283238
 | 
				
			||||||
 | 
					INFO: Total processing time for 53 host(s): 358.112329
 | 
				
			||||||
 | 
					INFO: Total processing time for 54 host(s): 357.717426
 | 
				
			||||||
 | 
					INFO: Total processing time for 55 host(s): 357.748707
 | 
				
			||||||
 | 
					INFO: Total processing time for 56 host(s): 358.902118
 | 
				
			||||||
 | 
					INFO: Total processing time for 57 host(s): 367.817594
 | 
				
			||||||
							
								
								
									
										1373
									
								
								doc/dev/logs/2011-09-16.benchmark-r815-no-control-socket.dmidecode
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1373
									
								
								doc/dev/logs/2011-09-16.benchmark-r815-no-control-socket.dmidecode
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										3
									
								
								doc/dev/logs/2011-10-04
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								doc/dev/logs/2011-10-04
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					Testing for single tests:
 | 
				
			||||||
 | 
					   PYTHONPATH=$PYTHONPATH:$(pwd -P)/lib python3 -m unittest cdist.test.test_install.Install.test_explorer_ran
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										116
									
								
								doc/dev/logs/2011-10-05
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								doc/dev/logs/2011-10-05
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					Config/Install/Deploy/Run:
 | 
				
			||||||
 | 
					   target host
 | 
				
			||||||
 | 
					   remote_cmd_prefix - ssh user@bla sudo foo?????
 | 
				
			||||||
 | 
					   remote_cp_prefix - cp statt scp oder so
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   debug -> env für alles += __debug
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Storage/Metaobject/Tree? == Path?
 | 
				
			||||||
 | 
					   base_dir?
 | 
				
			||||||
 | 
					   nimmt objekte
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Sammelt Objekte
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Ist prepared hier?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Object
 | 
				
			||||||
 | 
					   "Infos" / Datenhalde
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Base_Dir-Abhängigkeit? - wo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   out_dir - wo speichern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   nur eigenes verzeichnis interessant?
 | 
				
			||||||
 | 
					      -> nicht für shell code / aka gencode!
 | 
				
			||||||
 | 
					      -> __global abhängigkeit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   object.gencode()?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   hast du type-explorer?
 | 
				
			||||||
 | 
					      ja?
 | 
				
			||||||
 | 
					         führe JEDEN remote aus
 | 
				
			||||||
 | 
					         speichere ausgabe in object
 | 
				
			||||||
 | 
					      nein:
 | 
				
			||||||
 | 
					         fertig
 | 
				
			||||||
 | 
					   hast du gencode-{local,remote}?
 | 
				
			||||||
 | 
					      ja?
 | 
				
			||||||
 | 
					         führe local oder remote aus
 | 
				
			||||||
 | 
					         speichere ausgabe in s/^gen//
 | 
				
			||||||
 | 
					      nein:
 | 
				
			||||||
 | 
					         fertig
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					   hast du code-{local,remote}?
 | 
				
			||||||
 | 
					      ja?
 | 
				
			||||||
 | 
					         führe local oder remote aus
 | 
				
			||||||
 | 
					      nein:
 | 
				
			||||||
 | 
					         fertig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   ich habe ...
 | 
				
			||||||
 | 
					      object_id
 | 
				
			||||||
 | 
					      type
 | 
				
			||||||
 | 
					         type.singleton() == False -> require object_id
 | 
				
			||||||
 | 
					      parameter gegeben
 | 
				
			||||||
 | 
					      requirements / order
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   type_explorer := methode zum ausführen?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   cdist.object.Object(type, id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   methoden:
 | 
				
			||||||
 | 
					      gen_code
 | 
				
			||||||
 | 
					      code
 | 
				
			||||||
 | 
					      run_manifest
 | 
				
			||||||
 | 
					         manifest == ort
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Type
 | 
				
			||||||
 | 
					   singleton: ja / nein
 | 
				
			||||||
 | 
					   install: ja / nein
 | 
				
			||||||
 | 
					   type_explorer := liste
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   optional_parameter
 | 
				
			||||||
 | 
					   required_parameter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   TypeExplorer 
 | 
				
			||||||
 | 
					      verwandt oder == explorer
 | 
				
			||||||
 | 
					      Verwandschaft klären!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   sehr abhängig von base_dir!</behauptung :)>
 | 
				
			||||||
 | 
					      - welche gibt es?
 | 
				
			||||||
 | 
					      - was für optionen haben sie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   cdist.type.Type("/path/to/type")
 | 
				
			||||||
 | 
					      Tree/Path vieh, das liste von $_ speichert
 | 
				
			||||||
 | 
					      Einfach iterieren
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Explorer
 | 
				
			||||||
 | 
					   execute(env)
 | 
				
			||||||
 | 
					      env == __explorer -> nur im explorer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					z.B. BaseExplorer oder andersherum GlobalExplorer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Manifest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Exec
 | 
				
			||||||
 | 
					   wrapper um auszuführen, 
 | 
				
			||||||
 | 
					   error handling,
 | 
				
			||||||
 | 
					   output redirection (variable, file, beides, socat :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- base_dir (conf/, type, ...)
 | 
				
			||||||
 | 
					- manifest (initiale)
 | 
				
			||||||
 | 
					   $methode_mit_inhalt_von_manifest?
 | 
				
			||||||
 | 
					      run_manifest(code)
 | 
				
			||||||
 | 
					         ob sinnvoll?
 | 
				
			||||||
 | 
					      geht auch mit stdin oder datei
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      stdin -> muss in tmp-datei, für sh -e?
 | 
				
			||||||
 | 
					- 
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					save output of shell in buffer instead of displaying?
 | 
				
			||||||
 | 
					   -> freedom to decide whether to display or not!
 | 
				
			||||||
							
								
								
									
										30
									
								
								doc/dev/logs/2011-10-06
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								doc/dev/logs/2011-10-06
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					GlobalExplorer
 | 
				
			||||||
 | 
					   list_explorers()
 | 
				
			||||||
 | 
					   list_explorers_names()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   base_dir
 | 
				
			||||||
 | 
					   __init__(name)
 | 
				
			||||||
 | 
					   out_dir
 | 
				
			||||||
 | 
					   env
 | 
				
			||||||
 | 
					   name = id
 | 
				
			||||||
 | 
					   path
 | 
				
			||||||
 | 
					   return_code
 | 
				
			||||||
 | 
					   return_value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					Exec:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					normal:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					scp /from/where $USER@$HOST:REMOTE_BASE/cdist-internal
 | 
				
			||||||
 | 
					ssh $USER@$HOST MY_CMD_THAT_NEEDS_TO_RUN_IN_BIN_SH (including ENV)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sudo:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					scp $USER@$HOST:REMOTE_BASE/cdist-internal
 | 
				
			||||||
 | 
					ssh $USER@$HOST sudo MY_CMD_THAT_NEEDS_TO_RUN_IN_BIN_SH (including ENV)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chroot:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sudo] cp file /chroot/THE_HOST_BASE/REMOTE_BASE/cdist-internal
 | 
				
			||||||
 | 
					[sudo] chroot /chroot MY_CMD_THAT_NEEDS_TO_RUN_IN_BIN_SH (including ENV)
 | 
				
			||||||
							
								
								
									
										87
									
								
								doc/dev/logs/2011-10-06.ssh_scp_sudo_chroot
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								doc/dev/logs/2011-10-06.ssh_scp_sudo_chroot
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,87 @@
 | 
				
			||||||
 | 
					Commands needed:
 | 
				
			||||||
 | 
					   conf/cmd/remote_exec
 | 
				
			||||||
 | 
					   conf/cmd/copy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If ! conf/cmd/remote_exec:
 | 
				
			||||||
 | 
					   use builtin
 | 
				
			||||||
 | 
					If ! conf/cmd/copy:
 | 
				
			||||||
 | 
					   use builtin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--cmd-dir?
 | 
				
			||||||
 | 
					$__cdist_cmd_dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					   -> Depend on session!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Builtin:
 | 
				
			||||||
 | 
					        cdist.exec.run_or_fail(["scp", "-qr", source, 
 | 
				
			||||||
 | 
					                                self.remote_user + "@" + 
 | 
				
			||||||
 | 
					                                self.target_host + ":" + 
 | 
				
			||||||
 | 
					                                destination])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					self.remote_prefix = ["ssh", self.remote_user + "@" + self.target_host]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.remote_user = remote_user
 | 
				
			||||||
 | 
					        self.remote_prefix = remote_prefix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					What is in a session?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   base_dir
 | 
				
			||||||
 | 
					   target_host
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					remote_user 
 | 
				
			||||||
 | 
					   pseudo-static, can be hardcoded again
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Result:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					os.environ['__remote_exec'] = ["ssh", "-l", "root" ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					os.environ['__remote_exec'] = ["ssh", "-o", "User=root" ]
 | 
				
			||||||
 | 
					os.environ['__remote_copy'] = ["scp", "-o", "User=root" ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__remote_exec=~/sudossh __remote_copy=... cdist config localhost
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					~/sudossh hostname $@...
 | 
				
			||||||
 | 
					~/sudocopy a hostname:b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					~/chrootssh
 | 
				
			||||||
 | 
					~/chrootcopy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a)
 | 
				
			||||||
 | 
					   3 cmd verzeichnnise: cdist, sudo, chroot
 | 
				
			||||||
 | 
					   pro aufruf variable ändern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					b)
 | 
				
			||||||
 | 
					   1 dir, mit zeug
 | 
				
			||||||
 | 
					   pro aufruf variablen ändern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					conf/cmd/remote_exec 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					args for __remote_exec
 | 
				
			||||||
 | 
					   $1 = hostname
 | 
				
			||||||
 | 
					   $2 - ...  = stuff to be executed in /bin/sh on remote side
 | 
				
			||||||
 | 
					   $2 - $7 = env
 | 
				
			||||||
 | 
					   $7 - 12 = cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					args for __remote_copy
 | 
				
			||||||
 | 
					   $1 = file here
 | 
				
			||||||
 | 
					   $2 = hostname:destination
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					There needs to be an easy way to change those cmds!
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					Env-Passing:
 | 
				
			||||||
 | 
					   _a=b test -> test can access $_a
 | 
				
			||||||
 | 
					   _a=b test $_a -> $1 = "", because _a is *not* set within the shell
 | 
				
			||||||
 | 
					   _a=b; test -> can access $_a
 | 
				
			||||||
 | 
					   _a=b; test $_a -> $1 == "b"
 | 
				
			||||||
							
								
								
									
										8
									
								
								doc/dev/logs/2011-10-11.emulator-output
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								doc/dev/logs/2011-10-11.emulator-output
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					Debug:
 | 
				
			||||||
 | 
					DEBUG: Namespace(name=None, state='installed')
 | 
				
			||||||
 | 
					DEBUG: Object output dir = /home/users/nico/.tmp/tmpsdaonx/out/object/__package_pacman/zsh/.cdist
 | 
				
			||||||
 | 
					DEBUG: Object param dir = /home/users/nico/.tmp/tmpsdaonx/out/object/__package_pacman/zsh/.cdist/parameter
 | 
				
			||||||
 | 
					DEBUG: /home/users/nico/.tmp/tmpsdaonx/out/object/__package_pacman/zsh/.cdist/parameter/state<-state = installed
 | 
				
			||||||
 | 
					DEBUG: zsh:Writing requirements: 
 | 
				
			||||||
 | 
					DEBUG: Finished __package_pacman/zsh{'state': 'installed', 'name': None}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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