#!/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 . # # # Deploy configuration to many hosts # . cdist-config [ $# -ge 1 ] || __cdist_usage "[-p] [target host ]" set -eu filter() { awk -v host=$1 '{ print "[" host "] " $0 }' } parallel="" if [ "$1" = "-p" ]; then parallel=yes shift fi i=0 while [ $# -ge 1 ]; do if [ "$parallel" ]; then cdist-deploy-to "$1" | filter # Record pid and host for use later eval pid_$i=$! eval host_$i=\$1 i=$((i+1)) else cdist-deploy-to "$1" | filter fi shift done # else wait after all are started if [ "$parallel" ]; then __cdist_echo info "Waiting for cdist-deploy-to jobs to finish" while [ $i -gt 0 ]; do done wait fi