Ubuntu install script (#289)
* Copy of Zach's install script
* Few small fixes after testing on DO droplet
* Update scripts
* Rename script
* Add sudo notice
* Fix typo
* Fix another typo
* Update docker instructions
Former-commit-id: 9e2b140e10
			
			
This commit is contained in:
		
							parent
							
								
									dcc0f91140
								
							
						
					
					
						commit
						4fa9d675ba
					
				
							
								
								
									
										11
									
								
								scripts/developer-mode-setup.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								scripts/developer-mode-setup.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/usr/bin/env bash | ||||
| # Script to automate the steps needed to make a cloned project repo runnable on the path | ||||
| # (beware of PATH having some other file with the same name ahead of ours) | ||||
| if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then | ||||
|     set -x | ||||
|     echo PATH is $PATH | ||||
| fi | ||||
| python3 -m venv venv | ||||
| source ./venv/bin/activate | ||||
| pip install --editable . | ||||
| pip install shiv | ||||
| @ -1,8 +0,0 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| python3 -m venv venv | ||||
| source ./venv/bin/activate | ||||
| pip install --editable . | ||||
| pip install shiv | ||||
| shiv -c laconic-so -o laconic-so . | ||||
| ./laconic-so --verbose --local-stack setup-repositories | ||||
							
								
								
									
										118
									
								
								scripts/quick-install-ubuntu.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										118
									
								
								scripts/quick-install-ubuntu.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,118 @@ | ||||
| #!/usr/bin/env bash | ||||
| if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then | ||||
|     set -x | ||||
| fi | ||||
| 
 | ||||
| install_dir=~/bin | ||||
| 
 | ||||
| # First display a reasonable warning to the user unless run with -y | ||||
| if ! [[ $# -eq 1 && $1 == "-y" ]]; then | ||||
|   echo "**************************************************************************************" | ||||
|   echo "This script requires sudo privilege. It installs Laconic Stack Orchestrator" | ||||
|   echo "into: ${install_dir}. It also *removes* any existing docker installed on" | ||||
|   echo "this machine and then installs the latest docker release as well as other" | ||||
|   echo "required packages." | ||||
|   echo "Only proceed if you are sure you want to make those changes to this machine." | ||||
|   echo "**************************************************************************************" | ||||
|   read -p "Are you sure you want to proceed? " -n 1 -r | ||||
|   echo | ||||
|   if [[ ! $REPLY =~ ^[Yy]$ ]]; then | ||||
|     exit 1 | ||||
|   fi | ||||
| fi | ||||
| 
 | ||||
| # This script assumes root permissions on a fresh Ubuntu Digital Ocean droplet | ||||
| # with these recommended specs: 16 GB Memory / 8 Intel vCPUs / 320 GB Disk | ||||
| 
 | ||||
| # TODO: | ||||
| #   Check python3 is available | ||||
| #   Check machine resources are sufficient | ||||
| 
 | ||||
| # dismiss the popups | ||||
| export DEBIAN_FRONTEND=noninteractive | ||||
| 
 | ||||
| ## https://docs.docker.com/engine/install/ubuntu/ | ||||
| ## https://superuser.com/questions/518859/ignore-packages-that-are-not-currently-installed-when-using-apt-get-remove1 | ||||
| packages_to_remove="docker docker-engine docker.io containerd runc" | ||||
| installed_packages_to_remove="" | ||||
| for package_to_remove in $(echo $packages_to_remove); do | ||||
|   $(dpkg --info $package_to_remove &> /dev/null) | ||||
|   if [[ $? -eq 0 ]]; then | ||||
|     installed_packages_to_remove="$installed_packages_to_remove $package_to_remove" | ||||
|   fi | ||||
| done | ||||
| 
 | ||||
| # Enable stop on error now, since we needed it off for the code above | ||||
| set -euo pipefail  ## https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ | ||||
| 
 | ||||
| if [[ -n "${installed_packages_to_remove}" ]]; then | ||||
|   echo "**************************************************************************************" | ||||
|   echo "Removing existing docker packages" | ||||
|   sudo apt -y remove $installed_packages_to_remove | ||||
| fi | ||||
| 
 | ||||
| echo "**************************************************************************************" | ||||
| echo "Installing dependencies" | ||||
| sudo apt -y update | ||||
| 
 | ||||
| # laconic-so depends on jq | ||||
| sudo apt -y install jq | ||||
| # laconic-so depends on git | ||||
| sudo apt -y install git | ||||
| # curl used below | ||||
| sudo apt -y install jq | ||||
| # docker repo add depends on gnupg and updated ca-certificates | ||||
| sudo apt -y install ca-certificates gnupg | ||||
| 
 | ||||
| # Add dockerco package repository | ||||
| sudo mkdir -m 0755 -p /etc/apt/keyrings | ||||
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg | ||||
| echo \ | ||||
|   "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ | ||||
|   "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ | ||||
|   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | ||||
| 
 | ||||
| # Penny in the update jar | ||||
| sudo apt -y update | ||||
| 
 | ||||
| echo "**************************************************************************************" | ||||
| echo "Installing docker" | ||||
| sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | ||||
| 
 | ||||
| # Allow the current user to use Docker | ||||
| sudo usermod -aG docker $USER | ||||
| 
 | ||||
| echo "**************************************************************************************" | ||||
| echo "Installing laconic-so" | ||||
| # install latest `laconic-so` | ||||
| install_filename=${install_dir}/laconic-so | ||||
| mkdir -p  ${install_dir} | ||||
| curl -L -o ${install_filename} https://github.com/cerc-io/stack-orchestrator/releases/latest/download/laconic-so | ||||
| chmod +x ${install_filename} | ||||
| 
 | ||||
| echo "**************************************************************************************" | ||||
| # Check if our PATH line is already there | ||||
| path_add_command="export PATH=\$PATH:${install_dir}" | ||||
| if ! grep -q "${path_add_command}" ~/.profile | ||||
| then | ||||
|   echo "Adding this line to the end of ~/.profile:" | ||||
|   echo ${path_add_command} | ||||
|   echo ${path_add_command} >> ~/.profile | ||||
| fi | ||||
| 
 | ||||
| echo "**************************************************************************************" | ||||
| # PATH set here for commands run in this script | ||||
| export PATH=$PATH:${install_dir} | ||||
| echo Installed laconic-so version: $(laconic-so version) | ||||
| 
 | ||||
| echo "**************************************************************************************" | ||||
| echo "The Laconic Stack Orchestrator program laconic-so has been installed at ${install_filename}" | ||||
| echo "The directory ${install_dir} has been added to PATH in *new* shells via ~/.profile" | ||||
| echo "**************************************************************************************" | ||||
| # Message the user to check docker is working for them | ||||
| echo "Please log in again (docker will not work in this current shell) then:" | ||||
| echo "test that docker is correctly installed and working for your user by running the" | ||||
| echo "command below (it should print a message beginning \"Hello from Docker!\"):" | ||||
| echo | ||||
| echo "docker run hello-world" | ||||
| echo | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user