refactor for cleanup

This commit is contained in:
Colin 2024-03-20 13:14:22 -04:00
parent de7c443a68
commit c755daddcf
3 changed files with 107 additions and 214 deletions

View File

@ -1,124 +1,74 @@
#!/bin/bash
set -e
echo 'export SENTRY_DSN=https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3'
# Sentry setup
echo 'export SENTRY_DSN=https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3' >> ~/.zshrc
eval "$(sentry-cli bash-hook)"
## DigitalOcean's API for obtaining server metadata.
function digitalocean() {
# Functions for provider-specific configurations
digitalocean() {
export HOSTNAME=$(curl -s http://169.254.169.254/metadata/v1/hostname)
hostnamectl set-hostname $HOSTNAME
# echo $HOSTNAME > /etc/hostname
# hostname -F /etc/hostname
# hostname -f
hostnamectl set-hostname "$HOSTNAME"
export PUBLIC_IPV4=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address)
export PUBLIC_IPV6=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv6/address)
}
## Add anything for OVH here.
function ovh() {
echo Nothing special for DigitalOcean at this stage.
ovh() {
echo "Nothing special for OVH at this stage."
}
## Choose which DC provider sepecifics need installed.
# Provider setup
case $1 in
digitalocean )
digitalocean
;;
ovh )
ovh
;;
none )
echo Nothing special going to be done here.
;;
* )
echo bootstrap options are:
echo bootstrap ovh [gluster/nogluster] [salt/nosalt]
echo bootstrap digitalocean [gluster/nogluster] [salt/nosalt]
echo bootstrap none [gluster/nogluster] [salt/nosalt]
;;
digitalocean) digitalocean ;;
ovh) ovh ;;
none) echo "Nothing special going to be done here." ;;
*) echo "bootstrap options are:"
echo "bootstrap ovh [salt/nosalt]"
echo "bootstrap digitalocean [salt/nosalt]"
echo "bootstrap none [salt/nosalt]" ;;
esac
function install_salt() {
# ## Installing Salt for Ubuntu 20.04
# curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg
# echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list
# Salt installation
install_salt() {
sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/salt/py3/ubuntu/22.04/amd64/latest/salt-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/salt/py3/ubuntu/22.04/amd64/latest jammy main" | sudo tee /etc/apt/sources.list.d/salt.list
mkdir -p /etc/salt/minion.d/
echo 'master: rios.aenow.fun' > /etc/salt/minion.d/99-master-address.conf
echo 'master: aerence.aenow.fun' > /etc/salt/minion.d/99-master-address.conf
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y salt-minion
}
function install_gluster_pre() {
## Installing Glusterfs-7 https://www.digitalocean.com/community/tutorials/how-to-create-a-redundant-storage-pool-using-glusterfs-on-ubuntu-20-04
apt-get update && apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates
echo |add-apt-repository ppa:gluster/glusterfs-7
}
function install_gluster_post() {
DEBIAN_FRONTEND=noninteractive apt-get install -y glusterfs-server glusterfs-client
}
## Install Container Top ctop
echo "deb http://packages.azlux.fr/debian/ buster main" | sudo tee /etc/apt/sources.list.d/azlux.list
wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add -
## Install Gluster Pre
echo Gluster Pre Function
# Salt installation based on user selection
case $2 in
gluster )
install_gluster_pre
;;
nogluster )
echo not installing gluster.
;;
* )
echo no gluster instructions received.
echo options are:
echo bootstrap [hostingProvider] gluster [salt/nosalt]
echo bootstrap [hostingProvider] nogluster [salt/nosalt]
;;
salt) install_salt ;;
nosalt) echo "Not installing salt." ;;
*) echo "No salt instructions received."
echo "Options are:"
echo "bootstrap [hostingProvider] salt"
echo "bootstrap [hostingProvider] nosalt" ;;
esac
## Installing packages
echo Installing Apt Packages
# Apt package installations
echo "Installing Apt Packages"
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::='--force-confold' --force-yes -fuy dist-upgrade
DEBIAN_FRONTEND=noninteractive apt-get install -y asciinema ca-certificates gnupg git glances htop iftop zsh
apt-get update
## Install Gluster Post
echo Gluster Post Function
case $2 in
gluster )
install_gluster_post
;;
nogluster )
echo not installing gluster.
;;
esac
## Install salt
echo Installing Salt
case $3 in
salt )
install_salt
;;
nosalt )
echo Not installing salt.
;;
* )
echo no salt instructions received.
echo options are:
echo bootstrap [hostingProvider] [gluster/nogluster] salt
echo bootstrap [hostingProvider] [gluster/nogluster] nosalt
;;
esac
## Install docker-compose and docker using convenience scripts
echo Install docker-compose and docker via convenience scripts
# Docker and docker-compose installation
echo "Install docker-compose and docker via convenience scripts"
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-plugin
## Install CTOP Container Top https://github.com/bcicen/ctop
# CTOP installation
echo "Installing CTOP"
wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop
chmod +x /usr/local/bin/ctop
## This may no longer be required going forward, it'll be better to call it on first login instead with args.
## Force install ohmyzsh on first login
curl -o /root/zsh-setup.sh https://bootstrap:sHEG3NTC6og8pCJDTF6EPYb8jLmbskx5Ns@git.nixc.us/colin/bootstrap-scripts/raw/branch/main/scripts/zsh-setup.sh
echo zsh-setup >> ~/.profile
source ~/.profile
# Setup Oh My Zsh on first login
curl -o /root/zsh-setup.sh https://bootstrap:sHEG3NTC6og8pCJDTF6EPYb8jLmbskx5Ns@git.nixc.us/colin/bootstrap-scripts/raw/branch/main/scripts/zsh-setup.sh
echo "zsh-setup" >> ~/.profile
source ~/.profile

View File

@ -1,100 +1,68 @@
#!/usr/bin/env bash
## Setup ZSH and ohmyzsh theme
# cd ~/
USRDIR=$(echo ~)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
# echo y|sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
sed -i'' -e 's@ZSH_THEME="robbyrussell"@ZSH_THEME="pygmalion"@' $USRDIR/.zshrc
## Just install sentry DSN server info here.
function ae_sentry() {
# https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3
echo 'export SENTRY_DSN=https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3' >> $USRDIR/.zshrc
# Simplify installation command
curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | sh -s -- --unattended
# Update ZSH theme directly
sed -i'' -e 's@ZSH_THEME="robbyrussell"@ZSH_THEME="pygmalion"@' "$USRDIR/.zshrc"
ae_sentry() {
echo 'export SENTRY_DSN=https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3' >> "$USRDIR/.zshrc"
}
## DigitalOcean's API for obtaining server metadata.
function digitalocean() {
echo 'export PUBLIC_IPV4=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address)' >> $USRDIR/.zshrc
echo 'export PUBLIC_IPV6=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv6/address)' >> $USRDIR/.zshrc
digitalocean() {
echo 'export PUBLIC_IPV4=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address)' >> "$USRDIR/.zshrc"
echo 'export PUBLIC_IPV6=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv6/address)' >> "$USRDIR/.zshrc"
}
## Add anything for OVH here.
function ovh() {
echo Nothing to see here at the moment.
ovh() {
echo "Nothing to see here at the moment."
}
## Choose which DC provider sepecifics need installed.
configure_plugins() {
# Clone only if directory does not exist to prevent errors on rerun
[ ! -d "${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" ] && git clone https://github.com/zsh-users/zsh-autosuggestions "${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-autosuggestions"
[ ! -d "${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting" ] && git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting"
[ ! -d "${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-history-substring-search" ] && git clone https://github.com/zsh-users/zsh-history-substring-search "${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-history-substring-search"
[ ! -d "${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/command-time" ] && git clone https://github.com/popstas/zsh-command-time.git "${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/command-time"
cat <<EOF >> "$USRDIR/.zshrc"
ZSH_COMMAND_TIME_MIN_SECONDS=3
ZSH_COMMAND_TIME_MSG="Execution time: %s"
ZSH_COMMAND_TIME_COLOR="cyan"
ZSH_COMMAND_TIME_EXCLUDE=(vim mcedit nano ctop ssh)
EOF
sed -i'' -e 's@plugins=(git)@plugins=(git cp colored-man-pages docker docker-compose extract iterm2 python rsync safe-paste transfer ubuntu zsh-navigation-tools zsh-autosuggestions zsh-syntax-highlighting zsh-history-substring-search command-time universalarchive)@' "$USRDIR/.zshrc"
}
# Process options
case $1 in
digitalocean )
digitalocean
;;
ovh )
ovh
;;
none )
echo Nothing special going to be done here.
;;
* )
echo zsh-setup.sh options are:
echo zsh-setup.sh ovh
echo zsh-setup.sh digitalocean
echo zsh-setup.sh none
;;
digitalocean) digitalocean ;;
ovh) ovh ;;
*) echo "Usage: zsh-setup.sh [digitalocean|ovh|none]" ;;
esac
case $2 in
ae-sentry )
ae_sentry
;;
my-sentry )
echo "buy a server for this you poor old sodd"
;;
none )
echo You have elected to not add a Sentry server.
;;
* )
echo No sentry option chosen however one must be chosen. The options are:
echo "zsh-setup.sh hosting-provider ae-sentry"
echo "zsh-setup.sh hosting-provider my-sentry"
echo "zsh-setup.sh hosting-provider none"
;;
ae-sentry) ae_sentry ;;
none) echo "No Sentry server added." ;;
*) echo "Usage: zsh-setup.sh hosting-provider [ae-sentry|my-sentry|none]" ;;
esac
## Docker build fast
echo "export DOCKER_BUILDKIT=1 # or configure in daemon.json" >> ~/.zshrc
echo "export COMPOSE_DOCKER_CLI_BUILD=1" >> ~/.zshrc
echo "export DOCKER_BUILDKIT=1" >> "$USRDIR/.zshrc"
echo "export COMPOSE_DOCKER_CLI_BUILD=1" >> "$USRDIR/.zshrc"
## Install Plugins
## Auto Suggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
## Syntax Highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
## History Substring search.
git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
## ZSH Command Execution Time
git clone https://github.com/popstas/zsh-command-time.git ${ZSH_CUSTOM:-$USRDIR/.oh-my-zsh/custom}/plugins/command-time
## Configure plugins and envvars.
cat <<EOF >> ~/.zshrc
# If command execution time above min. time, plugins will not output time.
ZSH_COMMAND_TIME_MIN_SECONDS=3
configure_plugins
# Message to display (set to "" for disable).
ZSH_COMMAND_TIME_MSG="Execution time: %s"
sed -i'' -e "/bash \$USRDIR\/zsh-setup.sh/d" "$USRDIR/.profile"
# Message color.
ZSH_COMMAND_TIME_COLOR="cyan"
# Consider not removing the script automatically for debugging or rerun
# rm -f "$USRDIR/zsh-setup.sh"
# Exclude some commands
ZSH_COMMAND_TIME_EXCLUDE=(vim mcedit nano ctop ssh)
EOF
## Enable plugins
sed -i'' -e 's@plugins=(git)@plugins=(git cp colored-man-pages docker docker-compose extract iterm2 python rsync safe-paste transfer ubuntu zsh-navigation-tools zsh-autosuggestions zsh-syntax-highlighting zsh-history-substring-search command-time universalarchive)@' $USRDIR/.zshrc
## Cleanup
sed -i'' -e 's@bash $USRDIR/zsh-setup.sh@@' $USRDIR/.profile
#rm -f $USRDIR/zsh-setup.sh
echo "Relog into terminal finished bootstrapping server"
chsh -s $(which zsh)
chsh -s "$(which zsh)"
zsh
source $USRDIR/.zshrc
source "$USRDIR/.zshrc"

View File

@ -1,52 +1,27 @@
#!/usr/bin/env bash
set -e
## Basic deps
DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget
# Basic dependencies installation
DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y curl wget
## source <(curl -s https://git.nixc.us/colin/bootstrap-scripts/raw/branch/main/strap.sh) defaults-bootstrap
# curl -sL https://sentry.io/get-cli/ | bash
# echo 'export SENTRY_DSN=https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3'
# eval "$(sentry-cli bash-hook)"
# Downloading bootstrap scripts
curl -o /usr/local/sbin/zsh-setup https://git.nixc.us/colin/bootstrap-scripts/raw/branch/main/scripts/zsh-setup.sh && chmod +x /usr/local/sbin/zsh-setup
curl -o /usr/local/sbin/bootstrap https://git.nixc.us/colin/bootstrap-scripts/raw/branch/main/scripts/bootstrap.sh && chmod +x /usr/local/sbin/bootstrap
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGLT6xx+pXQl6UfiVe0VTZkC45E/2YE/zfNrWb7mLMtI computer@dewitt.improvingmipractices.com" > /root/.ssh/authorized_keys
## Run bootstrap
# Update Dewitt SSH key
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICxoakgL0Tq4mAv+UMnFc3PZptPCXz8ObCsyVmBtiB2P defaultkey_key" > /root/.ssh/authorized_keys
# Ensure .ssh directory exists and proper permissions are set
mkdir -p /root/.ssh
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
# Run bootstrap based on input parameters or default action
case $1 in
bootstrap )
/usr/local/sbin/bootstrap $2 $3 $4
;;
defaults-bootstrap )
bootstrap)
/usr/local/sbin/bootstrap "$2" "$3" "$4"
;;
defaults-bootstrap|*)
/usr/local/sbin/bootstrap none nogluster nosalt
;;
* )
/usr/local/sbin/bootstrap none nogluster nosalt
;;
esac
#!/usr/bin/env bash
set -e
## Basic deps
DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget
## source <(curl -s https://git.nixc.us/colin/bootstrap-scripts/raw/branch/main/strap.sh) defaults-bootstrap
# curl -sL https://sentry.io/get-cli/ | bash
# echo 'export SENTRY_DSN=https://4d089076433c4a7aa31bbb2741f053fe@sentry.aenow.com/3'
# eval "$(sentry-cli bash-hook)"
curl -o /usr/local/sbin/zsh-setup https://git.nixc.us/colin/bootstrap-scripts/raw/branch/main/scripts/zsh-setup.sh && chmod +x /usr/local/sbin/zsh-setup
curl -o /usr/local/sbin/bootstrap https://git.nixc.us/colin/bootstrap-scripts/raw/branch/main/scripts/bootstrap.sh && chmod +x /usr/local/sbin/bootstrap
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGLT6xx+pXQl6UfiVe0VTZkC45E/2YE/zfNrWb7mLMtI computer@dewitt.improvingmipractices.com" > /root/.ssh/authorized_keys
## Run bootstrap
case $1 in
bootstrap )
/usr/local/sbin/bootstrap $2 $3 $4
;;
defaults-bootstrap )
/usr/local/sbin/bootstrap none nogluster nosalt
;;
* )
/usr/local/sbin/bootstrap none nogluster nosalt
;;
;;
esac