blob: 46c2de6358241fc9a4efb59b5fb58db6a9af401c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#!/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
# <http://www.gnu.org/licenses/>.
# 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 <path> [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..."
( cd $BASEDIR/puppet && make submodules && make config )
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
|