#!/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