aboutsummaryrefslogtreecommitdiffstats
path: root/deployment/aks/pre_install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'deployment/aks/pre_install.sh')
-rwxr-xr-xdeployment/aks/pre_install.sh108
1 files changed, 108 insertions, 0 deletions
diff --git a/deployment/aks/pre_install.sh b/deployment/aks/pre_install.sh
new file mode 100755
index 000000000..6bbbab9b6
--- /dev/null
+++ b/deployment/aks/pre_install.sh
@@ -0,0 +1,108 @@
+#!/bin/bash
+# Copyright 2019 AT&T Intellectual Property. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+KUBE_VERSION=$1
+LOCATION=$2
+
+COMMANDS="kubectl helm make java az"
+
+CLI_MAJOR="2"
+CLI_MINOR="0"
+CLI_INC="75"
+
+function check_requirement() {
+ req=$1
+
+ command -v $1
+ if [ $? -ne 0 ]; then
+ echo "$1 was not found on machine. Please install it before proceeding."
+ exit 1
+ fi
+}
+
+echo "Checking requirements are installed..."
+
+for req in $COMMANDS; do
+ check_requirement $req
+done
+
+echo "Checking K8 version is available in Azure..."
+if [ -z "$KUBE_VERSION" ]; then
+ echo "K8 version not provided in cloud.conf."
+ echo "Update cloud.conf with the desired version."
+ exit 1
+fi
+
+if [ -z "$LOCATION" ]; then
+ echo "Location not provided in cloud.conf."
+ echo "Update cloud.conf with the desired location."
+ exit 1
+fi
+
+supported_k8_versions=`az aks get-versions --location $LOCATION --output json --query 'orchestrators[].orchestratorVersion'`
+echo $supported_k8_versions | grep -q $KUBE_VERSION
+if [ $? -ne 0 ]; then
+ echo "K8 version $KUBE_VERSION is not supported in location $LOCATION"
+ echo "The supported versions are $supported_k8_versions."
+ echo "Update cloud.conf with a supported version."
+ exit 1
+fi
+
+echo "Checking Azure CLI version..."
+installed_cli_version=`az --version | grep -e "^azure-cli" | awk '{print $2}'`
+installed_major=`echo $installed_cli_version | cut -d "." -f 1`
+installed_minor=`echo $installed_cli_version | cut -d "." -f 2`
+installed_inc=`echo $installed_cli_version | cut -d "." -f 3`
+
+if [ $installed_major -lt $CLI_MAJOR ]; then
+ echo "Azure cli version is out of date."
+ echo "Major version required is $CLI_MAJOR but $installed_major is installed."
+ exit 1
+fi
+
+if [ $installed_minor -lt $CLI_MINOR ]; then
+ echo "Azure cli version is out of date."
+ echo "Minor version required is $CLI_INC but $installed_inc is installed."
+ exit 1
+fi
+
+if [ $installed_inc -lt $CLI_INC ]; then
+ echo "Azure cli version is out of date."
+ echo "Incremental version required is $CLI_INC but $installed_inc is installed."
+ exit 1
+fi
+
+echo "Checking kubectl version is compatible with the K8 version..."
+kubectl_version=`kubectl version --client --short | awk '{print $3}'`
+kubectl_major=`echo $kubectl_version | cut -d "." -f 1 | sed 's/v//'`
+kubectl_minor=`echo $kubectl_version | cut -d "." -f 2`
+k8_major=`echo $KUBE_VERSION | cut -d "." -f 1`
+k8_minor=`echo $KUBE_VERSION | cut -d "." -f 2`
+
+if [ $kubectl_major -ne $k8_major ]; then
+ echo "kubectl major version $kubectl_major doesn't equal kubernetes server version $k8_major"
+ exit 1
+fi
+
+minor_difference=`echo "$(($kubectl_minor-$k8_minor))"`
+minor_abs_diff=`echo $minor_difference | tr -d -`
+if [ $minor_abs_diff -gt 1 ]; then
+ echo "The difference between k8 minor version $KUBE_VERSION and kubectl minor version $kubectl_version is greater than 1"
+ echo "Kubernetes supports kubectl within 1 minor version."
+ exit 1
+fi
+
+echo "All requirements satisfied..."
+sleep 1