diff options
-rw-r--r-- | README | 4 | ||||
-rwxr-xr-x | firewall/multiconfig.sh | 14 | ||||
-rwxr-xr-x | multiconfig.sh | 33 | ||||
-rw-r--r-- | utils | 29 |
4 files changed, 59 insertions, 21 deletions
@@ -0,0 +1,4 @@ +Distributed configuration tool +============================== +This is tool for distributed configuration. It provides the way to distribute +configuration trough git to every host. diff --git a/firewall/multiconfig.sh b/firewall/multiconfig.sh index 1c9b6ff..0befbf1 100755 --- a/firewall/multiconfig.sh +++ b/firewall/multiconfig.sh @@ -1,10 +1,20 @@ #!/bin/sh set -e +LPATH="$(dirname "$0")" +if [ -f "$LPATH/utils" ]; then + . "$LPATH/utils" +elif [ -f "$LPATH/../utils" ]; then + . "$LPATH/../utils" +else + echo "Can't locate utilities!" + exit 1 +fi +###################################### -mkdir /etc/iptables +mkdir -p /etc/iptables configure() { - if ! grep -q "$3_SAVE=\"/etc/iptables/$1\""; then + if ! grep -q "$3_SAVE=\"/etc/iptables/$1\"" "/etc/conf.d/$2"; then echo "Reconfiguring $2 service configuration" sed -i "s#^$3_SAVE=.*\$#$3_SAVE=\"/etc/iptables/$1\"#" "/etc/conf.d/$2" fi diff --git a/multiconfig.sh b/multiconfig.sh index e85f0c0..500d0de 100755 --- a/multiconfig.sh +++ b/multiconfig.sh @@ -1,5 +1,6 @@ #!/bin/sh set -e +MODDIR="/usr/lib/multiconfig" MODS="" LOCAL=false @@ -21,7 +22,14 @@ while [ $# -gt 0 ]; do LOCAL=true ;; *) - MODS="$MODS $1" + if [ -x "$1" ]; then + MODS="$MODS $(pwd)/$1" + elif [ -x "$MODDIR/$1" ]; then + MODS="$MODS $MODDIR/$1" + else + echo "Requested unknown mod: $1" + exit 1 + fi ;; esac shift @@ -38,6 +46,8 @@ if ! $LOCAL; then exit 1 fi cd "/root/.multiconfig" + # Ensure that we have correct access rights on private key + chmod 600 ssh_key # Update git repository git fetch git reset --hard origin/master @@ -47,30 +57,15 @@ if ! $LOCAL; then #git verify-commit HEAD fi -MODDIR="/usr/lib/multiconfig" # No modules given means to process all modules if [ -z "$MODS" ]; then for M in $(find "$MODDIR" -executable); do - MODS="$MODS $M" + MODS="$MODS $MODDIR/$M" done -else - # Go trough all given modules and check if we have such module - NMODS="" - for M in $MODS; do - if [ ! -x "$M" ]; then # Is not path directly to script - if [ ! -x "$MODDIR/$M" ]; then - echo "No such mode: $M" - exit 1 - else - NMODS="$NMODS $MODDIR/$M" - fi - else - NMODS="$NMODS $M" - fi - done - MODS="$NMODS" fi +[ -n "$MODS" ] || exit 0 + mkdir -p /var/log/multiconfig for M in $MODS; do LOG="/var/log/multiconfig/$(basename "$M")" @@ -0,0 +1,29 @@ +# vim: ft=sh + +die() { + kill $$ +} + +inst_f() { + if [ -f "$2" ]; then + else + mkdir "$(basedir "$2")" + echo "New file: $1 -> $2" + fi +} + +inst_d() { + # TODO + true +} + +inst() { + if [ -f "$1" ]; then + inst_f "$1" "$2" + elif [ -d "$1" ]; then + inst_d "$1" "$2" + else + echo "Unsupported install target type of: $1" + die + fi +} |