salt.sh, user-data: Add Saltstack arm64 repo 97/40797/2
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Tue, 11 Jul 2017 16:57:57 +0000 (18:57 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Thu, 31 Aug 2017 23:03:48 +0000 (01:03 +0200)
These changes will only be applied on AArch64, based on `uname -m`.

While at it, add arm64 suppport to salt-master-setup.sh.
Upstream commit [1] broke Salt bootstrap on AArch64, by
introducing an architecture condition that is too strict to allow
Debian package installation (even if we provide our own repo).

Add "arm64" to the list of supported architectures. This needs
to be done on the fly, as the bootstrap script is fetched using
`curl` from <salt-master-setup.sh>.

[1] https://github.com/saltstack/salt-bootstrap/commit/caa6d7d

Change-Id: Id706a74a52ffe2f8b8c9dd3b9f70c78f35b2f745
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
mcp/patches/Makefile
mcp/patches/scripts/0001-salt-master-setup.sh-Allow-arm64-salt-bootstrap.patch [new file with mode: 0644]
mcp/scripts/salt.sh
mcp/scripts/user-data.template

index fafa83f..7468d01 100644 (file)
@@ -87,7 +87,7 @@ patches-import: sub .cachepatched
                                SUB_TAG=${F_OPNFV_TAG}-fuel$$SUB_FEATURE/patch; \
                                echo "`tput setaf 2`-- patching $$name ($$SUB_TAG)`tput sgr0`";\
                                git tag $$SUB_TAG-root && \
-                               git am -3 --whitespace=nowarn --patch-format=mbox \
+                               git am -3 --ignore-whitespace --patch-format=mbox \
                                        --committer-date-is-author-date $$SUB_PATCHES && \
                                git tag $$SUB_TAG || exit 1; \
                        fi \
diff --git a/mcp/patches/scripts/0001-salt-master-setup.sh-Allow-arm64-salt-bootstrap.patch b/mcp/patches/scripts/0001-salt-master-setup.sh-Allow-arm64-salt-bootstrap.patch
new file mode 100644 (file)
index 0000000..7e995e7
--- /dev/null
@@ -0,0 +1,51 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Fri, 1 Sep 2017 00:48:26 +0200
+Subject: [PATCH] salt-master-setup.sh: Allow arm64 salt-bootstrap
+
+Upstream commit [1] broke Salt bootstrap on AArch64, by
+introducing an architecture condition that is too strict to allow
+Debian package installation (even if we provide our own repo).
+
+Add "arm64" to the list of supported architectures. This needs
+to be done on the fly, as the bootstrap script is fetched using
+`curl` from <salt-master-setup.sh>.
+
+[1] https://github.com/saltstack/salt-bootstrap/commit/caa6d7d
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ salt-master-setup.sh | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/salt-master-setup.sh b/salt-master-setup.sh
+index 32a1fea..7454b26 100755
+--- a/salt-master-setup.sh
++++ b/salt-master-setup.sh
+@@ -237,12 +237,12 @@ install_salt_master_pkg()
+       debian)
+           $SUDO apt-get install -y git
+         which reclass || $SUDO apt install -qqq -y reclass
+-          curl -L https://bootstrap.saltstack.com | $SUDO sh -s -- -M ${BOOTSTRAP_SALTSTACK_OPTS} &>/dev/null || true
++          curl -L https://bootstrap.saltstack.com | sed 's@"amd64")@"amd64"|"arm64")@g' | $SUDO sh -s -- -M ${BOOTSTRAP_SALTSTACK_OPTS} &>/dev/null || true
+         ;;
+       rhel)
+           yum install -y git
+           which reclass || $SUDO yum install -y reclass
+-          curl -L https://bootstrap.saltstack.com | $SUDO sh -s -- -M ${BOOTSTRAP_SALTSTACK_OPTS} &>/dev/null || true
++          curl -L https://bootstrap.saltstack.com | sed 's@"amd64")@"amd64"|"arm64")@g' | $SUDO sh -s -- -M ${BOOTSTRAP_SALTSTACK_OPTS} &>/dev/null || true
+         ;;
+     esac
+
+@@ -308,10 +308,10 @@ install_salt_minion_pkg()
+
+     case $PLATFORM_FAMILY in
+       debian)
+-          curl -L https://bootstrap.saltstack.com | $SUDO sh -s -- ${BOOTSTRAP_SALTSTACK_OPTS} &>/dev/null || true
++          curl -L https://bootstrap.saltstack.com | sed 's@"amd64")@"amd64"|"arm64")@g' | $SUDO sh -s -- ${BOOTSTRAP_SALTSTACK_OPTS} &>/dev/null || true
+       ;;
+       rhel)
+-          curl -L https://bootstrap.saltstack.com | $SUDO sh -s -- ${BOOTSTRAP_SALTSTACK_OPTS} &>/dev/null || true
++          curl -L https://bootstrap.saltstack.com | sed 's@"amd64")@"amd64"|"arm64")@g' | $SUDO sh -s -- ${BOOTSTRAP_SALTSTACK_OPTS} &>/dev/null || true
+       ;;
+     esac
+
index b291b0f..70b5757 100755 (executable)
@@ -45,6 +45,10 @@ ssh ${SSH_OPTS} "${SSH_SALT}" bash -s << SALT_INSTALL_END
   cd ${OPNFV_FUEL_DIR}/mcp/patches && ./patch.sh patches.list reclass
 
   cd /srv/salt/scripts
+  if [ "\$(uname -i)" = "aarch64" ]; then
+    # NOTE(armband): On AArch64, skip creating apt source list definitions (-r)
+    export BOOTSTRAP_SALTSTACK_OPTS=" -r -dX stable 2016.11 "
+  fi
   MASTER_HOSTNAME=cfg01.${CLUSTER_DOMAIN} DISTRIB_REVISION=nightly ./salt-master-init.sh
   salt-key -Ay
 
index cc97a60..292c37c 100644 (file)
@@ -1,6 +1,10 @@
 #!/bin/bash
-wget -O - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/SALTSTACK-GPG-KEY.pub | sudo apt-key add -
-echo "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11 xenial main" > /etc/apt/sources.list.d/salt.list
+SALT_REPO=repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11
+if [ "$(uname -i)" = "aarch64" ]; then
+  SALT_REPO=linux.enea.com/saltstack/apt/ubuntu/16.04/arm64/2016.11
+fi
+wget -O - "https://${SALT_REPO}/SALTSTACK-GPG-KEY.pub" | sudo apt-key add -
+echo "deb http://${SALT_REPO} xenial main" > /etc/apt/sources.list.d/salt.list
 apt update
 apt-get install -y salt-minion
 rm /etc/salt/minion_id