#!/bin/bash # # Node tool. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public # License along with this program. If not, see # . # Get a list of puppet node files function hydra_node_puppet_files { if [ -d "$PUPPET/config/node/" ]; then #FILES="$PUPPET/config/node/*" FILES="`ls -1 $PUPPET/config/node/ | grep -v example.org | xargs`" fi } # Return node names from puppet config function hydra_nodes_puppet_names { for file in $FILES; do basename $file .yaml done } # Return nodes from puppet config function hydra_nodes_puppet { # Get initial file list hydra_node_puppet_files # Get nodes if [ ! -z "$CLASS" ]; then hydra_nodes_puppet_names | while read node; do find $PUPPET/config -name "$node.yaml" done | while read candidate; do if grep -e "$CLASS" $candidate | grep -qe "^nodo::role"; then basename $candidate .yaml fi done else hydra_nodes_puppet_names fi } # Return nodes from ansible config function hydra_nodes_ansible { if [ -z "$CLASS" ]; then CLASS="all" fi hydra $HYDRA ansible $CLASS --list-hosts 2> /dev/null | grep -v "^ hosts (" | sed -e 's/^ //' } # Load source $APP_BASE/lib/hydra/functions || exit 1 hydra_config_load # Command line arguments CLASS="$1" # Dispatch if ! [ -z "$PUPPET" ] && [ "$BACKEND" != "ansible" ]; then hydra_nodes_puppet elif [ -d "$HYDRA_FOLDER/ansible" ]; then hydra_nodes_ansible else echo "No PUPPET parameter defined at $HYDRA preferences or ansible config available." exit 1 fi