Skip to content

Instantly share code, notes, and snippets.

@bjanderson
Last active August 9, 2020 17:07
Show Gist options
  • Select an option

  • Save bjanderson/e8609cd036dc8f1635982442e3f0132c to your computer and use it in GitHub Desktop.

Select an option

Save bjanderson/e8609cd036dc8f1635982442e3f0132c to your computer and use it in GitHub Desktop.
#!/bin/bash
# Author: Bartley Anderson (http://bjspage.com)
# License: MIT
# Github: https://gist.github.com/bjanderson/e8609cd036dc8f1635982442e3f0132c
# Based on the instructions from: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
ACTION='install'
OS='ubuntu16'
PIN=0
# set default OS if using a supported version of Ubuntu
VERSION="$(uname -v)"
UBUNTU=$(echo $VERSION | egrep -o 'Ubuntu')
UBUNTU_VERSION=$(echo $VERSION | egrep -o '~[0-9][0-9]' | egrep -o '[0-9][0-9]')
if [ $UBUNTU = 'Ubuntu' ]; then
if [ $UBUNTU_VERSION = "16" ]; then
OS='ubuntu16'
elif [ $UBUNTU_VERSION = "14" ]; then
OS='ubuntu14'
elif [ $UBUNTU_VERSION = "12" ]; then
OS='ubuntu12'
fi
fi
display_usage() {
echo "usage: ./install-mongodb.sh [ACTION] [OS] [PIN]"
echo "Install the latest version of MongoDB 3.2 on Ubuntu based distributions."
echo "This script only supports intalling MongoDB on Ubuntu 12.04, 14.04, 16.04, and their respective derivative distros."
echo
echo "defaults:"
echo " ACTION: install"
echo " OS: User's OS if using a supported version of Ubuntu"
echo " PIN: false"
echo
echo " -h, --help Display this help message"
echo
echo " ACTION:"
echo " -i, --install Install MongoDB"
echo " -u, --uninstall Uninstall MongoDB"
echo
echo " OS:"
echo " -u16, --ubuntu16 Install on Ubuntu 16.04 based distro"
echo " -u14, --ubuntu14 Install on Ubuntu 14.04 based distro"
echo " -u12, --ubuntu12 Install on Ubuntu 12.04 based distro"
echo
echo " PIN:"
echo " -p, --pin Pin MongoDB version so that automatic upgrades do not cause incompatibilities"
echo
exit
}
# Read input params
while [[ $# -gt 0 ]]; do
case "$1" in
-u16|--ubuntu16 )
OS='ubuntu16'
;;
-u14|--ubuntu14 )
OS='ubuntu14'
;;
-u12|--ubuntu12 )
OS='ubuntu12'
;;
-i|--install )
ACTION='install'
;;
-u|--uninstall )
ACTION='uninstall'
;;
-p|--pin )
PIN=1
;;
-h|--help )
display_usage
;;
esac
shift
done
# install/uninstall MongoDB
if [ $ACTION = "uninstall" ]; then
echo "Uninstalling MongoDB..."
sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
else
echo "Installing MongoDB..."
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
if [ $OS = "ubuntu16" ]; then
echo "Target OS - Ubuntu 16.04"
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
elif [ $OS = "ubuntu14" ]; then
echo "Target OS - Ubuntu 14.04"
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
elif [ $OS = "ubuntu12" ]; then
echo "Target OS - Ubuntu 12.04"
echo "deb http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.2 multiverse | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list"
fi
sudo apt-get update
sudo apt-get install -y mongodb-org
if [[ $PIN -eq 1 ]]; then
echo "Pinning MongoDB version..."
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
fi
if [ $OS = "ubuntu16" ]; then
echo "Target OS - Ubuntu 16.04"
echo "[Unit]" | sudo tee /lib/systemd/system/mongod.service > /dev/null
echo "Description=High-performance, schema-free document-oriented database" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "After=network.target" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "Documentation=https://docs.mongodb.org/manual" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "[Service]" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "User=mongodb" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "Group=mongodb" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "[Install]" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
echo "WantedBy=multi-user.target" | sudo tee --append /lib/systemd/system/mongod.service > /dev/null
fi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment