You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DevOps-Bash-tools/setup/install_gcloud_sdk.sh

112 lines
3.6 KiB
Bash

#!/usr/bin/env bash
# vim:ts=4:sts=4:sw=4:et
#
# Author: Hari Sekhon
# Date: 2019-11-14 20:56:43 +0000 (Thu, 14 Nov 2019)
#
# https://github.com/HariSekhon/DevOps-Bash-tools
#
# License: see accompanying Hari Sekhon LICENSE file
#
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish
#
# https://www.linkedin.com/in/HariSekhon
#
# Install Google Cloud SDK - uses packages where available or else installs to $HOME via the script installer
#
# You may want to install manually if using Google App Engine as the docs say to not use the packaged versions of gcloud
# when installing the app engine add-ons (probably due to path write permissions)
set -euo pipefail
[ -n "${DEBUG:-}" ] && set -x
export PATH="$PATH:$HOME/google-cloud-sdk/bin"
if type -P gcloud &>/dev/null; then
echo "GCloud already installed, skipping..."
exit 0
fi
#apt_version="123.0.0-0"
#yum_version="123.0.0"
# installs to $HOME/google-cloud-sdk
install_root_dir=~
apt_optional_packages="
google-cloud-sdk-app-engine-python \
google-cloud-sdk-app-engine-python-extras \
google-cloud-sdk-app-engine-java \
google-cloud-sdk-app-engine-go \
google-cloud-sdk-datalab \
google-cloud-sdk-datastore-emulator \
google-cloud-sdk-pubsub-emulator \
google-cloud-sdk-cbt \
google-cloud-sdk-cloud-build-local \
google-cloud-sdk-bigtable-emulator \
kubectl
"
yum_optional_packages="
google-cloud-sdk-app-engine-python
google-cloud-sdk-app-engine-python-extras
google-cloud-sdk-app-engine-java
google-cloud-sdk-app-engine-go
google-cloud-sdk-bigtable-emulator
google-cloud-sdk-datalab
google-cloud-sdk-datastore-emulator
google-cloud-sdk-cbt
google-cloud-sdk-cloud-build-local
google-cloud-sdk-pubsub-emulator
kubectl
"
sudo=sudo
[ $EUID -eq 0 ] && sudo=""
echo "Installing Google Cloud SDK"
if type -P yum &>/dev/null; then
$sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOF
[google-cloud-sdk]
name=Google Cloud SDK
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y google-cloud-sdk #-$yum_version
# want splitting to single line
# shellcheck disable=SC2086
yum install -y $yum_optional_packages
# https://cloud.google.com/sdk/docs/downloads-apt-get
elif type -P apt-get &>/dev/null; then
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | $sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$sudo apt-get install -y apt-transport-https ca-certificates
curl -sS https://packages.cloud.google.com/apt/doc/apt-key.gpg |
$sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
$sudo apt-get update
$sudo apt-get install -y google-cloud-sdk #=$apt_version
# want splitting to single line
# shellcheck disable=SC2086
$sudo apt-get install -y $apt_optional_packages
elif [[ "$(uname -s)" =~ Darwin|Linux ]]; then
# https://cloud.google.com/sdk/docs/downloads-interactive
install_script="$(mktemp -t gcloud_installer.sh.XXXXXX)"
curl -sS https://sdk.cloud.google.com > "$install_script"
chmod +x "$install_script"
"$install_script" --disable-prompts --install-dir="$install_root_dir"
gcloud components install kubectl
else
echo "Unsupported OS '$(uname -s)'" >&2
exit 1
fi
# requires interactive prompts
#echo "Initializing gcloud..."
#gcloud init
echo
echo "Done. You will need to run 'gcloud init' to set up your profile."