fix merge conflict in changelog
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
commit
59e774b08d
43 changed files with 916 additions and 480 deletions
18
Makefile
18
Makefile
|
@ -8,22 +8,19 @@ A2X=a2x -f manpage --no-xmllint
|
|||
WEBDIR=$$HOME/niconetz
|
||||
WEBPAGE=software/cdist.mdwn
|
||||
|
||||
# Documentation
|
||||
MANDIR=doc/man
|
||||
# Unchecked
|
||||
MANSRC=$(MANDIR)/cdist-config-layout.text \
|
||||
$(MANDIR)/cdist-config.text \
|
||||
$(MANDIR)/cdist-quickstart.text \
|
||||
$(MANDIR)/cdist-stages.text \
|
||||
$(MANDIR)/cdist-terms.text \
|
||||
|
||||
# Clean documentation
|
||||
MANGENERATED=$(MANDIR)/cdist-reference.text
|
||||
|
||||
MANSRC=$(MANDIR)/cdist.text \
|
||||
$(MANDIR)/cdist-bin-transfer.text \
|
||||
$(MANDIR)/cdist-config.text \
|
||||
$(MANDIR)/cdist-dir.text \
|
||||
$(MANDIR)/cdist-env.text \
|
||||
$(MANDIR)/cdist-deploy-to.text \
|
||||
$(MANDIR)/cdist-explorer.text \
|
||||
$(MANDIR)/cdist-manifest.text \
|
||||
$(MANDIR)/cdist-quickstart.text \
|
||||
$(MANDIR)/cdist-stages.text \
|
||||
$(MANDIR)/cdist-type.text \
|
||||
$(MANDIR)/cdist-type-template.text \
|
||||
|
@ -39,7 +36,7 @@ all:
|
|||
@echo ''
|
||||
@echo 'Here are the possible targets:'
|
||||
@echo ''
|
||||
@echo ' man: Build manpages'
|
||||
@echo ' man: Build manpages (requires Asciidoc (a2x binary))'
|
||||
@echo ' clean: Remove build stuff'
|
||||
@echo ''
|
||||
@echo ''
|
||||
|
@ -89,9 +86,10 @@ test:
|
|||
.rsync nicosc@ru3.inf.ethz.ch:cdist
|
||||
|
||||
web:
|
||||
cp REAL_README $(WEBDIR)/$(WEBPAGE)
|
||||
cp README $(WEBDIR)/$(WEBPAGE)
|
||||
cd $(WEBDIR) && git commit -m "cdist update" $(WEBPAGE)
|
||||
cd $(WEBDIR) && make pub
|
||||
|
||||
pub:
|
||||
git push --mirror
|
||||
git push --mirror github
|
||||
|
|
1
README
1
README
|
@ -1 +0,0 @@
|
|||
REAL_README
|
198
README
Normal file
198
README
Normal file
|
@ -0,0 +1,198 @@
|
|||
[[!meta title="cdist - configuration management"]]
|
||||
|
||||
|
||||
.. . .x+=:. s
|
||||
dF @88> z` ^% :8
|
||||
'88bu. %8P . <k .88
|
||||
. '*88888bu . .@8Ned8" :888ooo
|
||||
.udR88N ^"*8888N .@88u .@^%8888" -*8888888
|
||||
<888'888k beWE "888L ''888E` x88: `)8b. 8888
|
||||
9888 'Y" 888E 888E 888E 8888N=*8888 8888
|
||||
9888 888E 888E 888E %8" R88 8888
|
||||
9888 888E 888F 888E @8Wou 9% .8888Lu=
|
||||
?8888u../ .888N..888 888& .888888P` ^%888*
|
||||
"8888P' `"888*"" R888" ` ^"F 'Y"
|
||||
"P' "" ""
|
||||
|
||||
|
||||
[[!toc levels=2]]
|
||||
|
||||
## Introduction
|
||||
|
||||
cdist configures your system and is similar to
|
||||
other configuration management systems like
|
||||
[cfengine](http://www.cfengine.org/),
|
||||
[bcfg2](http://trac.mcs.anl.gov/projects/bcfg2),
|
||||
[chef](http://wiki.opscode.com/display/chef/)
|
||||
and [puppet](http://www.puppetlabs.com/), but
|
||||
it ticks differently:
|
||||
|
||||
* cdist sticks completly to the KISS (keep it simple and stupid) paradigma
|
||||
* cdist's core is very small (< 1k lines of code)
|
||||
* There is only one type to extend cdist called ***type***.
|
||||
* One main development target: ***It must be incredible easy to add new types.***
|
||||
* cdist is UNIX
|
||||
* It reuses existing tools like cat, find, mv, ...
|
||||
* cdist's documentation is bundled as manpages
|
||||
* cdist is written in POSIX shell
|
||||
* No special requirements like high level interpreters needed on server or target
|
||||
|
||||
### Architecture
|
||||
|
||||
* Push mode (server pushes configuration)
|
||||
* User defines configuration in shell scripts (called ***manifests***)
|
||||
* Generates internal configuration (cconfig style)
|
||||
* Uses ***types*** to generate code be executed on the target
|
||||
* And finally executes the code on the target / applies the configuration
|
||||
|
||||
### Features
|
||||
|
||||
Stuff that should probably be included in every configuration management,
|
||||
but is not. Or: Why I began to write cdist:
|
||||
|
||||
* Speed
|
||||
* Elegant code
|
||||
* Clean design
|
||||
* Good documentation (man pages)
|
||||
* Meaningful error messages
|
||||
* The no surprise factor
|
||||
* Consistency in behaviour, naming and documentation
|
||||
* Easy integration into bare metal installations
|
||||
* Simple and well-known DSL: posix shell
|
||||
* It must be very easy to extend and debug cdist
|
||||
* Focus on reuse of existing functionality (like sh, ssh, find, rm, ...)
|
||||
* Easy upgrade: ***There is no need to update cdist on target hosts!***
|
||||
* cdist only needs to be update on the master server
|
||||
|
||||
### OS support
|
||||
|
||||
cdist was tested or is know to run on at least
|
||||
|
||||
* [Archlinux](http://www.archlinux.org/)
|
||||
* [Debian](http://www.debian.org/)
|
||||
* [Gentoo](http://www.gentoo.org/)
|
||||
* [Mac OS X](http://www.apple.com/macosx/)
|
||||
* [Redhat](http://www.redhat.com/)
|
||||
* [Ubuntu](http://www.ubuntu.com/)
|
||||
|
||||
|
||||
## Requirements
|
||||
|
||||
### Server
|
||||
|
||||
* A posix like shell
|
||||
* SSH-Client
|
||||
|
||||
### Client ("target host")
|
||||
|
||||
* A posix like shell
|
||||
* SSH-Server
|
||||
|
||||
|
||||
## Getting cdist
|
||||
|
||||
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.
|
||||
|
||||
### Installation
|
||||
|
||||
To install cdist, execute the following commands:
|
||||
|
||||
git clone git://git.schottelius.org/cdist
|
||||
cd cdist
|
||||
export PATH=$PATH:$(pwd -P)/bin
|
||||
|
||||
# If you want the manpages (requires asciidoc to be installed)
|
||||
make man
|
||||
export MANPATH=$MANPATH:$(pwd -P)/doc/man
|
||||
|
||||
|
||||
Afterwards you can run ***cdist-quickstart*** to get an impression on
|
||||
how to use cdist.
|
||||
|
||||
### Available versions
|
||||
|
||||
There are at least the following branches available:
|
||||
|
||||
* master: the development branch
|
||||
* 1.0: First official release
|
||||
* 1.1: Current stable (includes \_\_file type change)
|
||||
|
||||
Other branches may be available for features or bugfixes, but they
|
||||
may vanish at any point. To select a specific branch use
|
||||
|
||||
# Generic code
|
||||
git checkout -b <name> origin/<name>
|
||||
|
||||
# Stay on version 1.1
|
||||
git checkout -b 1.1 origin/1.1
|
||||
|
||||
### Mirrors
|
||||
|
||||
* 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))
|
||||
|
||||
## Update
|
||||
|
||||
To upgrade cdist in the current branch use
|
||||
|
||||
git pull
|
||||
|
||||
# Also update the manpages
|
||||
make man
|
||||
export MANPATH=$MANPATH:$(pwd -P)/doc/man
|
||||
|
||||
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
|
||||
working, break your setup or eat the tree in your garden.
|
||||
|
||||
### Upgrading from 1.0 to 1.1
|
||||
|
||||
In 1.1 the type **\_\_file** was split into **\_\_directory**, **\_\_file** and
|
||||
**\_\_link**. The parameter **--type** was removed from **\_\_file**. Thus you
|
||||
need to replace **\_\_file** calls in your manifests:
|
||||
|
||||
* Remove --type from all \_\_file calls
|
||||
* If type was symlink, use \_\_link and --type symbolic
|
||||
* If type was directory, use \_\_directory
|
||||
|
||||
|
||||
## Support
|
||||
|
||||
### IRC
|
||||
|
||||
You can join the development ***IRC channel***
|
||||
[#cLinux on irc.freenode.org](irc://irc.freenode.org/#cLinux).
|
||||
|
||||
### Mailing list
|
||||
|
||||
Bug reports, questions, patches, etc. should be send to the
|
||||
[cdist mailing list](http://l.schottelius.org/mailman/listinfo/cdist).
|
||||
|
||||
## Used by
|
||||
|
||||
If you're using cdist, feel free to send a report to the mailing list.
|
||||
Interesting information are for instance
|
||||
|
||||
* Which services do you manage?
|
||||
* How many machines do you manage?
|
||||
* What are the pros/cons you see in cdist?
|
||||
* General comments/critics
|
||||
|
||||
### Nico Schottelius, Systems Group ETH Zurich
|
||||
|
||||
Yes, I'm actually eating my own dogfood and currently managing
|
||||
|
||||
* [plone](http://plone.org/) (cms)
|
||||
* [moinmoin](http://moinmo.in/) (wiki)
|
||||
* [apache](http://httpd.apache.org/) (webserver)
|
||||
* [kerberos (mit)](http://web.mit.edu/kerberos/) (authentication)
|
||||
* [ircd-hybrid](http://www.ircd-hybrid.org/) (chat)
|
||||
* [stunnel](http://stunnel.mirt.net/) (SSL tunnel)
|
||||
* [mercurial-server](http://www.lshift.net/mercurial-server.html) (version control)
|
||||
* [xfce](http://www.xfce.org/) (lightweight desktop environment)
|
||||
* [slim](http://slim.berlios.de/) (graphical login manager for X11)
|
||||
|
||||
with cdist on a total of **5** production machines of the
|
||||
[Systems Group](http://www.systems.ethz.ch) at the
|
||||
[ETH Zurich](http://www.ethz.ch).
|
171
REAL_README
171
REAL_README
|
@ -1,171 +0,0 @@
|
|||
[[!meta title="cdist - configuration management"]]
|
||||
|
||||
|
||||
.. . .x+=:. s
|
||||
dF @88> z` ^% :8
|
||||
'88bu. %8P . <k .88
|
||||
. '*88888bu . .@8Ned8" :888ooo
|
||||
.udR88N ^"*8888N .@88u .@^%8888" -*8888888
|
||||
<888'888k beWE "888L ''888E` x88: `)8b. 8888
|
||||
9888 'Y" 888E 888E 888E 8888N=*8888 8888
|
||||
9888 888E 888E 888E %8" R88 8888
|
||||
9888 888E 888F 888E @8Wou 9% .8888Lu=
|
||||
?8888u../ .888N..888 888& .888888P` ^%888*
|
||||
"8888P' `"888*"" R888" ` ^"F 'Y"
|
||||
"P' "" ""
|
||||
|
||||
|
||||
[[!toc levels=2]]
|
||||
|
||||
## Introduction
|
||||
|
||||
cdist configures your system and is similar to
|
||||
other configuration management systems like
|
||||
[cfengine](http://www.cfengine.org/),
|
||||
[bcfg2](http://trac.mcs.anl.gov/projects/bcfg2),
|
||||
[chef](http://wiki.opscode.com/display/chef/)
|
||||
and [puppet](http://www.puppetlabs.com/), but
|
||||
it ticks differently:
|
||||
|
||||
* cdist sticks completly to the KISS (keep it simple and stupid) paradigma
|
||||
* cdist's core is very small (< 1k lines of code)
|
||||
* There is only one type to extend cdist called ***type***.
|
||||
* One main development target: ***It must be incredible easy to add new types.***
|
||||
* cdist is UNIX
|
||||
* It reuses existing tools like cat, find, mv, ...
|
||||
* cdist's documentation is bundled as manpages
|
||||
* cdist is written in POSIX shell
|
||||
* No special requirements like high level interpreters needed on server or target
|
||||
|
||||
### Architecture
|
||||
|
||||
* Push mode (server pushes configuration)
|
||||
* Pull mode planned (client triggers configuration)
|
||||
* User defines configuration in shell scripts (called ***manifests***)
|
||||
* Generates internal configuration (cconfig style)
|
||||
* Uses ***types*** to generate code be executed on the target
|
||||
* And finally executes the code on the target / applies the configuration
|
||||
|
||||
### Features
|
||||
|
||||
Stuff that should probably be included in every configuration management,
|
||||
but is not. Or: The reason why I began to write cdist.
|
||||
|
||||
* Speed
|
||||
* Elegant code
|
||||
* Clean design
|
||||
* Good documentation (man pages)
|
||||
* Meaningful error messages
|
||||
* No surprise factor
|
||||
* Consistency in behaviour, naming and documentation
|
||||
* Easy integration nacked installations
|
||||
* Simple and well-known DSL: posix shell
|
||||
* It is very easy to
|
||||
* extend cdist
|
||||
* debug cdist-core and cdist-types
|
||||
* Focus on reuse of existing functionality
|
||||
* ssh
|
||||
* sh
|
||||
* find, rm, ...
|
||||
|
||||
## Requirements
|
||||
|
||||
### Server
|
||||
|
||||
* A posix like shell
|
||||
* SSH-Client
|
||||
|
||||
### Client ("target host")
|
||||
|
||||
* A posix like shell
|
||||
* SSH-Server
|
||||
|
||||
|
||||
## Getting cdist
|
||||
|
||||
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.
|
||||
|
||||
### Installation
|
||||
|
||||
To install cdist, execute the following commands:
|
||||
|
||||
git clone git://git.schottelius.org/cdist
|
||||
cd cdist
|
||||
export PATH=$PATH:$(pwd -P)/bin
|
||||
|
||||
# If you want the manpages (requires asciidoc to be installed)
|
||||
make man
|
||||
export MANPATH=$MANPATH:$(pwd -P)/doc/man
|
||||
|
||||
|
||||
Afterwards you can run ***cdist-quickstart*** to get an impression on
|
||||
how to use cdist.
|
||||
|
||||
### Available versions
|
||||
|
||||
There are at least two branches available:
|
||||
|
||||
* master: the development branch
|
||||
* 1.0: stable branch of version 1.0
|
||||
|
||||
Other branches may be available as well for features or bugfixes, but they
|
||||
may vanish at any point. To select a specific branch use
|
||||
|
||||
# Generic code
|
||||
git checkout -b <name> origin/<name>
|
||||
|
||||
# Stay on version 1.0
|
||||
git checkout -b 1.0 origin/1.0
|
||||
|
||||
### Update
|
||||
|
||||
To upgrade cdist in the current branch use
|
||||
|
||||
git pull
|
||||
|
||||
# Also update the manpages
|
||||
make man
|
||||
export MANPATH=$MANPATH:$(pwd -P)/doc/man
|
||||
|
||||
|
||||
The version branches are designed to change if there are incompatibilities.
|
||||
Or the other way round: As long as you stay on 1.0 and do git pull, nothing
|
||||
should break.
|
||||
|
||||
## Support
|
||||
|
||||
### IRC
|
||||
|
||||
You can join the development ***IRC channel***
|
||||
[#cLinux on irc.freenode.org](irc://irc.freenode.org/#cLinux).
|
||||
|
||||
### Mailing list
|
||||
|
||||
Bug reports, questions, patches, etc. should be send to the
|
||||
[cdist mailing list](http://l.schottelius.org/mailman/listinfo/cdist).
|
||||
|
||||
## Used by
|
||||
|
||||
If you're using cdist, feel free to send a report to the mailing list.
|
||||
Interesting information are for instance
|
||||
|
||||
* Which services do you manage?
|
||||
* How many machines do you manage?
|
||||
* What are the pros/cons you see in cdist?
|
||||
* General comments/critics
|
||||
|
||||
### Nico Schottelius, Systems Group ETH Zurich
|
||||
|
||||
Yes, I'm actually eating my own dogfood and currently managing
|
||||
|
||||
* [plone](http://plone.org/) (cms)
|
||||
* [moinmoin](http://moinmo.in/) (wiki)
|
||||
* [apache](http://httpd.apache.org/) (webserver)
|
||||
* [kerberos (mit)](http://web.mit.edu/kerberos/) (authentication)
|
||||
* [ircd-hybrid](http://www.ircd-hybrid.org/) (chat)
|
||||
* [stunnel](http://stunnel.mirt.net/) (SSL tunnel)
|
||||
|
||||
with cdist on a total of **3** production servers of the
|
||||
[Systems Group](http://www.systems.ethz.ch) at the
|
||||
[ETH Zurich](http://www.ethz.ch).
|
|
@ -19,7 +19,7 @@
|
|||
#
|
||||
#
|
||||
|
||||
__cdist_version="1.0.3"
|
||||
__cdist_version="1.1.0"
|
||||
|
||||
# Fail if something bogus is going on
|
||||
set -u
|
||||
|
|
|
@ -67,4 +67,4 @@ cdist-dir push "$__cdist_target_host" "$__cdist_out_object_dir" \
|
|||
# And finally - execute the code
|
||||
cdist-code-run-all "$__cdist_target_host"
|
||||
|
||||
echo "Configuration successfully finished for $__cdist_target_host"
|
||||
echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host"
|
||||
|
|
|
@ -18,16 +18,26 @@
|
|||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# Setup environment for use with cdist
|
||||
# Setup environment for use with cdist - must be standalone!
|
||||
#
|
||||
|
||||
. cdist-config
|
||||
[ $# -eq 0 ] || __cdist_usage "no arguments"
|
||||
__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"
|
||||
|
||||
# Allow access to unset variables like PATH and MANPATH
|
||||
set +u
|
||||
|
||||
echo export PATH=$__cdist_abs_mydir:$PATH
|
||||
shell_binary=${SHELL##*/}
|
||||
|
||||
NEWPATH="$__cdist_abs_mydir:$PATH"
|
||||
cd "$__cdist_abs_mydir/../doc/man"
|
||||
echo export MANPATH=$(pwd -P):$MANPATH
|
||||
NEWMANPATH="$(pwd -P):$MANPATH"
|
||||
|
||||
# Match csh, tcsh to handle differently
|
||||
if [ "$(echo $shell_binary | grep 'csh$')" ]; then
|
||||
echo setenv PATH $NEWPATH \;
|
||||
echo setenv MANPATH $NEWMANPATH
|
||||
else
|
||||
echo export PATH=$NEWPATH
|
||||
echo export MANPATH=$NEWMANPATH
|
||||
fi
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
|
||||
# Every machine becomes a marker, so sysadmins know that automatic
|
||||
# configurations are happening
|
||||
__file /etc/cdist-configured --type file
|
||||
__file /etc/cdist-configured
|
||||
|
||||
case "$__target_host" in
|
||||
# Everybody has this
|
||||
localhost)
|
||||
# Usual example
|
||||
__file test --type symlink --source /etc/cdist-configured --destination /tmp/cdist-testfile
|
||||
__link /tmp/cdist-testfile --source /etc/cdist-configured --type symbolic
|
||||
__directory /tmp/cdist-test-dir --mode 4777
|
||||
__file /tmp/cdist-test-file --mode 0750 --owner nobody --group root
|
||||
;;
|
||||
|
||||
#
|
||||
|
@ -36,11 +37,17 @@ case "$__target_host" in
|
|||
# Same stuff for gentoo
|
||||
__package tree --state installed
|
||||
;;
|
||||
|
||||
cdist-debian)
|
||||
__package_apt atop --state installed
|
||||
__package apache2 --state deinstalled
|
||||
;;
|
||||
|
||||
cdist-redhat)
|
||||
__issue
|
||||
__motd
|
||||
;;
|
||||
|
||||
# Real machines may be used with their hostname or fqdn,
|
||||
# depending on how you call cdist-deploy-to
|
||||
# machine)
|
||||
|
|
50
conf/type/__addifnosuchline/man.text
Normal file
50
conf/type/__addifnosuchline/man.text
Normal file
|
@ -0,0 +1,50 @@
|
|||
cdist-type__addifnosuchline(7)
|
||||
==============================
|
||||
Daniel Roth <dani-cdist--@--d-roth.li>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type__addifnosuchline - Add a line (if not existing already)
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
This type can be used to check a file for existence of a
|
||||
specific line and adding it, if it was not found.
|
||||
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
line::
|
||||
Specifies the content which shall be added if not existing.
|
||||
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
file::
|
||||
If supplied, use this as the destination file.
|
||||
Otherwise the object_id is used.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# Creates or appends the line specifiend in "include_www" to the file "lighttpd.conf"
|
||||
__addifnosuchline www --file /etc/lighttpd.conf --line include_www
|
||||
|
||||
# Adds the line "include_git" to the file "lighttpd.conf"
|
||||
__addifnosuchline /etc/lighttpd.conf --line include_git
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
- cdist-type(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2011 Daniel Roth. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
34
conf/type/__directory/explorer/exists
Executable file
34
conf/type/__directory/explorer/exists
Executable file
|
@ -0,0 +1,34 @@
|
|||
#!/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/>.
|
||||
#
|
||||
#
|
||||
# Check whether file exists or not
|
||||
#
|
||||
|
||||
if [ -f "$__object/parameter/destination" ]; then
|
||||
destination="$(cat "$__object/parameter/destination")"
|
||||
else
|
||||
destination="/$__object_id"
|
||||
fi
|
||||
|
||||
if [ -e "$destination" ]; then
|
||||
echo yes
|
||||
else
|
||||
echo no
|
||||
fi
|
57
conf/type/__directory/gencode
Executable file
57
conf/type/__directory/gencode
Executable file
|
@ -0,0 +1,57 @@
|
|||
#!/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/>.
|
||||
#
|
||||
#
|
||||
# Handle directories
|
||||
#
|
||||
#
|
||||
# __directory /etc [--mode --owner --group --parents [yes|no] ]
|
||||
#
|
||||
|
||||
destination="/$__object_id"
|
||||
|
||||
# Include parent directories?
|
||||
if [ -f "$__object/parameter/parents" ]; then
|
||||
parents="$(cat "$__object/parameter/parents")"
|
||||
if [ yes = "$parents" ]; then
|
||||
mkdiropt="-p"
|
||||
else
|
||||
mkdiropt=""
|
||||
fi
|
||||
fi
|
||||
|
||||
# Only create if not already existent
|
||||
if [ no = "$(cat "$__object/explorer/exists")" ]; then
|
||||
echo mkdir $mkdiropt \"$destination\"
|
||||
fi
|
||||
|
||||
# Mode settings
|
||||
if [ -f "$__object/parameter/mode" ]; then
|
||||
echo chmod \"$(cat "$__object/parameter/mode")\" \"$destination\"
|
||||
fi
|
||||
|
||||
# Group
|
||||
if [ -f "$__object/parameter/group" ]; then
|
||||
echo chgrp \"$(cat "$__object/parameter/group")\" \"$destination\"
|
||||
fi
|
||||
|
||||
# Owner
|
||||
if [ -f "$__object/parameter/owner" ]; then
|
||||
echo chown \"$(cat "$__object/parameter/owner")\" \"$destination\"
|
||||
fi
|
56
conf/type/__directory/man.text
Normal file
56
conf/type/__directory/man.text
Normal file
|
@ -0,0 +1,56 @@
|
|||
cdist-type__directory(7)
|
||||
========================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type__directory - Create a directory
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
This cdist type allows you to create directories on the target.
|
||||
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
None.
|
||||
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
group::
|
||||
Group to chgrp to.
|
||||
|
||||
mode::
|
||||
Unix permissions, suitable for chmod.
|
||||
|
||||
owner::
|
||||
User to chown to.
|
||||
|
||||
parents::
|
||||
Whether to create parents as well (mkdir -p behaviour)
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# A silly example
|
||||
__directory /tmp/foobar
|
||||
|
||||
# Ensure /etc exists correctly
|
||||
__file /etc --owner root --group root --mode 0755
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
- cdist-type(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
4
conf/type/__directory/parameter/optional
Normal file
4
conf/type/__directory/parameter/optional
Normal file
|
@ -0,0 +1,4 @@
|
|||
group
|
||||
mode
|
||||
owner
|
||||
parents
|
|
@ -21,28 +21,11 @@
|
|||
# Retrieve the md5sum of a file to be created, if it is already existing.
|
||||
#
|
||||
|
||||
if [ -f "$__object/parameter/destination" ]; then
|
||||
destination="$(cat "$__object/parameter/destination")"
|
||||
else
|
||||
destination="/$__object_id"
|
||||
fi
|
||||
destination="/$__object_id"
|
||||
|
||||
os="$(cat $__global/explorer/os)"
|
||||
|
||||
case "$os" in
|
||||
macosx)
|
||||
md5sum="md5"
|
||||
;;
|
||||
|
||||
*)
|
||||
md5sum="md5sum"
|
||||
;;
|
||||
esac
|
||||
|
||||
# No output if file does not exist - does definitely not match the md5sum :-)
|
||||
if [ -e "$destination" ]; then
|
||||
if [ -f "$destination" ]; then
|
||||
$md5sum < "$destination"
|
||||
cksum < "$destination"
|
||||
else
|
||||
echo "NO REGULAR FILE"
|
||||
fi
|
|
@ -21,11 +21,7 @@
|
|||
# Check whether file exists or not
|
||||
#
|
||||
|
||||
if [ -f "$__object/parameter/destination" ]; then
|
||||
destination="$(cat "$__object/parameter/destination")"
|
||||
else
|
||||
destination="/$__object_id"
|
||||
fi
|
||||
destination="/$__object_id"
|
||||
|
||||
if [ -e "$destination" ]; then
|
||||
echo yes
|
||||
|
|
|
@ -18,97 +18,47 @@
|
|||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# __file is a very basic type and should be able to be used as an
|
||||
# example for typewrites later
|
||||
# __file is a very basic type, which will probably be reused quite often
|
||||
#
|
||||
|
||||
# If destination was specified, do not use the id
|
||||
if [ -f "$__object/parameter/destination" ]; then
|
||||
destination="$(cat "$__object/parameter/destination")"
|
||||
else
|
||||
# If no destination has been supplied, the id is the destination
|
||||
# Prepend /, which got lost in the object id (and relative paths
|
||||
# don't make sense)
|
||||
destination="/$__object_id"
|
||||
fi
|
||||
destination="/$__object_id"
|
||||
|
||||
# Ensure we have an absolute path
|
||||
if ! $(echo "$destination" | grep -q ^/); then
|
||||
echo "Error: Destination ($destination) of $__object_id is not absolute." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ -f "$__object/parameter/source" ]; then
|
||||
source="$(cat "$__object/parameter/source")"
|
||||
|
||||
# Use correct md5sum binary - MacOSx is different here
|
||||
case "$os" in
|
||||
macosx)
|
||||
md5sum="md5"
|
||||
;;
|
||||
if [ -f "$source" ]; then
|
||||
local_cksum="$(cksum < "$source")"
|
||||
remote_cksum="$(cat "$__object/explorer/cksum")"
|
||||
|
||||
*)
|
||||
md5sum="md5sum"
|
||||
;;
|
||||
esac
|
||||
|
||||
type="$(cat "$__object/parameter/type")"
|
||||
|
||||
case "$type" in
|
||||
directory)
|
||||
if [ -f "$__object/parameter/source" ]; then
|
||||
echo "Source not supported for directory currently - FIXME" >&2
|
||||
exit 1
|
||||
else
|
||||
if [ no = "$(cat "$__object/explorer/exists")" ]; then
|
||||
echo mkdir \"$destination\"
|
||||
fi
|
||||
if [ "$local_cksum" != "$remote_cksum" ]; then
|
||||
# FIXME: The username is ugly and hardcoded, replace after 1.0!
|
||||
# Probably a better aproach is to have the user configured
|
||||
# ~/.ssh/config to contain the right username
|
||||
# Probably describe it in cdist-quickstart...
|
||||
scp "$source" "root@${__target_host}:${destination}"
|
||||
fi
|
||||
;;
|
||||
|
||||
file)
|
||||
if [ -f "$__object/parameter/source" ]; then
|
||||
source="$(cat "$__object/parameter/source")"
|
||||
|
||||
if [ -f "$source" ]; then
|
||||
local_md5sum="$($md5sum < "$source")"
|
||||
remote_md5sum="$(cat "$__object/explorer/md5sum")"
|
||||
|
||||
# FIXME: Is md5sum the right approach?
|
||||
if [ "$local_md5sum" != "$remote_md5sum" ]; then
|
||||
# FIXME: This is ugly and hardcoded, replace after 1.0!
|
||||
# Probably a better aproach is to have the user configured
|
||||
# ~/.ssh/config to contain the right username
|
||||
# Probably describe it in cdist-quickstart...
|
||||
scp "$source" "root@${__target_host}:${destination}"
|
||||
fi
|
||||
else
|
||||
echo "Source \"$source\" does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [ no = "$(cat "$__object/explorer/exists")" ]; then
|
||||
echo touch \"$destination\"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
symlink)
|
||||
if [ ! -f "$__object/parameter/source" ]; then
|
||||
echo "Source required for symlink" >&2
|
||||
exit 1
|
||||
fi
|
||||
source="$(cat "$__object/parameter/source")"
|
||||
|
||||
# FIXME: handle directories or document & ignore?
|
||||
echo ln -sf \"$source\" \"$destination\"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unsupported type: \"$type\"" >&2
|
||||
else
|
||||
echo "Source \"$source\" does not exist." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
else
|
||||
if [ no = "$(cat "$__object/explorer/exists")" ]; then
|
||||
echo touch \"$destination\"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# Mode settings
|
||||
if [ -f "$__object/parameter/mode" ]; then
|
||||
mode="$(cat "$__object/parameters/mode")"
|
||||
echo chmod \"$mode\" \"$destination\"
|
||||
echo chmod \"$(cat "$__object/parameter/mode")\" \"$destination\"
|
||||
fi
|
||||
|
||||
# Group
|
||||
if [ -f "$__object/parameter/group" ]; then
|
||||
echo chgrp \"$(cat "$__object/parameter/group")\" \"$destination\"
|
||||
fi
|
||||
|
||||
# Owner
|
||||
if [ -f "$__object/parameter/owner" ]; then
|
||||
echo chown \"$(cat "$__object/parameter/owner")\" \"$destination\"
|
||||
fi
|
||||
|
|
|
@ -15,19 +15,20 @@ This cdist type allows you to create files on the target.
|
|||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
type::
|
||||
Specifies the type of file to be created. Either "directory" or "file"
|
||||
None.
|
||||
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
destination::
|
||||
If supplied, use this as the destination on the target. Otherwise the
|
||||
object_id is used.
|
||||
group::
|
||||
Group to chgrp to.
|
||||
|
||||
mode::
|
||||
Unix permissions, suitable for chmod.
|
||||
|
||||
owner::
|
||||
User to chown to.
|
||||
|
||||
source::
|
||||
If supplied, copy this file from the host running cdist to the target.
|
||||
If not supplied, an empty file or directory will be created.
|
||||
|
@ -38,13 +39,14 @@ EXAMPLES
|
|||
|
||||
--------------------------------------------------------------------------------
|
||||
# Create /etc/cdist-configured as an empty file
|
||||
__file /etc/cdist-configured --type file
|
||||
|
||||
# Same but with a different object id
|
||||
__file cdist-marker --type file --destination /etc/cdist-configured
|
||||
__file /etc/cdist-configured
|
||||
|
||||
# Use __file from another type
|
||||
__file /etc/issue --source "$__type/files/archlinux" --type file
|
||||
__file /etc/issue --source "$__type/files/archlinux"
|
||||
|
||||
# Supply some more settings
|
||||
__file /etc/shadow --source "$__type/files/shadow" \
|
||||
--owner root --group shadow --mode 0640
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
group
|
||||
mode
|
||||
owner
|
||||
source
|
||||
destination
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
type
|
3
conf/type/__issue/files/redhat
Normal file
3
conf/type/__issue/files/redhat
Normal file
|
@ -0,0 +1,3 @@
|
|||
Red Hat Enterprise Linux Server (cdist-automated)
|
||||
Kernel \r on an \m
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
cdist-type__issue(7)
|
||||
===================
|
||||
====================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
|
|
|
@ -23,12 +23,12 @@ destination=/etc/issue
|
|||
source="$(cat "out/explorer/os")"
|
||||
|
||||
case "$os" in
|
||||
archlinux)
|
||||
source="$__type/files/archlinux"
|
||||
archlinux|redhat)
|
||||
source="$__type/files/$os"
|
||||
;;
|
||||
*)
|
||||
source="$__type/files/default"
|
||||
;;
|
||||
esac
|
||||
|
||||
__file "$destination" --source "$source" --type file
|
||||
__file "$destination" --source "$source"
|
||||
|
|
43
conf/type/__link/gencode
Executable file
43
conf/type/__link/gencode
Executable file
|
@ -0,0 +1,43 @@
|
|||
#!/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/>.
|
||||
#
|
||||
#
|
||||
# __file is a very basic type and should be able to be used as an
|
||||
# example for typewrites later
|
||||
#
|
||||
|
||||
destination="/$__object_id"
|
||||
|
||||
type="$(cat "$__object/parameter/type")"
|
||||
source="$(cat "$__object/parameter/source")"
|
||||
|
||||
case "$type" in
|
||||
symbolic)
|
||||
lnopt="-s"
|
||||
;;
|
||||
hard)
|
||||
lnopt=""
|
||||
;;
|
||||
*)
|
||||
echo "Unknown type: $type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ln ${lnopt} -f \"$source\" \"$destination\"
|
56
conf/type/__link/man.text
Normal file
56
conf/type/__link/man.text
Normal file
|
@ -0,0 +1,56 @@
|
|||
cdist-type__link(7)
|
||||
===================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type__link - Create links
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
This cdist type allows you to hard and symoblic links. The given
|
||||
object id is the destination for the link.
|
||||
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
source::
|
||||
Specifies the link source.
|
||||
|
||||
type::
|
||||
Specifies the link type: Either hard or symoblic.
|
||||
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
None.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# Create hard link of /etc/shadow
|
||||
__link /root/shadow --source /etc/shadow --type hard
|
||||
|
||||
# Relative symbolic link
|
||||
__link /etc/apache2/sites-enabled/www.test.ch \
|
||||
--source ../sites-available/www.test.ch \
|
||||
--type symbolic
|
||||
|
||||
# Absolute symbolic link
|
||||
__link /opt/plone --source /home/services/plone --type symbolic
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
- cdist-type(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
2
conf/type/__link/parameter/required
Normal file
2
conf/type/__link/parameter/required
Normal file
|
@ -0,0 +1,2 @@
|
|||
source
|
||||
type
|
|
@ -33,7 +33,7 @@ EXAMPLES
|
|||
__motd
|
||||
|
||||
# Supply source file from a different type
|
||||
__file --source "$__type/files/my-motd"
|
||||
__motd --source "$__type/files/my-motd"
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
#
|
||||
#
|
||||
|
||||
destination=/etc/motd
|
||||
|
||||
# Select motd source
|
||||
if [ -f "$__object/parameter/source" ]; then
|
||||
source="$(cat "$__object/parameter/source")"
|
||||
|
@ -28,4 +26,16 @@ else
|
|||
source="$__type/files/motd"
|
||||
fi
|
||||
|
||||
__file "$destination" --source "$source" --type file
|
||||
os=$(cat $__global/explorer/os)
|
||||
|
||||
|
||||
case "$os" in
|
||||
debian|ubuntu)
|
||||
destination=/etc/motd.tail
|
||||
;;
|
||||
*)
|
||||
destination=/etc/motd
|
||||
;;
|
||||
esac
|
||||
|
||||
__file "$destination" --source "$source" --mode 0644
|
||||
|
|
53
conf/type/__package_apt/man.text
Normal file
53
conf/type/__package_apt/man.text
Normal file
|
@ -0,0 +1,53 @@
|
|||
cdist-type__package_apt(7)
|
||||
==========================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type__package_apt - Manage packages with apt-get
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
apt-get is usually used on Debian and variants (like Ubuntu) to
|
||||
manage packages.
|
||||
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
state::
|
||||
Either "installed" or "deinstalled".
|
||||
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
name::
|
||||
If supplied, use the name and not the object id as the package name.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# Ensure zsh in installed
|
||||
__package_apt zsh --state installed
|
||||
|
||||
# In case you only want *a* webserver, but don't care which one
|
||||
__package_apt webserver --state installed --name nginx
|
||||
|
||||
# Remove obsolete package
|
||||
__package_apt puppet --state deinstalled
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
- cdist-type(7)
|
||||
- cdist-type__package(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
53
conf/type/__package_pacman/man.text
Normal file
53
conf/type/__package_pacman/man.text
Normal file
|
@ -0,0 +1,53 @@
|
|||
cdist-type__package_pacman(7)
|
||||
=============================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type__package_pacman - Manage packages with pacman
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Pacman is usually used on the Archlinux distribution to manage
|
||||
packages.
|
||||
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
state::
|
||||
Either "installed" or "deinstalled".
|
||||
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
name::
|
||||
If supplied, use the name and not the object id as the package name.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# Ensure zsh in installed
|
||||
__package_pacman zsh --state installed
|
||||
|
||||
# If you don't want to follow pythonX packages, but always use python
|
||||
__package_pacman python --state installed --name python2
|
||||
|
||||
# Remove obsolete package
|
||||
__package_pacman puppet --state deinstalled
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
- cdist-type(7)
|
||||
- cdist-type__package(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
|
@ -1,10 +1,19 @@
|
|||
1.0.4:
|
||||
1.1.0: 2011-03-16
|
||||
* Replace type __file with __file, __directory, __link
|
||||
* Document cdist-env
|
||||
* Document cdist-config
|
||||
* Document cdist-dir
|
||||
* Document cdist-quickstart
|
||||
|
||||
1.0.4: 2011-03-15
|
||||
* New type __motd
|
||||
* New type __addifnosuchline
|
||||
* New type __addifnosuchline (Daniel Roth)
|
||||
* Document type __issue
|
||||
* New type __user
|
||||
* Document type __package
|
||||
* Document type __package_emerge
|
||||
* Document type __package_pacman
|
||||
* Document type __package_apt
|
||||
* New parameter for __file: --owner and --group
|
||||
|
||||
1.0.3: 2011-03-11
|
||||
* Update regexp used for sane characters
|
||||
|
|
27
doc/dev/logs/2011-03-15
Normal file
27
doc/dev/logs/2011-03-15
Normal file
|
@ -0,0 +1,27 @@
|
|||
Steven, Nico
|
||||
|
||||
How to handle dependencies:
|
||||
|
||||
1) Add --require parameter for all types
|
||||
- Special handling in cdist-type-emulator
|
||||
+ Everything on one line
|
||||
|
||||
2) Add __require type
|
||||
+ No change in core
|
||||
- Type influences core
|
||||
- Additional line
|
||||
- Core needs to know about requirements
|
||||
|
||||
3) cdist-require as a seperate executable
|
||||
+ No change in cdist-type-emulator
|
||||
- new behaviour
|
||||
- first time cdist-xxx dependency in types
|
||||
|
||||
4) require="" environment variable for cdist-type-emulator
|
||||
+ on one line / same context
|
||||
+ special handling is ok for special case
|
||||
+ doesn't touch parameters (i.e. type still has full control)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Result: Use version 4.
|
7
doc/dev/logs/2011-03-15.file_directory_link
Normal file
7
doc/dev/logs/2011-03-15.file_directory_link
Normal file
|
@ -0,0 +1,7 @@
|
|||
Proposal for new types, which replace __file:
|
||||
|
||||
x __directory /etc [--mode --owner --group --parents [yes|no] ]
|
||||
|
||||
x __link /destination --source abc --type [symbolic|hard]
|
||||
|
||||
x __file /etc/passwd [--source] --mode --owner --group
|
|
@ -0,0 +1 @@
|
|||
Release 1.1.0
|
|
@ -1,3 +1,7 @@
|
|||
Core:
|
||||
- write test case: test.sh
|
||||
- probably remove grep -q (solaris does not have it)
|
||||
|
||||
Dependencies:
|
||||
- Add meta parameters like --requires --excludes --depends?
|
||||
- Build dependency tree
|
||||
|
@ -9,22 +13,9 @@ Types to be written/extended:
|
|||
- __service
|
||||
- __user
|
||||
- __file_edit
|
||||
- delete_line_from_file
|
||||
- __deleteline
|
||||
- regexp replace (can probably cover all?)
|
||||
- __file:
|
||||
- template == [shell script] stdout
|
||||
- cron
|
||||
- __file: think about splitting
|
||||
__file
|
||||
source
|
||||
mode
|
||||
owner
|
||||
__directory
|
||||
parents
|
||||
mode
|
||||
owner
|
||||
__link
|
||||
type symbolic | hard
|
||||
- __issue: add --source
|
||||
|
||||
|
||||
|
@ -41,16 +32,8 @@ Documentation:
|
|||
+ cdist
|
||||
+ cdist-deploy-to
|
||||
+ cdist-manifest
|
||||
- cdist-type [IMPORTANT]
|
||||
- only do necessary work [TYPE IMPLEMENTATION HINTS]
|
||||
- install packages only if not existent
|
||||
- copy file only if different
|
||||
- DOC document that $type/manifest is executed for every object/instance
|
||||
- ensure every file in bin/ has a correspondent manpage
|
||||
- cdist-code-run-all
|
||||
- cdist-config
|
||||
- cdist-deploy-to
|
||||
- cdist-dir
|
||||
- cdist-explorer-run-init
|
||||
- cdist-manifest-run
|
||||
- cdist-manifest-run-all
|
||||
|
@ -58,7 +41,6 @@ Documentation:
|
|||
- cdist-object-codegen
|
||||
- cdist-object-codegen-all
|
||||
- cdist-object-explorer-all
|
||||
- cdist-quickstart
|
||||
- cdist-remote-code-run-all
|
||||
- cdist-remote-explorer-run
|
||||
- cdist-run-remote
|
|
@ -10,18 +10,14 @@ cdist-config - Read basic cdist configuration
|
|||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Cdist-config is sourced by all helper programs and provides
|
||||
hints on where to find the library. Cdist-config needs to be
|
||||
in the path.
|
||||
|
||||
AUTHOR
|
||||
------
|
||||
Nico Schottelius <mailto:nico-cdist--@--schottelius.org[]>
|
||||
Cdist-config is sourced by cdist programs and provides hints on where to find
|
||||
types, manifests, etc. Generally speaking, it's just usable from within the
|
||||
core and is only of interest for cdist-developers.
|
||||
|
||||
|
||||
RESOURCES
|
||||
---------
|
||||
Main web site: http://www.nico.schottelius.org/cdist/[]
|
||||
SEE ALSO
|
||||
--------
|
||||
cdist(7)
|
||||
|
||||
|
||||
COPYING
|
38
doc/man/cdist-dir.text
Normal file
38
doc/man/cdist-dir.text
Normal file
|
@ -0,0 +1,38 @@
|
|||
cdist-dir(1)
|
||||
============
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-dir - Poor man's directory synchronisation
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
cdist-dir <push|pull> TARGET_HOST SRC_DIR DST_DIR
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
cdist-dir either pushes a local directory to the target host
|
||||
or pulls a remote directory from a target host to the local host.
|
||||
|
||||
In the push case SRC_DIR is local, in the pull case remote.
|
||||
In the push case DST_DIR is remote, in the pull case local.
|
||||
|
||||
cdist-dir does not cleanup DST_DIR and thus it may contain old
|
||||
stuff if used multiple times.
|
||||
|
||||
cdist-dir does not rely on rsync or other high level tools, because
|
||||
it cannot expect its existence on the local or target host.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
cdist(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
46
doc/man/cdist-env.text
Normal file
46
doc/man/cdist-env.text
Normal file
|
@ -0,0 +1,46 @@
|
|||
cdist-env(1)
|
||||
============
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-env - Setup environment for using cdist
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
cdist-env
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
cdist-env outputs two strings suitable for usage in your current shell,
|
||||
so you can use cdist from the checkout. cdist-env essentially helps you
|
||||
to easily setup PATH and MANPATH.
|
||||
|
||||
If you've multiple checkouts of cdist and run cdist-env from the various
|
||||
checkouts, a new run will prepend the last directory, thus ensures you
|
||||
can run it multiple times and does what one expects.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
For use in bourne shell variants (like dash, bash, ksh) as well as
|
||||
in csh variants (csh, tcsh):
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
eval `./bin/cdist-env`
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Replace "./" with the checkout directory of cdist.
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
cdist(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
51
doc/man/cdist-quickstart.text
Normal file
51
doc/man/cdist-quickstart.text
Normal file
|
@ -0,0 +1,51 @@
|
|||
cdist-quickstart(1)
|
||||
===================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-quickstart - Make use of cinit in 5 minutes
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
cdist-quickstart
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
cdist-quickstart is an interactive guide to cdist. It should be one
|
||||
of the first tools you use when you begin with cdist.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
To use cdist-quickstart, add the bin directory to your PATH,
|
||||
execute cdist-quickstart and enjoy cdist:
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# Bourne shell example
|
||||
export PATH=$(pwd -P)/bin:$PATH
|
||||
|
||||
# Alternatively, usable for csh and bsh, set's up PATH and MANPATH
|
||||
eval `./bin/cdist-env`
|
||||
|
||||
# Let's go!
|
||||
cdist-quickstart
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
- cdist(7)
|
||||
- cdist-env(1)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
||||
## How to use cdist?
|
|
@ -179,6 +179,14 @@ level tools like ruby installed. If a type requires specific tools to be present
|
|||
on the target, there must be another type that provides this tool and the first
|
||||
type should create an object of the specific type.
|
||||
|
||||
If your type wants to save temporay data, that may be used by other types
|
||||
later on (for instance __file), you can save them in the subdirectory
|
||||
"files" below $__object (but you must create it yourself). cdist will not touch
|
||||
this directory.
|
||||
|
||||
If your type contains static files, it's also recommened to place them in
|
||||
a folder named "files" within the type (again, because cdist guarantees to
|
||||
never ever touch this folder).
|
||||
|
||||
HOW TO INCLUDE A TYPE INTO UPSTREAM CDIST
|
||||
-----------------------------------------
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
cdist-quickstart(1)
|
||||
===================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-quickstart - Make use of cinit in 5 minutes
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
This document helps you to take the first steps with cdist.
|
||||
We'll begin to configure the host "localhost" to have two files
|
||||
in place, /etc/DO-NOT-CHANGE and /root/CDIST-ENABLED-HOST, which
|
||||
both are used to warn other sysadmins that this system is managed
|
||||
by configuration management and manual changes may get overwritten.
|
||||
|
||||
Begin to execute cdist-quickstart, it will show you the steps it
|
||||
takes and explains what it does:
|
||||
|
||||
% cdist-quickstart
|
||||
|
||||
mkdir -p /etc/cdist/manifests
|
||||
|
||||
# Create
|
||||
|
||||
Cdist uses
|
||||
kgives you an impression of
|
||||
0. Create a host specification (/etc/cdist/hosts/**hostname**)
|
||||
0. Add functionalilty to add
|
||||
0. Run ***cdist-apply***
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
cdist-config-layout(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
||||
## How to use cdist?
|
|
@ -1,26 +0,0 @@
|
|||
cdist-terms(7)
|
||||
==============
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-terms - Describe terms used in cdist
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
provider: Provides functionality.
|
||||
object: Instance with provider unique id of a provider.
|
||||
manifest: Define which objects to create [on hosts]
|
||||
server: The machine that configures all targets.
|
||||
target: Host that should be configured.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
|
@ -1,30 +0,0 @@
|
|||
cdist-type-addifnosuchline(1)
|
||||
======================
|
||||
Daniel Roth <dani-cdist--@--d-roth.li>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type-addifnosuchline
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
cdist-type-addifnosuchline Add if no such line
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
cdist-type-addifnosuchline can be used to check a file for existence of a
|
||||
specific line and adding that if not found
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
cdist(7)
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2011 Daniel Roth. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
|
@ -1,24 +0,0 @@
|
|||
cdist-type-manifest(7)
|
||||
======================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type-manifest - Manifest of a type
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
CWD = object directory
|
||||
ARGV = target host, basedir
|
||||
ENV =
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is
|
||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
Loading…
Reference in a new issue