geteduroam-ops/global/overlay/etc/cosmos/apt/bootstrap-cosmos.sh

86 lines
2.5 KiB
Bash
Raw Normal View History

2013-09-02 14:01:50 +00:00
#!/bin/sh
2016-04-20 14:44:14 +00:00
#set -e
# not all breakage is un-recoverable...
2013-09-02 14:01:50 +00:00
cmd_hostname="$1"
if test -z "$cmd_hostname"; then
2013-10-31 22:26:16 +00:00
echo "Usage: $0 HOSTNAME REPO TAGPATTERN"
2013-09-02 14:01:50 +00:00
exit 1
fi
cmd_repo="$2"
if test -z "$cmd_repo"; then
2013-10-31 22:26:16 +00:00
echo "Usage $0 HOSTNAME REPO TAGPATTERN"
2013-09-02 14:01:50 +00:00
exit 2
fi
2013-10-31 22:26:16 +00:00
cmd_tags="$3"
if test -z "$cmd_tags"; then
echo "Usage $0 HOSTNAME REPO TAGPATTERN"
exit 3
fi
2018-02-16 13:40:35 +00:00
set -x
# cloud-init runs with LANG='US-ASCII' which is likely to fail because of non-US-ASCII chars in the manifest
export LANG='en_US.UTF-8'
export DEBIAN_FRONTEND='noninteractive'
2016-04-20 14:44:14 +00:00
apt-get -y update
apt-get -y upgrade
2016-04-20 13:37:25 +00:00
for pkg in rsync git git-core wget; do
apt-get -y install $pkg
done
dpkg -i cosmos_1.5-1_all.deb
2013-09-02 14:01:50 +00:00
if ! test -d /var/cache/cosmos/repo; then
cosmos clone "$cmd_repo"
fi
2018-02-16 13:40:35 +00:00
# re-run cosmos at reboot until it succeeds - use bash -l to get working proxy settings
grep -v "^exit 0" /etc/rc.local > /etc/rc.local.new
(echo ""
echo "test -f /etc/run-cosmos-at-boot && (bash -l cosmos -v update; bash -l cosmos -v apply && rm /etc/run-cosmos-at-boot)"
echo ""
echo "exit 0"
) >> /etc/rc.local.new
mv -f /etc/rc.local.new /etc/rc.local
touch /etc/run-cosmos-at-boot
# If this cloud-config is set, it will interfere with our changes to /etc/hosts
grep -q 'manage_etc_hosts: true' /etc/cloud/cloud.cfg
if [ ${?} -eq 0 ]; then
sed -i 's/manage_etc_hosts: true/manage_etc_hosts: false/g' /etc/cloud/cloud.cfg
fi
2013-09-02 14:01:50 +00:00
hostname $cmd_hostname
2016-04-20 15:29:04 +00:00
short=`echo ${cmd_hostname} | awk -F. '{print $1}'`
echo "127.0.1.1 ${cmd_hostname} ${short}" >> /etc/hosts
2013-09-02 14:01:50 +00:00
2018-02-16 13:40:35 +00:00
# Set up cosmos models. They are in the order of most significant first, so we want
# <host> <group (if it exists)> <global>
_host_type=`echo $cmd_hostname | cut -d - -f 1`
models=$(
echo -n '\\$COSMOS_REPO/'"$cmd_hostname/:"
test -d /var/cache/cosmos/repo/${_host_type}-common && echo -n '\\$COSMOS_REPO/'"${_host_type}-common/:"
echo -n '\\$COSMOS_REPO/global/'
)
echo "Configuring cosmos with the following models:"
echo "${models}"
perl -pi -e "s,#COSMOS_REPO_MODELS=.*,COSMOS_REPO_MODELS=\"${models}\"," /etc/cosmos/cosmos.conf
2013-10-31 22:36:37 +00:00
perl -pi -e "s,#COSMOS_UPDATE_VERIFY_GIT_TAG_PATTERN=.*,COSMOS_UPDATE_VERIFY_GIT_TAG_PATTERN=\"${cmd_tags}*\"," /etc/cosmos/cosmos.conf
2013-09-02 14:01:50 +00:00
2013-10-31 21:18:39 +00:00
env COSMOS_BASE=/var/cache/cosmos COSMOS_KEYS=/var/cache/cosmos/repo/global/overlay/etc/cosmos/keys /var/cache/cosmos/repo/global/post-tasks.d/015cosmos-trust
2013-09-02 14:01:50 +00:00
2018-02-16 13:40:35 +00:00
mkdir -p /var/cache/scriptherder
(date; nohup cosmos -v update && nohup cosmos -v apply && rm /etc/run-cosmos-at-boot; date) 2>&1 | tee /var/log/cosmos.log
2013-09-02 14:01:50 +00:00
exit 0