aboutsummaryrefslogtreecommitdiffstats
path: root/mcp/scripts/salt.sh
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-07-29 22:49:26 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-08-01 00:16:27 +0200
commit8d7128a62cd2f9b3df1d59bf4aa4fa7a387b1679 (patch)
tree9d6dba2a15d15b7f82668d23373a3ddd28ce9aa9 /mcp/scripts/salt.sh
parent9dfd08262dd3cf833c84cd1c7c1b05c25e09862b (diff)
salt.sh: Drop upstream clone in favor of local git
salt.sh currently clones the full Fuel@OPNFV git repo from upstream public mirror, preventing us from testing locally edited or new patches. Instead, bring back git submodule handling from old f_repos, clone and patch each submodule locally, then copy the whole parent repo over to cfg01. This is also a first step towards implementing offline deploy support. NOTE: This adds new deploy prerequisite packages: - git (for submodule clone/update); - make (for submodule patching); - rsync (for parent repo replication to cfg01); NOTE: Parent repository is expected to be a git repo, in order to work with git submodules. While at it, perform some minor related changes: - add deploy artifacts (ISOs, qcow2 files) to .gitignore, also used to filter-out such files during rsync to cfg01; - remove obsolete Fuel patches (old f_repos mechanism); - rename "reclass-system-salt-model" submodule; Change-Id: I6210d80d41010b2802e4f1b31acf249a18db7963 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Diffstat (limited to 'mcp/scripts/salt.sh')
-rwxr-xr-xmcp/scripts/salt.sh44
1 files changed, 34 insertions, 10 deletions
diff --git a/mcp/scripts/salt.sh b/mcp/scripts/salt.sh
index 4c6cbf782..3d0fb9117 100755
--- a/mcp/scripts/salt.sh
+++ b/mcp/scripts/salt.sh
@@ -1,34 +1,58 @@
#!/bin/bash
+##############################################################################
+# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
#
# Deploy Salt Master
#
+F_GIT_ROOT=$(git rev-parse --show-toplevel)
+SALT_MASTER_USER=${SALT_MASTER_USER:-ubuntu}
+SSH_SALT="${SALT_MASTER_USER}@${SALT_MASTER}"
+OPNFV_TMP_DIR="/home/${SALT_MASTER_USER}/fuel"
+OPNFV_FUEL_DIR="/root/fuel"
+
+# patch reclass-system-salt-model locally before copying it over
+make -C "${F_GIT_ROOT}/mcp/patches" patches-import
+
+# push to cfg01 current git repo first (including submodules), at ~ubuntu/fuel
+# later we move it to ~root/fuel and delete the temporary clone
+rsync -Erl --delete -e "ssh ${SSH_OPTS}" \
+ --exclude-from="${F_GIT_ROOT}/.gitignore" \
+ "${F_GIT_ROOT}/" "${SSH_SALT}:$(basename "${OPNFV_TMP_DIR}")/"
+
# ssh to cfg01
# shellcheck disable=SC2086,2087
-ssh ${SSH_OPTS} "ubuntu@${SALT_MASTER}" bash -s << SALT_INSTALL_END
+ssh ${SSH_OPTS} "${SSH_SALT}" bash -s << SALT_INSTALL_END
sudo -i
echo -n 'Checking out cloud-init has finished running ...'
while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo -n '.'; sleep 1; done
echo ' done'
- apt-get install -y git curl subversion
+ DEBIAN_FRONTEND=noninteractive apt-get install -y git curl subversion
- svn export --force https://github.com/salt-formulas/salt-formulas/trunk/deploy/scripts /srv/salt/scripts
- git clone --depth=1 --recurse-submodules https://git.opnfv.org/fuel
- ln -s /root/fuel/mcp/reclass /srv/salt/reclass
+ svn export --force \
+ https://github.com/salt-formulas/salt-formulas/trunk/deploy/scripts /srv/salt/scripts
+ mv ${OPNFV_TMP_DIR} ${OPNFV_FUEL_DIR} && chown -R root.root ${OPNFV_FUEL_DIR}
+ ln -s ${OPNFV_FUEL_DIR}/mcp/reclass /srv/salt/reclass
mkdir -p /usr/share/salt-formulas/reclass
- cp -r /root/fuel/mcp/metadata/service /usr/share/salt-formulas/reclass
- cd /srv/salt/reclass/classes/service && ln -s /usr/share/salt-formulas/reclass/service/opendaylight
- cd /root/fuel/mcp/patches && ./patch.sh patches.list reclass
+ cp -r ${OPNFV_FUEL_DIR}/mcp/metadata/service /usr/share/salt-formulas/reclass
+ cd /srv/salt/reclass/classes/service && \
+ ln -s /usr/share/salt-formulas/reclass/service/opendaylight
+ cd ${OPNFV_FUEL_DIR}/mcp/patches && ./patch.sh patches.list reclass
cd /srv/salt/scripts
MASTER_HOSTNAME=cfg01.${CLUSTER_DOMAIN} DISTRIB_REVISION=nightly ./salt-master-init.sh
salt-key -Ay
- cp -r /root/fuel/mcp/salt-formulas/* /usr/share/salt-formulas/env
- cd /root/fuel/mcp/patches && ./patch.sh patches.list formulas
+ cp -r ${OPNFV_FUEL_DIR}/mcp/salt-formulas/* /usr/share/salt-formulas/env
+ cd ${OPNFV_FUEL_DIR}/mcp/patches && ./patch.sh patches.list formulas
salt-call state.apply salt
salt '*' state.apply salt | fgrep -q 'No response' && salt '*' state.apply salt