Last active
February 9, 2017 14:52
-
-
Save danielalvarenga/5febb210c1d999f760a162666382a0d6 to your computer and use it in GitHub Desktop.
Shell Script Configure Ubuntu 16.04 LTS (customizable for vagrant provision)
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 | |
# Autor: Daniel Alvarenga Lima | |
# Versão do Ubuntu suportada: 16.04 64Bit | |
# Versão deste Script: 2016-12-17 | |
# EXECUTE | |
# sudo chmod +x script-install-all-ubuntu.sh | |
# ./script-install-all-ubuntu.sh | |
#INSTRUCTIONS | |
# Change "true" por "false" to ignore software setup | |
# Required only in the first time to execute this script | |
UPDATE_REPOSITORIES=true | |
# build-essential, git, curl, libs, zip, rar, nodejs | |
ESSENCIALS=true | |
# Add color for user, host, folder and git branch | |
COLORIZE_TERMINAL=true | |
# Configure GIT | |
CONFIGURE_GITHUB=true | |
GITHUB_NAME="YOUR_NAME" | |
GITHUB_MAIL="YOUR_GITHUB_EMAIL" | |
GITHUB_USER="YOUR_USERNAME" | |
CONFIGURE_GITLAB=true | |
GITLAB_HOSTNAME="YOUR_GITLAB_DOMAIN" | |
GITLAB_MAIL="YOUR_GITLAB_EMAIL" | |
# java | |
JAVA_ORACLE=true | |
JAVA_VERSION=8 | |
# if true force not install gimp, vlc, wine, torrent, spotify, filezilla, avanced_apps, google chrome, sublime text, team viewer, eclipse and resolve touchpad | |
VAGRANT_PROVISION=false | |
VAGRANT_USER=vagrant | |
VAGRANT_SYNCED_FOLDER=/vagrant | |
# image editor | |
GIMP=true | |
# player and codecs | |
VLC=true | |
# webcam | |
CHEESE=true | |
# storage | |
DROPBOX=true | |
# manage windows programs | |
WINE=true | |
# qBitTorrent | |
TORRENT=false | |
# online musics | |
SPOTIFY=true | |
# client FTP | |
FILEZILLA=false | |
# vagrant rpogram | |
VAGRANT=true | |
# synaptic, gparted, terminator | |
ADVANCED_APPS=true | |
# google chrome | |
GOOGLE_CHROME=true | |
# sublime text | |
SUBLIME_TEXT=true | |
# remote control | |
TEAM_VIEWER=true | |
# database sqlite | |
SQLITE=true | |
# database postgresql, pg admin | |
POSTGRESQL=true | |
# database manager postgresql | |
PGADMIN=true | |
# database mysql | |
MYSQL=true | |
MYSQL_USER=root | |
MYSQL_PASSWORD=root | |
# database manager mysql | |
WORKBENCH=true | |
# ruby | |
RUBY_WITH_RVM=false | |
RUBY_WITH_RBENV=true # only install if RUBY_WITH_RVM is false | |
RUBY_WITHOUT_VERSION_MANAGER=false # only install if RUBY_WITH_RVM and RUBY_WITH_RBENV is false | |
RUBY_VERSION=2.3.3 | |
RUBY_VERSION_PATH=2.3 | |
#rails | |
RAILS=false | |
RAILS_VERSION=5.0.0.1 | |
# memcached, redis, rabbit, imagemagick | |
DEV_EXTRAS=true | |
# resolve specific touchpad problem in DELL Inspiron 13 7000 | |
RESOLVE_TOUCHPAD=false | |
# paths | |
LOG_SCRIPT=./log_script.txt | |
GITCONFIG=/etc/gitconfig | |
SSH_FOLDER=~/.ssh | |
SSHCONFIG="$SSH_FOLDER/config" | |
DOWNLOADS=~/Downloads | |
BASHRC=~/.bashrc | |
MOUSE_CONFIG=/usr/share/X11/xorg.conf.d/52-mymods.conf | |
RBENV_DIR=~/.rbenv | |
RUBY_BUILD_DIR="$RBENV_DIR/plugins/ruby-build" | |
REHASH_DIR="$RBENV_DIR/plugins/rbenv-gem-rehash" | |
if $VAGRANT_PROVISION | |
then | |
GIMP=false | |
VLC=false | |
CHEESE=false | |
DROPBOX=false | |
WINE=false | |
TORRENT=false | |
SPOTIFY=false | |
FILEZILLA=false | |
VAGRANT=false | |
ADVANCED_APPS=false | |
GOOGLE_CHROME=false | |
SUBLIME_TEXT=false | |
TEAM_VIEWER=false | |
RESOLVE_TOUCHPAD=false | |
PGADMIN=false | |
WORKBENCH=false | |
#paths | |
LOG_SCRIPT=$VAGRANT_SYNCED_FOLDER/log_script.txt | |
DOWNLOADS=$VAGRANT_SYNCED_FOLDER | |
BASHRC=/home/$VAGRANT_USER/.bashrc | |
SSH_FOLDER=/home/$VAGRANT_USER/.ssh | |
RBENV_DIR=/home/$VAGRANT_USER/.rbenv | |
RUBY_BUILD_DIR=$RBENV_DIR/plugins/ruby-build | |
REHASH_DIR=$RBENV_DIR/plugins/rbenv-gem-rehash | |
fi | |
function install { | |
echo installing $1 | |
shift | |
sudo apt-get -y -f install "$@" >$LOG_SCRIPT 2>$LOG_SCRIPT | |
} | |
if $UPDATE_REPOSITORIES | |
then | |
echo "*** Add repositories" | |
sudo add-apt-repository -y ppa:chris-lea/node.js | |
sudo add-apt-repository -y ppa:webupd8team/java | |
echo "*** Add the Spotify repository" | |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886 | |
echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list | |
echo "*** Update and upgrade" | |
sudo apt-get update | |
sudo apt-get -y upgrade | |
fi | |
if $ESSENCIALS | |
then | |
install "Build Essencial" build-essential | |
install Git git-core | |
install CURL curl | |
install DevLibs zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev python-software-properties | |
install "Nokogiri gem dependencies" libxml2 libxml2-dev libxslt1-dev | |
install 7zip p7zip-full | |
install RAR p7zip-rar | |
install NodeJS nodejs | |
install Vim vim | |
fi | |
if $JAVA_ORACLE | |
then | |
sudo apt-get -y remove --purge openjdk-* | |
echo oracle-java$JAVA_VERSION-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections | |
install "Java $JAVA_VERSION" oracle-java$JAVA_VERSION-installer | |
install SetDefaultJava$JAVA_VERSION oracle-java$JAVA_VERSION-set-default | |
install Maven maven | |
fi | |
if $GIMP | |
then | |
install Gimp gimp | |
fi | |
if $VLC | |
then | |
install VLC vlc | |
fi | |
if $CHEESE | |
then | |
install Cheese cheese | |
fi | |
if $DROPBOX | |
then | |
install Dropbox nautilus-dropbox | |
fi | |
if $WINE | |
then | |
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections | |
install Wine wine | |
fi | |
if $TORRENT | |
then | |
install qBitTorrent qbittorrent | |
fi | |
if $SPOTIFY | |
then | |
install Spotify spotify-client | |
fi | |
if $FILEZILLA | |
then | |
install FileZilla filezilla | |
fi | |
if $VAGRANT | |
then | |
install VirtualBox virtualbox | |
echo "*** installing Vagrant" | |
VAGRANT_FILE=$DOWNLOADS/vagrant_1.9.1_x86_64.deb | |
if [ -f $VAGRANT_FILE ] | |
then | |
echo "" | |
else | |
cd $DOWNLOADS | |
wget https://releases.hashicorp.com/vagrant/1.9.1/vagrant_1.9.1_x86_64.deb | |
fi | |
sudo dpkg -i $VAGRANT_FILE | |
install "Vagrant extras" nfs-kernel-server nfs-common portmap | |
echo "*** installing Vagrant plugins" | |
vagrant plugin install vagrant-omnibus >$LOG_SCRIPT 2>$LOG_SCRIPT | |
vagrant plugin install vagrant-berkshelf | |
echo "*** installing CHEF-DK 64bits" | |
CHEF_FILE=$DOWNLOADS/chefdk_1.0.3-1_amd64.deb | |
if [ -f $CHEF_FILE ] | |
then | |
echo "" | |
else | |
cd $DOWNLOADS | |
wget https://packages.chef.io/files/stable/chefdk/1.0.3/ubuntu/16.04/chefdk_1.0.3-1_amd64.deb | |
fi | |
sudo dpkg -i $CHEF_FILE | |
fi | |
if $ADVANCED_APPS | |
then | |
install Synaptic synaptic # gerenciador de pacotes do linux | |
install GParted gparted # gerenciador de dicos avançado | |
install Terminator terminator # terminal | |
fi | |
if $GOOGLE_CHROME | |
then | |
echo "*** installing Google Chrome 64bits" | |
install "Google chrome dependencies" libindicator7 libappindicator1 gconf2-common gconf-service-backend libasound2-data libasound2 libgconf-2-4 libnspr4 libnss3-nssdb libnss3 libxft2 libpangox-1.0-0 libpangoxft-1.0-0 libpango1.0-0 libxss1 fonts-liberation xdg-utils gconf-service | |
CHROME_FILE=$DOWNLOADS/google-chrome-stable_current_amd64.deb | |
if [ -f $CHROME_FILE ] | |
then | |
echo "" | |
else | |
cd $DOWNLOADS | |
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb | |
fi | |
sudo dpkg -i $CHROME_FILE | |
fi | |
if $SUBLIME_TEXT | |
then | |
echo "*** installing Sublime Text 3 64bits" | |
SUBLIME_FILE=$DOWNLOADS/sublime-text_build-3126_amd64.deb | |
if [ -f $SUBLIME_FILE ] | |
then | |
echo "" | |
else | |
cd $DOWNLOADS | |
wget https://download.sublimetext.com/sublime-text_build-3126_amd64.deb | |
fi | |
sudo dpkg -i $SUBLIME_FILE | |
fi | |
if $TEAM_VIEWER | |
then | |
echo "*** installing Team Viewer" | |
install "Team Viewer dpendencies" libjpeg62 libxtst6 libjpeg62:i386 libxtst6:i386 | |
TEAM_VIEWER_FILE=$DOWNLOADS/teamviewer_i386.deb | |
if [ -f $TEAM_VIEWER_FILE ] | |
then | |
echo "" | |
else | |
cd $DOWNLOADS | |
wget https://download.teamviewer.com/download/teamviewer_i386.deb | |
fi | |
sudo dpkg -i $TEAM_VIEWER_FILE | |
fi | |
if $SQLITE | |
then | |
install SQLite sqlite3 libsqlite3-dev | |
fi | |
if $POSTGRESQL | |
then | |
install PostgreSQL postgresql postgresql-contrib libpq-dev | |
fi | |
if $PGADMIN | |
then | |
install "PG Admin" pgadmin3 | |
fi | |
if $MYSQL | |
then | |
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $MYSQL_USER" | |
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD" | |
install MySQL mysql-server mysql-client libmysqlclient-dev | |
mysql -uroot -proot <<SQL | |
CREATE USER 'rails'@'localhost'; | |
CREATE DATABASE activerecord_unittest DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; | |
CREATE DATABASE activerecord_unittest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; | |
GRANT ALL PRIVILEGES ON activerecord_unittest.* to 'rails'@'localhost'; | |
GRANT ALL PRIVILEGES ON activerecord_unittest2.* to 'rails'@'localhost'; | |
GRANT ALL PRIVILEGES ON inexistent_activerecord_unittest.* to 'rails'@'localhost'; | |
SQL | |
fi | |
if $WORKBENCH | |
then | |
echo "*** installing Workbench" | |
install "Workbench dependeencies" libctemplate2v5 libgeos-3.5.0 libgeos-c1v5 libhdf4-0-alt libaec0 libsz2 libhdf5-10 libnetcdf11 libpcrecpp0v5 libpq5 libtinyxml2.6.2v5 libzip4 python-crypto python-six python-ecdsa python-paramiko | |
WORKBENCH_FILE=$DOWNLOADS/mysql-workbench-community-6.3.8-1ubu1604-amd64.deb | |
if [ -f $WORKBENCH_FILE ] | |
then | |
echo "" | |
else | |
cd $DOWNLOADS | |
wget https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-6.3.8-1ubu1604-amd64.deb | |
fi | |
sudo dpkg -i $WORKBENCH_FILE | |
fi | |
if $RUBY_WITH_RVM | |
then | |
echo "installing RVM with RUBY $RUBY_VERSION" | |
if ! type rvm >$LOG_SCRIPT 2>$LOG_SCRIPT; then | |
cd | |
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 | |
install "RVM dependencies" gawk libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison | |
curl -sSL https://get.rvm.io | bash -s stable | |
source ~/.rvm/scripts/rvm | |
fi | |
rvm requirements | |
rvm install ruby-$RUBY_VERSION | |
rvm use $RUBY_VERSION --default | |
gem install bundler -N >$LOG_SCRIPT 2>$LOG_SCRIPT | |
elif $RUBY_WITH_RBENV | |
then | |
echo "installing Rbenv with Ruby $RUBY_VERSION" | |
install "Rbenv dependencies" autoconf bison libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev | |
if [ -d $RBENV_DIR ] | |
then | |
cd $RBENV_DIR | |
git pull | |
else | |
git clone https://github.com/rbenv/rbenv.git $RBENV_DIR | |
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc | |
echo 'eval "$(rbenv init -)"' >> ~/.bashrc | |
export PATH="$HOME/.rbenv/bin:$PATH" | |
eval "$(rbenv init -)" | |
fi | |
if [ -d $RUBY_BUILD_DIR ] | |
then | |
cd $RUBY_BUILD_DIR | |
git pull | |
else | |
git clone https://github.com/rbenv/ruby-build.git $RUBY_BUILD_DIR | |
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc | |
export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH" | |
cd $RUBY_BUILD_DIR | |
./install.sh | |
fi | |
rbenv install $RUBY_VERSION -s | |
rbenv global $RUBY_VERSION | |
rbenv rehash | |
echo installing Bundler | |
echo "gem: --no-ri --no-rdoc" > ~/.gemrc | |
gem install bundler -N >$LOG_SCRIPT 2>$LOG_SCRIPT | |
rbenv rehash | |
elif $RUBY_WITHOUT_VERSION_MANAGER | |
then | |
install Ruby ruby$RUBY_VERSION_PATH ruby$RUBY_VERSION_PATH-dev | |
update-alternatives --set ruby /usr/bin/ruby$RUBY_VERSION_PATH >$LOG_SCRIPT 2>$LOG_SCRIPT | |
update-alternatives --set gem /usr/bin/gem$RUBY_VERSION_PATH >$LOG_SCRIPT 2>$LOG_SCRIPT | |
echo "installing Bundler" | |
gem install bundler -N >$LOG_SCRIPT 2>$LOG_SCRIPT | |
fi | |
if $RAILS | |
then | |
echo "installing Rails $RAILS_VERSION" | |
gem install rails -v $RAILS_VERSION -N >$LOG_SCRIPT 2>$LOG_SCRIPT | |
fi | |
if $DEV_EXTRAS | |
then | |
install memcached memcached | |
install Redis redis-server | |
install RabbitMQ rabbitmq-server | |
install ImageMagick imagemagick | |
cd | |
fi | |
if $RESOLVE_TOUCHPAD | |
then | |
sudo touch $MOUSE_CONFIG | |
sudo chmod 777 $MOUSE_CONFIG | |
echo -e Section \"InputClass\" > $MOUSE_CONFIG | |
echo -e Identifier \"Force Clickpad Config\" >> $MOUSE_CONFIG | |
echo -e MatchDriver \"synaptics\" >> $MOUSE_CONFIG | |
echo -e Option \"ClickPad\" \"true\" >> $MOUSE_CONFIG | |
echo -e Option \"EmulateMidButtonTime\" \"0\" >> $MOUSE_CONFIG | |
echo -e Option \"SoftButtonAreas\" \"50% 0 82% 0 0 0 0 0\" >> $MOUSE_CONFIG | |
echo -e Option \"SecondarySoftButtonAreas\" \"58% 0 0 15% 42% 58% 0 15%\" >> $MOUSE_CONFIG | |
echo -e EndSection >> $MOUSE_CONFIG | |
fi | |
if $COLORIZE_TERMINAL | |
then | |
echo -e "function parse_git_branch () {" >> $BASHRC | |
echo -e " git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'" >> $BASHRC | |
echo -e "}" >> $BASHRC | |
echo -e 'RED="\[\033[01;31m\]"' >> $BASHRC | |
echo -e 'YELLOW="\[\033[01;33m\]"' >> $BASHRC | |
echo -e 'GREEN="\[\033[01;32m\]"' >> $BASHRC | |
echo -e 'BLUE="\[\033[01;34m\]"' >> $BASHRC | |
echo -e 'NO_COLOR="\[\033[00m\]"' >> $BASHRC | |
echo -e 'PS1="$GREEN\u@\h$NO_COLOR:$BLUE\w$YELLOW\$(parse_git_branch)$NO_COLOR\$ "' >> $BASHRC | |
source $BASHRC | |
fi | |
echo "*** remove packages" | |
sudo apt-get clean | |
if $CONFIGURE_GITHUB | |
then | |
sudo rm $GITCONFIG | |
sudo touch $GITCONFIG | |
sudo chmod 777 $GITCONFIG | |
echo -e "[user]" >> $GITCONFIG | |
echo -e " name = $GITHUB_NAME" >> $GITCONFIG | |
echo -e " email = $GITHUB_MAIL" >> $GITCONFIG | |
echo -e "[core]" >> $GITCONFIG | |
echo -e " editor = vim -f" >> $GITCONFIG | |
echo -e "[alias]" >> $GITCONFIG | |
echo -e " df = diff" >> $GITCONFIG | |
echo -e " st = status" >> $GITCONFIG | |
echo -e " cm = commit" >> $GITCONFIG | |
echo -e " ch = checkout" >> $GITCONFIG | |
echo -e " br = branch" >> $GITCONFIG | |
echo -e " lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative" >> $GITCONFIG | |
echo -e " ctags = !.git/hooks/ctags" >> $GITCONFIG | |
echo -e "[color]" >> $GITCONFIG | |
echo -e " branch = auto" >> $GITCONFIG | |
echo -e " diff = auto" >> $GITCONFIG | |
echo -e " grep = auto" >> $GITCONFIG | |
echo -e " interactive = auto" >> $GITCONFIG | |
echo -e " status = auto" >> $GITCONFIG | |
echo -e " ui = 1" >> $GITCONFIG | |
echo -e "[branch]" >> $GITCONFIG | |
echo -e " autosetuprebase = always" >> $GITCONFIG | |
echo -e "[github]" >> $GITCONFIG | |
echo -e " user = $GITHUB_USER" >> $GITCONFIG | |
ssh-keygen -t rsa -b 4096 -C "$GITHUB_MAIL" -N "" -f $SSH_FOLDER/id_rsa_github | |
echo "" | |
echo "" | |
echo "**********************" | |
echo "CONFIGURE GIT USER" | |
echo "" | |
echo "Adicione a public ssh key em 'https://github.com/settings/ssh':" | |
echo "" | |
cat $SSH_FOLDER/id_rsa_github.pub | |
echo "" | |
echo "**********************" | |
touch $SSHCONFIG | |
echo -e "#Github (default)" >> $SSHCONFIG | |
echo -e " Host github" >> $SSHCONFIG | |
echo -e " HostName github.com" >> $SSHCONFIG | |
echo -e " User git" >> $SSHCONFIG | |
echo -e " IdentityFile $SSH_FOLDER/id_rsa_github" >> $SSHCONFIG | |
fi | |
if $CONFIGURE_GITLAB | |
then | |
ssh-keygen -t rsa -b 4096 -C "$GITLAB_MAIL" -N "" -f $SSH_FOLDER/id_rsa_gitlab | |
echo "" | |
echo "" | |
echo "**********************" | |
echo "CONFIGURE GITLAB USER" | |
echo "" | |
echo "Adicione a public ssh key ao GitLab:" | |
echo "" | |
cat $SSH_FOLDER/id_rsa_gitlab.pub | |
echo "" | |
echo "**********************" | |
touch $SSHCONFIG | |
echo -e "#Gitlab" >> $SSHCONFIG | |
echo -e " Host gitlab" >> $SSHCONFIG | |
echo -e " HostName $GITLAB_HOSTNAME" >> $SSHCONFIG | |
echo -e " User git" >> $SSHCONFIG | |
echo -e " IdentityFile $SSH_FOLDER/id_rsa_gitlab" >> $SSHCONFIG | |
fi | |
if $POSTGRESQL | |
then | |
echo "" | |
echo "" | |
echo "**********************" | |
echo "CONFIGURE O POSTGRES" | |
echo "" | |
echo "Para definir usuário e senha no PostgreSQL, execute manualmente os seguintes comandos:" | |
echo "sudo -u postgres createuser NOME_DO_USUARIO -s" | |
echo "sudo -u postgres psql" | |
echo "\password NOME_DO_USUARIO" | |
echo "**********************" | |
fi | |
if $SUBLIME_TEXT | |
then | |
echo "" | |
echo "" | |
echo "**********************" | |
echo "MELHORE O SUBLIME TEXT" | |
echo "" | |
echo "Abra o Sublime Text 3 e exiba o terminal em View > Show Console" | |
echo "Copie e cole o código abaixo no terminal do Sublime Text 3 e pressione enter:" | |
echo "" | |
echo "import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310898eea76'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)" | |
echo "" | |
echo "Reinicie o Sublime Text 3" | |
echo "**********************" | |
fi | |
exit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment