forked from ungleich-public/cdist
Merge remote-tracking branch 'telmich/master'
This commit is contained in:
commit
9f21273f4e
15 changed files with 227 additions and 87 deletions
38
bin/cdist
38
bin/cdist
|
@ -20,26 +20,10 @@
|
|||
#
|
||||
#
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import multiprocessing
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
|
||||
log = logging.getLogger("cdist")
|
||||
|
||||
# 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')))
|
||||
|
||||
import cdist
|
||||
|
||||
TYPE_PREFIX = "__"
|
||||
|
||||
def commandline():
|
||||
"""Parse command line"""
|
||||
import argparse
|
||||
|
||||
import cdist.banner
|
||||
import cdist.config
|
||||
import cdist.install
|
||||
|
@ -117,6 +101,9 @@ def install(args):
|
|||
|
||||
def configinstall(args, mode):
|
||||
"""Configure or install remote system"""
|
||||
import multiprocessing
|
||||
import time
|
||||
|
||||
try:
|
||||
process = {}
|
||||
failed_hosts = []
|
||||
|
@ -203,9 +190,22 @@ def emulator():
|
|||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
import cdist
|
||||
|
||||
log = logging.getLogger("cdist")
|
||||
|
||||
# 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')))
|
||||
|
||||
logging.basicConfig(format='%(levelname)s: %(message)s')
|
||||
|
||||
if re.match(TYPE_PREFIX, os.path.basename(sys.argv[0])):
|
||||
if re.match("__", os.path.basename(sys.argv[0])):
|
||||
emulator()
|
||||
else:
|
||||
commandline()
|
||||
|
|
3
build
3
build
|
@ -144,8 +144,9 @@ case "$1" in
|
|||
echo ''
|
||||
echo 'Here are the possible targets:'
|
||||
echo ''
|
||||
echo ' man: Build manpages (requires Asciidoc)'
|
||||
echo ' clean: Remove build stuff'
|
||||
echo ' man: Build manpages (requires Asciidoc)'
|
||||
echo ' test: Run tests'
|
||||
echo ''
|
||||
echo ''
|
||||
echo "Unknown target, \"$1\"" >&2
|
||||
|
|
|
@ -27,13 +27,6 @@ else
|
|||
name="$__object_id"
|
||||
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")"
|
||||
is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status" || true)"
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
2.0.4:
|
||||
* Bugfix core: Remove traceback when sending SIGINT (aka Ctrl-C)
|
||||
|
||||
2.0.3: 2011-10-18
|
||||
* Improved logging, added --verbose, by more quiet by default
|
||||
* Bugfix __user: Correct quoting (Steven Armstrong)
|
||||
|
|
|
@ -2,60 +2,6 @@
|
|||
|
||||
- sanity checks: implement tests
|
||||
|
||||
stage_run()
|
||||
- ensure that for every object in
|
||||
cdist.core.Object.list_objects() is passed into
|
||||
self.object_run()
|
||||
- instantiate + overwrite + test
|
||||
|
||||
object_prepare():
|
||||
- calls (in this order):
|
||||
self.run_type_explorer(cdist_object)
|
||||
self.run_type_manifest(cdist_object)
|
||||
cdist_object.prepared = True
|
||||
- object is prepared after function call
|
||||
|
||||
|
||||
stage_prepare():
|
||||
- calls (in this order):
|
||||
self.link_emulator()
|
||||
self.run_global_explorers()
|
||||
self.run_initial_manifest()
|
||||
|
||||
- ensure that all objects are created :-)
|
||||
- as defined in inital manifest + type manifests
|
||||
|
||||
deploy_to()
|
||||
- ensure self.stage_prepare() and self.stage_run() are
|
||||
run. [ORDER]
|
||||
- instantiate + overwrite + test
|
||||
|
||||
deploy_and_cleanup()
|
||||
- ensure self.deploy_to() + self.cleanup() are are run
|
||||
run. [ORDER]
|
||||
- instantiate + overwrite + test
|
||||
|
||||
transfer_object_parameter()
|
||||
- check that object parameters are transferred
|
||||
- paths are setup correctly
|
||||
- test via mock of remote_mkdir and transfer_path
|
||||
- ensure self.remote_mkdir, self.transfer_path are run. [ORDER]
|
||||
- instantiate + overwrite + test
|
||||
|
||||
transfer_global_explorers()
|
||||
- paths are setup correctly
|
||||
- test via mock of self.remote_mkdir() and self.transfer_path()
|
||||
- ensure self.remote_mkdir, self.transfer_path are run. [ORDER]
|
||||
- instantiate + overwrite + test
|
||||
|
||||
transfer_type_explorers():
|
||||
- Explorers are not transferred twice
|
||||
- paths are setup correctly
|
||||
- test via mock of self.remote_mkdir() and self.transfer_path()
|
||||
- Explorers are transferred
|
||||
- test via mock of self.remote_mkdir() and self.transfer_path()
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- insert prefix into logger to distinguish between modules
|
||||
|
|
|
@ -133,7 +133,6 @@ out/object/<object>/explorers::
|
|||
tmp_dir::
|
||||
A tempdir and a tempfile is used by cdist internally,
|
||||
which will be removed when the scripts end automatically.
|
||||
See cdist-config(1).
|
||||
|
||||
TYPES
|
||||
-----
|
||||
|
@ -166,11 +165,6 @@ changed::
|
|||
|
||||
ENVIRONMENT VARIABLES
|
||||
---------------------
|
||||
__debug::
|
||||
If this variable is setup, cdist runs in debug mode.
|
||||
You can use this information, to only output stuff in debug
|
||||
mode as well.
|
||||
Available for: initial manifest, type manifest, gencode, code
|
||||
__explorer::
|
||||
Directory that contains all global explorers.
|
||||
Available for: explorer
|
||||
|
@ -186,6 +180,7 @@ __object::
|
|||
__object_id::
|
||||
The type unique object id.
|
||||
Available for: type manifest, type explorer, type gencode
|
||||
__self::
|
||||
__object_fq::
|
||||
The full qualified name of the current object.
|
||||
Available for: type manifest, type explorer, type gencode
|
||||
|
|
|
@ -6,6 +6,101 @@ Nico Schottelius <nico-cdist--@--schottelius.org>
|
|||
NAME
|
||||
----
|
||||
cdist-tutorial - a guided introduction into cdist
|
||||
|
||||
|
||||
|
||||
YOUR FIRST CONFIGURATION
|
||||
------------------------
|
||||
|
||||
|
||||
DEFINE STATE IN THE INITAL MANIFEST
|
||||
-----------------------------------
|
||||
|
||||
The initial manifest is used to map
|
||||
configurations to a host.
|
||||
|
||||
USING SOME BASIC TYPES
|
||||
----------------------
|
||||
what is a type, how to use it,
|
||||
|
||||
|
||||
CREATING YOUR FIRST OWN TYPE
|
||||
----------------------------
|
||||
<with object id? or signleton here already>
|
||||
|
||||
|
||||
USE A TYPE TO BUNDLE FUNCTIONALITY
|
||||
----------------------------------
|
||||
|
||||
|
||||
USING EXPLORERS
|
||||
---------------
|
||||
global, type explorer
|
||||
|
||||
|
||||
DEBUGGING YOUR TYPES
|
||||
--------------------
|
||||
__debug::
|
||||
If this variable is setup, cdist runs in debug mode.
|
||||
You can use this information, to only output stuff in debug
|
||||
mode as well.
|
||||
Available for: initial manifest, type manifest, gencode, code
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
|
2
other/examples/types/__nico_sudo/README
Normal file
2
other/examples/types/__nico_sudo/README
Normal file
|
@ -0,0 +1,2 @@
|
|||
Configure sudoers file to be included. Different types may do so,
|
||||
this one simply uses the "nico" file to store the configuration.
|
13
other/examples/types/__nico_sudo/files/sudo-nico
Normal file
13
other/examples/types/__nico_sudo/files/sudo-nico
Normal file
|
@ -0,0 +1,13 @@
|
|||
#
|
||||
# Cdist managed file
|
||||
#
|
||||
|
||||
# Personal one: nico, shared one: lyni
|
||||
User_Alias NICO = nico, lyni
|
||||
|
||||
Defaults timestamp_timeout=5
|
||||
Defaults !tty_tickets
|
||||
|
||||
# Give out permissions
|
||||
NICO ALL=(ALL) ALL
|
||||
NICO ALL=(ALL) NOPASSWD: /usr/sbin/pm-suspend
|
30
other/examples/types/__nico_sudo/manifest
Executable file
30
other/examples/types/__nico_sudo/manifest
Executable file
|
@ -0,0 +1,30 @@
|
|||
#!/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/>.
|
||||
#
|
||||
#
|
||||
|
||||
destination=/etc/sudoers.d/nico
|
||||
source="$__type/files/sudo-nico"
|
||||
|
||||
__package sudo --state installed
|
||||
__directory /etc/sudoers.d --parents yes
|
||||
|
||||
require="__directory/etc/sudoers.d" \
|
||||
__file "$destination" --source "$source" --mode 0440
|
||||
|
31
other/examples/types/__nico_sudo/parameter/gencode
Normal file
31
other/examples/types/__nico_sudo/parameter/gencode
Normal file
|
@ -0,0 +1,31 @@
|
|||
#!/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/>.
|
||||
#
|
||||
#
|
||||
# USEFUL DESCRIPTION
|
||||
#
|
||||
|
||||
#
|
||||
# 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)
|
||||
#
|
||||
#
|
||||
|
31
other/examples/types/__nico_sudo/parameter/manifest
Normal file
31
other/examples/types/__nico_sudo/parameter/manifest
Normal file
|
@ -0,0 +1,31 @@
|
|||
#!/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/>.
|
||||
#
|
||||
#
|
||||
# USEFUL DESCRIPTION
|
||||
#
|
||||
|
||||
#
|
||||
# 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)
|
||||
#
|
||||
#
|
||||
|
0
other/examples/types/__nico_sudo/parameter/optional
Normal file
0
other/examples/types/__nico_sudo/parameter/optional
Normal file
0
other/examples/types/__nico_sudo/parameter/required
Normal file
0
other/examples/types/__nico_sudo/parameter/required
Normal file
0
other/examples/types/__nico_sudo/singleton
Normal file
0
other/examples/types/__nico_sudo/singleton
Normal file
Loading…
Reference in a new issue