aboutsummaryrefslogtreecommitdiff
path: root/share/hydra/init
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