Skip to content

Instantly share code, notes, and snippets.

@RyanHendricks
Last active June 27, 2020 18:17
Show Gist options
  • Save RyanHendricks/e6de1ad3067e59614fd5ffc352436974 to your computer and use it in GitHub Desktop.
Save RyanHendricks/e6de1ad3067e59614fd5ffc352436974 to your computer and use it in GitHub Desktop.
Ubuntu Instance Init #bash
#!/bin/bash
# Usage:
#
# ./ubuntu4you.sh
#
# User must then logout and login upon completion of script
#
# Exit on any failure
set -e
# Array of supported versions
declare -a versions=('bionic', 'trusty' 'xenial' 'yakkety', 'disco', 'eoan', 'focal');
# check the version and extract codename of ubuntu if release codename not provided by user
if [ -z "$1" ]; then
source /etc/lsb-release || \
(echo "Error: Release information not found, run script passing Ubuntu version codename as a parameter"; exit 1)
CODENAME=${DISTRIB_CODENAME}
else
CODENAME=${1}
fi
# check version is supported
if echo ${versions[@]} | grep -q -w ${CODENAME}; then
echo "Installing Catalyst Custom Server Provisions for ${CODENAME}"
else
echo "Error: Ubuntu ${CODENAME} is not supported"
exit 1
fi
# Update package lists
echo "# Updating package lists"
sudo apt-get update
# Update package lists
echo "# Upgrading package lists"
sudo apt-get upgrade
# Install Git
echo "# Installing Git"
sudo apt-get -y install git
# Install nvm dependencies
echo "# Installing nvm dependencies"
sudo apt-get -y install build-essential libssl-dev
# Execute nvm installation script
echo "# Executing nvm installation script"
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
# Set up nvm environment without restarting the shell
export NVM_DIR="${HOME}/.nvm"
[ -s "${NVM_DIR}/nvm.sh" ] && . "${NVM_DIR}/nvm.sh"
[ -s "${NVM_DIR}/bash_completion" ] && . "${NVM_DIR}/bash_completion"
# Install node
echo "# Installing nodeJS"
nvm install v12.18.1
# Configure nvm to use version v12.18.1
nvm use v12.18.1
nvm alias default v12.18.1
# Install the latest version of npm
echo "# Installing npm"
npm install -g npm@latest
# Ensure that CA certificates are installed
sudo apt-get -y install apt-transport-https ca-certificates
# Add Docker repository key to APT keychain
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Update where APT will search for Docker Packages
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu ${CODENAME} stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
# Update package lists
sudo apt-get update
# Verifies APT is pulling from the correct Repository
sudo apt-cache policy docker-ce
# Install kernel packages which allows us to use aufs storage driver if V14 (trusty/utopic)
if [ "${CODENAME}" == "trusty" ]; then
echo "# Installing required kernel packages"
sudo apt-get -y install linux-image-extra-$(uname -r) linux-image-extra-virtual
fi
# Install Docker
echo "# Installing Docker"
sudo apt-get -y install docker-ce
# Add user account to the docker group
sudo usermod -aG docker $(whoami)
# Install docker compose
echo "# Installing Docker-Compose"
sudo curl -L https://github.com/docker/compose/releases/download/1.26.0-rc5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Install python v2 if required
set +e
COUNT="$(python -V 2>&1 | grep -c 2.)"
if [ ${COUNT} -ne 1 ]
then
sudo apt-get install -y python-minimal
fi
# Install Cockpit
echo "# Installing Cockpit"
sudo add-apt-repository ppa:cockpit-project/cockpit
# Install Cockpit
echo "# Installing Docker Cockpit"
sudo apt-get update && sudo apt-get -y install cockpit cockpit-docker
# Install Cockpit
echo "# Starting Cockpit"
sudo systemctl start cockpit
sudo systemctl enable cockpit
# Print installation details for user
echo ''
echo 'Installation completed, versions installed are:'
echo ''
echo -n 'Node: '
node --version
echo -n 'npm: '
npm --version
echo -n 'Docker: '
docker --version
echo -n 'Docker Compose: '
docker-compose --version
echo -n 'Python: '
python -V
# Print reminder of need to logout in order for these changes to take effect!
echo ''
echo "Please logout then login before continuing."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment