#!/bin/bash # # Create new node configuration. # # 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 # . # Load. source $APP_BASE/lib/hydra/functions || exit 1 hydra_config_load # Parameters BASENAME="`basename $0`" NODE="$1" NODES="$HYDRA_FOLDER/puppet/manifests/nodes.pp" # Check configuration and parameters if [ -z "$NODE" ]; then echo "usage: hydra $BASENAME " exit 1 elif [ ! -e "$HYDRA_FOLDER/config/domain" ]; then echo "fatal: please configure your domain at $HYDRA_FOLDER/config/domain" exit 1 elif [ ! -f "$NODES" ]; then echo "fatal: nodes.pp not found" exit 1 elif grep -qe "^import \"nodes/$NODE.pp\"$" $NODES &> /dev/null; then echo "fatal: node $NODE already defined" exit 1 fi # Domain DOMAIN="`cat $HYDRA_FOLDER/config/domain`" # Create node echo "import \"nodes/$NODE.pp\"" >> $NODES # Set YAML template if [ -e "$HYDRA_FOLDER/config/templates/node/nodo.example.org.yaml" ]; then YAML="$HYDRA_FOLDER/config/templates/node/nodo.example.org.yaml" else YAML="$APP_BASE/share/config/templates/node/nodo.example.org.yaml" fi # Set node template if [ -e "$HYDRA_FOLDER/config/templates/node/nodo.pp" ]; then PP="$HYDRA_FOLDER/config/templates/node/nodo.pp" else PP="$APP_BASE/share/config/templates/node/nodo.pp" fi # Copy YAML template mkdir -p $HYDRA_FOLDER/puppet/hiera/production/domain/$DOMAIN/node cp $YAML $HYDRA_FOLDER/puppet/hiera/production/domain/$DOMAIN/node/$NODE.$DOMAIN.yaml # Copy node template mkdir -p $HYDRA_FOLDER/puppet/manifests/nodes cp $PP $HYDRA_FOLDER/puppet/manifests/nodes/$NODE.pp # Edit the template sed -i -e "s/nodename/$NODE/g" $HYDRA_FOLDER/puppet/manifests/nodes/$NODE.pp sed -i -e "s/example.org/$DOMAIN/g" $HYDRA_FOLDER/puppet/manifests/nodes/$NODE.pp # Add to git ( cd $HYDRA_FOLDER/puppet git add manifests/site.pp manifests/nodes/$NODE.pp hiera/production/domain/$DOMAIN/node/$NODE.$DOMAIN.yaml )