Last active
August 9, 2020 17:07
-
-
Save bjanderson/e8609cd036dc8f1635982442e3f0132c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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