blob: 9979f9f6ae5b28fa074df0bcabca43bec5335d77 (
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
#!/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 registered"
exit 1
elif [ -d "$BASEDIR" ]; then
echo "Folder $BASEDIR already exists, maybe you want to run 'hydra $HYDRA register'?"
exit 1
fi
# Clone configuration repository or setup a new hydra
if [ ! -z "$REMOTE" ]; then
# Try to clone the superproject first
if git ls-remote $REMOTE &> /dev/null; then
git clone $REMOTE $BASEDIR
fi
(
mkdir -p $BASEDIR
cd $BASEDIR
# Initialize only the required repositories
for repo in $BASEREPOS; do
if [ -e '.gitmodules' ] && grep -q \"config\" .gitmodules; then
git submodule update --init $repo
else
if git ls-remote ${REMOTE}/$repo &> /dev/null; then
git clone ${REMOTE}/$repo `basename $repo .git`
else
echo "Skipping unavailable ${REMOTE}/$repo..."
fi
fi
done
)
else
# Create the superproject
mkdir -p $BASEDIR
# Optional: version control in the superproject
#hydra_git_init $BASEDIR
# 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
if [ ! -d "$BASEDIR/bootless" ]; then
echo "Initializing bootless repository..."
hydra $HYDRA bootless init
fi
# Create puppet repository
if [ ! -d "$BASEDIR/puppet" ]; then
echo "Cloning initial puppet repository..."
git clone git://git.fluxo.info/puppet-bootstrap.git $BASEDIR/puppet
# Config puppet
echo "Configuring puppet repository..."
hydra_bootstrap_config $BASEDIR/puppet
fi
fi
# Reparse basedir to force absolute folder
BASEDIR="`cd $BASEDIR && pwd`"
# Add entry
echo "Registering hydra $HYDRA..."
chmod 700 $BASEDIR
echo "$HYDRA=\"$BASEDIR\"" >> $CONFIG
#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
|