1
0
mirror of https://github.com/gryf/vmstrap.git synced 2025-12-18 12:00:31 +01:00
Files
vmstrap/bootstrap.sh

302 lines
8.6 KiB
Bash

#!/bin/bash
set -e
if command -v lsb_release 2>&1 > /dev/null; then
DISTRO_ID=$(lsb_release -i | cut -f 2 -d ':' | tr '[:upper:]' '[:lower:]')
DISTRO_R=$(lsb_release -r | awk '{print $2}')
else
if [[ -e /etc/redhat-release ]]; then
DISTRO_ID=$(cut -f 1 -d ' ' /etc/redhat-release | \
tr '[:upper:]' '[:lower:]')
if [[ $DISTRO_ID =~ centos ]]; then
# CentOS Linux release 7.6.1810 (Core)
# We want only major, here: 7
DISTRO_R=$(cut -f 4 -d ' ' /etc/redhat-release | cut -f 1 -d '.')
elif [[ $DISTRO_ID =~ fedora ]]; then
# Fedora release 32 (Thirty Two)
DISTRO_R=$(cut -f 3 -d ' ' /etc/redhat-release)
fi
fi
fi
COMMON_PGS=(ccze
git-review
htop
jq
mc
tmux)
COMMON_RPM=(bash-completion
ctags
gcc
gcc-c++
kernel-devel
make
python3-devel
python3-pip
rxvt-unicode-256color
the_silver_searcher
vim)
COMMON_DEB=(exuberant-ctags
flake8
python-apsw
python-flake8
python-jedi
python-pip
python3-flake8
python3-jedi
silversearcher-ag)
centos7() {
# 1. update
sudo yum -y install epel-release
sudo yum -y update
# rxvt-unicode-256color to have proper terminfo
PGS=(ptpython2
python-devel
python-flake8
python-ipython-console
python-pip
python2-apsw
python2-jedi
python2-mccabe
python2-pip
python34-apsw
python36-jedi
python36-mccabe)
# 2. install tools
sudo yum install -y "${COMMON_PGS[@]}" "${COMMON_RPM[@]}" "${PGS[@]}"
# 3. cleanup
sudo yum -y clean all
# 4. set default editor
echo 'export visual="vim"' | sudo tee /etc/profile.d/vim.sh
echo 'export editor="vim"' | sudo tee -a /etc/profile.d/vim.sh
# 5. install non-medieval version of vim (not working anymore)
# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/fusion809/centos_7/x86_64/vim-common-8.1.0875-1.1.x86_64.rpm
# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/fusion809/centos_7/x86_64/vim-enhanced-8.1.0875-1.1.x86_64.rpm
# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/fusion809/centos_7/x86_64/vim-icons-8.1.0875-1.1.x86_64.rpm
# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/fusion809/centos_7/x86_64/vim-minimal-8.1.0875-1.1.x86_64.rpm
# # this has to be run all at once, otherwise we will not have sudo for a
# # moment.
# sudo bash -c "yum -y remove vim-minimal vim-common vim-enhanced;
# rpm -i vim-common-8.1.0875-1.1.x86_64.rpm \
# vim-enhanced-8.1.0875-1.1.x86_64.rpm \
# vim-icons-8.1.0875-1.1.x86_64.rpm \
# vim-minimal-8.1.0875-1.1.x86_64.rpm;
# yum -y install sudo"
# rm vim-common-8.1.0875-1.1.x86_64.rpm vim-enhanced-8.1.0875-1.1.x86_64.rpm \
# vim-icons-8.1.0875-1.1.x86_64.rpm vim-minimal-8.1.0875-1.1.x86_64.rpm
# 6. install tools from pypi (only py3, no more latest setuptools for py2)
sudo pip3 install -u pip setuptools
installed_pkgs=$(pip list)
if echo "${installed_pkgs}" | grep -qv "rainbow"; then
sudo pip install rainbow
sudo pip3 install rainbow
fi
installed_pkgs=$(pip3 list)
for pkg in remote_pdb pdbpp; do
if echo "${installed_pkgs}" | grep -qv "${pkg}"; then
sudo pip3 install ${pkg}
fi
done
# 7. copy configuration for bash, git, tmux
cp .bash_prompt ~/
cp .tmux.conf ~/
# v and y like vi in copy-mode
echo "bind -t vi-copy 'v' begin-selection" >> ~/.tmux.conf
echo "bind -t vi-copy 'y' copy-selection" >> ~/.tmux.conf
cp .gitconfig ~/
cp cleanup.sh ~/
echo '. ~/.bash_prompt' >> ~/.bashrc
echo "alias ip='ip -c'" >> ~/.bashrc
# 8. get my vim config
if [ ! -d ~/.vim ]; then
git clone https://github.com/gryf/.vim ~/.vim
# populate plugins
vim -c ':plugupdate' -c ':qa!'
# showmarks is a stubborn one
mkdir ~/.vim/bundle/showmarks/doc
fi
# make current user sudo passwordless
if [ -z "$(sudo grep "${user}" /etc/sudoers)" ]; then
echo "${user} all = (all) nopasswd: all" | sudo tee -a /etc/sudoers
fi
# clone devstack
git clone https://opendev.org/openstack/devstack ~/devstack
cp kuryr.conf ~/devstack/local.conf
}
fedora() {
# fedora 31
# 1. update
sudo yum -y update
# rxvt-unicode-256color to have proper terminfo
PGS=(ptpython3
python2
python2-devel
python2-pip
python3-apsw
python3-flake8
python3-ipython
python3-jedi
python3-mccabe
python3-pylint)
# 2. install tools
sudo yum install -y "${COMMON_PGS[@]}" "${COMMON_RPM[@]}" "${PGS[@]}"
# 3. cleanup
sudo yum -y clean all
# 4. set default editor
echo 'export VISUAL="vim"' | sudo tee /etc/profile.d/vim.sh
echo 'export EDITOR="vim"' | sudo tee -a /etc/profile.d/vim.sh
# 5. install tools from pypi
sudo pip install -U pip setuptools
installed_pkgs=$(pip list)
pkgs_to_install=
for pkg in remote_pdb pdbpp rainbow; do
if echo "${installed_pkgs}" | grep -qv "${pkg}"; then
pkgs_to_install="${pkgs_to_install} ${pkg}"
fi
done
if [ -n "${pkgs_to_install}" ]; then
sudo pip install ${pkgs_to_install}
fi
# 6. copy configuration for bash, git, tmux
sudo cp .bash_prompt ~/
sudo cp .tmux.conf ~/
sudo cp .gitconfig ~/
cp cleanup.sh ~/
echo '. ~/.bash_prompt' >> ~/.bashrc
echo "alias ip='ip -c'" >> ~/.bashrc
# 7. get my vim config
if [ ! -d ~/.vim ]; then
git clone https://github.com/gryf/.vim ~/.vim
# populate plugins
vim -c ':PlugUpdate' -c ':qa!'
# showmarks is a stubborn one
mkdir ~/.vim/bundle/ShowMarks/doc
fi
# make current user sudo passwordless
if [ -z "$(sudo grep "${USER}" /etc/sudoers)" ]; then
echo "${USER} ALL = (ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers
fi
# clone devstack
git clone https://opendev.org/openstack/devstack ~/devstack
cp kuryr.conf ~/devstack/local.conf
}
ubuntu() {
# Sometimes, it might be needed to force external network to cooperate:
# 0. network. paste it to the machine before running this script
# sudo sh -c 'rm /etc/resolv.conf; echo "nameserver 1.1.1.1" > /etc/resolv.conf'
# sudo sed -i -e "s/127.0.0.1 localhost/127.0.0.1 localhost ${HOSTNAME}/" /etc/hosts
# sudo sh -c 'echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg'
# sudo netplan apply
# git clone https://github.com/gryf/vmstrap
# cd vmstrap
case $DISTRO_R in
'16.04')
PGS=(ipython
vim-gtk-py2)
;;
'18.04')
PGS=(ipython3
tmate
vim-gtk)
;;
'20.04')
echo "20.04 is not yet supported"
exit 1
;;
*)
echo "Unsupported Ubuntu version: ${DISTRO_R}"
;;
esac
# 1. update
sudo apt update && sudo apt -y upgrade
# 2. install tools
sudo apt install -y "${COMMON_PGS[@]}" "${COMMON_DEB[@]}" "${PGS[@]}"
# 3. cleanup
sudo apt-get autoremove -y && sudo apt-get autoclean -y
# 4. set default editor
sudo update-alternatives --set editor /usr/bin/vim.gtk-py2
# 5. install tools from pypi
sudo pip install pip --upgrade
sudo pip install remote_pdb rainbow
# 6. copy configuration for bash, git, tmux
cp .bash_prompt ~/
cp .tmux.conf ~/
# v and y like vi in copy-mode
{
echo "bind-key -T copy-mode-vi 'v' send -X begin-selection"
echo "bind-key -T copy-mode-vi 'y' send -X copy-selection"
} >> ~/.tmux.conf
cp .gitconfig ~/
cp cleanup.sh ~/
{
echo 'source ~/.bash_prompt'
echo "alias ip='ip -c'"
echo "alias skctl='kubectl -n kube-system'"
echo "source ~/devstack/openrc admin admin >/dev/null 2>/dev/null"
} >> ~/.bashrc
# 7. get my vim config
git clone https://github.com/gryf/.vim ~/.vim
# populate plugins
vim -c ':PlugUpdate' -c ':qa!'
# showmarks is a stubborn one
mkdir ~/.vim/bundle/ShowMarks/doc
# clone devstack
git clone https://opendev.org/openstack/devstack ~/devstack
cp kuryr.conf ~/devstack/local.conf
}
case $DISTRO_ID in
"ubuntu")
ubuntu
;;
"centos")
centos7
;;
"fedora")
fedora
;;
*)
echo Distribution ${DISTRO_ID} not supported
;;
esac