]> git.somenet.org - root/pub/somesible.git/blob - run_somesible.sh
[roles/util] ----- meta ----- No dependencies
[root/pub/somesible.git] / run_somesible.sh
1 #!/bin/bash
2 #
3 ##############################
4 ## somenet.org ansible tool ##
5 ##############################
6 # Part of: https://git.somenet.org/root/pub/somesible.git
7 # 2017-2024 by someone <someone@somenet.org>
8 #
9 # first-run-pre-requirements:
10 ## git.somenet.org access to somesible repo.
11 ### (presumably: /root/pub/somesible)
12 #
13 # does:
14 ## get paths
15 ## update somesible directory/git-submodule (clone and call update.sh)
16 ## rsync over diversions
17 ## cleanup
18 ## run ansible process
19 #
20
21 SOMESIBLE_OLDPWD=$(pwd)
22 SOMESIBLE_PWD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
23 cd $SOMESIBLE_PWD
24
25 if [ -e "update_somesible.sh" ]; then
26   echo "*** ERROR (run_somesible.sh): this is not supposed to be run inside the somesible git repo. abort."
27   exit 1
28 fi
29
30 # (try to) read config in parent dir.
31 if [ -e "somesible.conf" ]; then
32     . "somesible.conf"
33 fi
34
35
36 # delete old lock-file, if too old, allowing to run the update.
37 find "/tmp/run_somesible_${USER}.sh.lock" -mmin +60 -delete >/dev/null 2>&1
38 if [ -e "/tmp/run_somesible_${USER}.sh.lock" ]; then
39   echo "*** EARLY EXIT: /tmp/run_somesible_${USER}.sh.lock is too new"
40   echo 'maybe need to: rm -f "/tmp/run_somesible_${USER}.sh.lock"'
41   exit 0
42 fi
43
44 ###################################
45 # update or clone and reset repos #
46 ###################################
47 git config fetch.recurseSubmodules false
48
49 if [ ! -e "$SOMESIBLE_PWD/somesible/.git" ]; then
50   echo "*** WARN (run_somesible.sh): somesible git repo not found. cloning..."
51   git clone git@git.somenet.org:/root/pub/somesible somesible
52 fi
53
54 cd $SOMESIBLE_PWD/somesible || { echo "*** ERROR (run_somesible.sh): Tried to get a clone of somesible, but it still does not exist. Aborting. ***"; exit 1;}
55 # allow to skip updating.
56 if [ -z "$SOMESIBLE_SKIP_UPDATE" ]; then
57     #(nohup sh ./update_somesible.sh </dev/null >>/dev/null 2>&1)
58     sh ./update_somesible.sh
59
60     rsync -qclDP "${SOMESIBLE_PWD}/somesible/run_somesible.sh" "${SOMESIBLE_PWD}/"
61 fi
62 cd $SOMESIBLE_PWD
63
64
65 #########################
66 # rsync over diversions #
67 #########################
68 mkdir -p "${SOMESIBLE_PWD}/override/"
69 rsync -qcrlDP "${SOMESIBLE_PWD}/override/" "${SOMESIBLE_PWD}/somesible/"
70
71
72 ###############
73 # run ansible #
74 ###############
75 cd $SOMESIBLE_PWD/somesible
76
77 # currently its not possible to have conditional playbook includes.
78 # hack them in...
79 if [ -e "${SOMESIBLE_PWD}/site.yml" ]; then
80   ansible-playbook site_parent.yml -l managed "$@"
81 else
82   ansible-playbook site_base.yml -l managed "$@"
83 fi
84
85 # release lock
86 rm -f "/tmp/run_somesible_${USER}.sh.lock"