From e42e289722705b8b000273b99a1e30ef4972c86e Mon Sep 17 00:00:00 2001 From: Kirill 'horseinthesky' Pletnev Date: Sat, 27 Jan 2024 18:43:13 +0300 Subject: [PATCH] update: kubectl&helm install script --- Makefile | 2 +- files/zsh/tools.zsh | 18 ++++---- scripts/cloud.sh | 101 +++++++++++++++++++++++++++++++++++++++++++ scripts/go.sh | 24 +++++----- scripts/terraform.sh | 71 ------------------------------ 5 files changed, 123 insertions(+), 93 deletions(-) create mode 100644 scripts/cloud.sh delete mode 100644 scripts/terraform.sh diff --git a/Makefile b/Makefile index b40a88d..eb481d2 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ targets = \ js \ nvim \ docker \ - terraform \ + cloud \ .PHONY: all $(targets) diff --git a/files/zsh/tools.zsh b/files/zsh/tools.zsh index f986cca..33d454a 100644 --- a/files/zsh/tools.zsh +++ b/files/zsh/tools.zsh @@ -59,13 +59,13 @@ fi [[ -z $(whence z) ]] && eval "$(zoxide init zsh)" # ==== Yandex ==== -if [[ $(cat /proc/sys/kernel/hostname) == 'carbon9' ]] ; then - # export PSSH_AUTH_SOCK="/mnt/c/Users/$USER/AppData/Local/Temp/pssh-agent.sock" - # export SSH_AUTH_SOCK="${PSSH_AUTH_SOCK}" - # [[ $(ssh-add -l) =~ "$HOME/.ssh/id_rsa" ]] || ssh-add +# if [[ $(cat /proc/sys/kernel/hostname) == 'carbon9' ]] ; then +# fi +# export PSSH_AUTH_SOCK="/mnt/c/Users/$USER/AppData/Local/Temp/pssh-agent.sock" +# export SSH_AUTH_SOCK="${PSSH_AUTH_SOCK}" +# [[ $(ssh-add -l) =~ "$HOME/.ssh/id_rsa" ]] || ssh-add - # yc & ycp - [[ -d $HOME/yandex-cloud && ! $PATH == *$HOME/yandex-cloud/bin* ]] && export PATH=$HOME/yandex-cloud/bin:$PATH - [[ -d $HOME/ycp && ! $PATH == *$HOME/ycp/bin* ]] && export PATH=$HOME/ycp/bin:$PATH - [[ -f $HOME/yandex-cloud/completion.zsh.inc ]] && source $HOME/yandex-cloud/completion.zsh.inc -fi +# yc & ycp +[[ -d $HOME/yandex-cloud && ! $PATH == *$HOME/yandex-cloud/bin* ]] && export PATH=$HOME/yandex-cloud/bin:$PATH +[[ -d $HOME/ycp && ! $PATH == *$HOME/ycp/bin* ]] && export PATH=$HOME/ycp/bin:$PATH +[[ -f $HOME/yandex-cloud/completion.zsh.inc ]] && source $HOME/yandex-cloud/completion.zsh.inc diff --git a/scripts/cloud.sh b/scripts/cloud.sh new file mode 100644 index 0000000..e79e87f --- /dev/null +++ b/scripts/cloud.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash + +source scripts/helper.sh + +setup_env () { + [[ ! -d $HOME/.local/bin ]] && mkdir -p "$HOME"/.local/bin + [[ ! $PATH == *$HOME/.local/bin* ]] && export PATH=$HOME/.local/bin:$PATH +} + +download_package () { + local url=$1 + local path=$2 + local package=$(echo "$1" | awk -F/ '{print $NF}') + + download "$url" + [[ $? -ne 0 ]] && return 1 + + info "Extracting archive..." + unzip -o "$HOME/$package" -d "$path" + rm "$HOME/$package" + + success +} + +terraform_install () { + local name=$1 + + header "Installing $name..." + + local latest_version=$( + curl -s https://api.github.com/repos/hashicorp/"$name"/releases/latest | \ + grep tag_name | grep -Po "\d+\.\d+\.\d+" + ) + local package_name=${name}_${latest_version}_linux_amd64.zip + + if [[ -z $(which "$name") ]]; then + download_package https://releases.hashicorp.com/"$name/$latest_version/$package_name" "$HOME"/.local/bin + return + fi + + local current_version=$("$name" -v | head -n 1 | grep -Po "\d+\.\d+\.\d+") + + if [[ $current_version == $latest_version ]]; then + success "Latest ($latest_version) version is already installed" + return + fi + + info "Newer version found. Updating $current_version -> $latest_version..." + download_package https://releases.hashicorp.com/"$name/$latest_version/$package_name" "$HOME"/.local/bin + [[ $? -ne 0 ]] && return + + success "Updated to the latest ($latest_version) version" +} + +install_terraform_packages () { + packages=( + terraform + terraform-ls + ) + + for tool in "${packages[@]}"; do + terraform_install "$tool" + done +} + +install_kubelet () { + header "Installing kubectl..." + + if [[ -n $(which kubectl) ]]; then + success "kubectl is already installed." + return + fi + + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" + chmod +x "$HOME"/kubectl + mv "$HOME"/kubectl "$HOME"/.local/bin/kubectl + + success +} + +install_helm () { + header "Installing helm..." + + if [[ -n $(which helm) ]]; then + success "helm is already installed." + return + fi + + curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | USE_SUDO=false HELM_INSTALL_DIR=~/.local/bin bash + + success +} + +main () { + setup_env + install_terraform_packages + install_kubelet + install_helm +} + +main diff --git a/scripts/go.sh b/scripts/go.sh index b211e09..baa43f1 100644 --- a/scripts/go.sh +++ b/scripts/go.sh @@ -4,7 +4,7 @@ source scripts/helper.sh go_install () { local path=$1 - local tool=$(echo ${path} | awk -F/ '{print $(NF-1)"/"$NF}') + local tool=$(echo "$path" | awk -F/ '{print $(NF-1)"/"$NF}') PATH=$HOME/.local/bin:$PATH @@ -14,7 +14,7 @@ go_install () { fi info "Installing $tool..." - go install ${path}@latest + go install "$path"@latest success "$tool installed" } @@ -24,8 +24,8 @@ install_go () { local version=1.21.3 local tarball=go${version}.linux-amd64.tar.gz - [[ ! -d $HOME/.local/bin ]] && mkdir -p $HOME/.local/bin - [[ ! -d $HOME/.local/lib ]] && mkdir -p $HOME/.local/lib + [[ ! -d $HOME/.local/bin ]] && mkdir -p "$HOME"/.local/bin + [[ ! -d $HOME/.local/lib ]] && mkdir -p "$HOME"/.local/lib [[ ! $PATH == *$HOME/.local/bin* ]] && export PATH=$HOME/.local/bin:$PATH if [[ -n $(which go) ]] && [[ $(go version | awk '{print $3}' | cut -c3-) == $version ]]; then @@ -34,25 +34,25 @@ install_go () { fi # Remove old ersion - [[ -d $HOME/.local/lib/go ]] && rm -rf $HOME/.local/lib/go + [[ -d $HOME/.local/lib/go ]] && rm -rf "$HOME"/.local/lib/go # Install a new one - download https://dl.google.com/go/$tarball + download https://dl.google.com/go/"$tarball" [[ $? -ne 0 ]] && exit info "Extracting archive..." - tar -C $HOME/.local/lib -xzf $HOME/$tarball + tar -C "$HOME"/.local/lib -xzf "$HOME/$tarball" # Remove tarball - rm $HOME/$tarball + rm "$HOME/$tarball" success } symlink_go () { header "Symlink go" - symlink $HOME/.local/lib/go/bin/go $HOME/.local/bin/go - symlink $HOME/.local/lib/go/bin/gofmt $HOME/.local/bin/gofmt + symlink "$HOME"/.local/lib/go/bin/go "$HOME"/.local/bin/go + symlink "$HOME"/.local/lib/go/bin/gofmt "$HOME"/.local/bin/gofmt } install_go_tools () { @@ -67,8 +67,8 @@ install_go_tools () { github.com/natesales/q ) - for tool in ${tools[@]}; do - go_install $tool + for tool in "${tools[@]}"; do + go_install "$tool" done } diff --git a/scripts/terraform.sh b/scripts/terraform.sh deleted file mode 100644 index 65de5d2..0000000 --- a/scripts/terraform.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env bash - -source scripts/helper.sh - -setup_env () { - [[ ! -d $HOME/.local/bin ]] && mkdir -p $HOME/.local/bin - [[ ! $PATH == *$HOME/.local/bin* ]] && export PATH=$HOME/.local/bin:$PATH -} - -download_package () { - local url=$1 - local path=$2 - local package=$(echo $1 | awk -F/ '{print $NF}') - - download $url - [[ $? -ne 0 ]] && return 1 - - info "Extracting archive..." - unzip -o $HOME/$package -d $path - rm $HOME/$package - - success -} - -terraform_install () { - local name=$1 - - header "Installing $name..." - - local latest_version=$( - curl -s https://api.github.com/repos/hashicorp/$name/releases/latest | \ - grep tag_name | grep -Po "\d+\.\d+\.\d+" - ) - local package_name=${name}_${latest_version}_linux_amd64.zip - - if [[ -z $(which $name) ]]; then - download_package https://releases.hashicorp.com/$name/${latest_version}/$package_name $HOME/.local/bin - return - fi - - local current_version=$($name -v | head -n 1 | grep -Po "\d+\.\d+\.\d+") - - if [[ $current_version == $latest_version ]]; then - success "Latest ($latest_version) version is already installed" - return - fi - - info "Newer version found. Updating $current_version -> $latest_version..." - download_package https://releases.hashicorp.com/$name/${latest_version}/$package_name $HOME/.local/bin - [[ $? -ne 0 ]] && return - - success "Updated to the latest ($latest_version) version" -} - -install_terraform_packages () { - packages=( - terraform - terraform-ls - ) - - for tool in ${packages[@]}; do - terraform_install $tool - done -} - -main () { - setup_env - install_terraform_packages -} - -main