#!/bin/bash # # Register an existing hydra # # 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 # Command line arguments BASEDIR="$1" REMOTE="$2" # Validation if [ -z "$BASEDIR" ]; then echo "Usage: hydra [hydra] init [remote]" exit 1 elif grep -q -e "^$HYDRA=" $CONFIG &> /dev/null; then echo "Hydra $HYDRA already defined" exit 1 elif [ -d "$BASEDIR" ]; then echo "Folder $BASEDIR already exists, hydra $HYDRA already defined?" exit 1 fi # Create base mkdir -p $BASEDIR # Reparse basedir to force absolute folder BASEDIR="`cd $BASEDIR && pwd`" # Add entry echo "Registering hydra $HYDRA..." mkdir -p $BASEDIR chmod 700 $BASEDIR echo "$HYDRA=\"$BASEDIR\"" >> $CONFIG # Clone configuration repository or setup a new hydra if [ ! -z "$REMOTE" ]; then git clone $REMOTE $BASEDIR/config else # Create config repository if [ ! -d "$BASEDIR/config" ]; then # Setup repository from template cp -r $APP_BASE/share/config $BASEDIR/config hydra_git_init $BASEDIR/config fi # Create doc repository if [ ! -d "$BASEDIR/doc" ]; then mkdir -p "$BASEDIR/doc" echo "Use this repository for notes about Hydra $HYDRA" > $BASEDIR/doc/README.md hydra_git_init $BASEDIR/doc fi # Create bootless repository echo "Initializing bootless repository..." hydra $HYDRA bootless init # Create puppet repository echo "Cloning initial puppet repository..." git clone git://git.sarava.org/puppet-bootstrap.git $BASEDIR/puppet # Config puppet echo "Configuring puppet repository..." hydra_bootstrap_config $BASEDIR/puppet fi cat<<-EOF Hydra suite relies heavilly in the address in the form of "admin.example.org" as the repository server which hosts configuration. So make sure you have the following in your ~/.ssh/config: Host admin.example.org HostName server.example.org Port 22 Replace HostName by the address of the git repository server and Port by it's SSH port. While HostName and Port might change in the future if you move your repository for another server, having a fixed alias helps to keep your git remotes always updated. EOF # Prompt echo "Press any key to continue, Ctrl-C to abort." read response # Sync repositories hydra $HYDRA sync