From ace066a36d1b9da33ed679855670e136b6b0fb67 Mon Sep 17 00:00:00 2001 From: "J. Elfring (x)" Date: Sat, 27 Mar 2021 18:35:37 +0100 Subject: [PATCH] Add Toolbox image --- toolbox/Dockerfile | 40 ++++++ toolbox/assets/profile.d/aliases.sh | 38 +++++ toolbox/assets/profile.d/functions.sh | 65 +++++++++ toolbox/assets/vimrc | 193 ++++++++++++++++++++++++++ 4 files changed, 336 insertions(+) create mode 100644 toolbox/Dockerfile create mode 100644 toolbox/assets/profile.d/aliases.sh create mode 100644 toolbox/assets/profile.d/functions.sh create mode 100755 toolbox/assets/vimrc diff --git a/toolbox/Dockerfile b/toolbox/Dockerfile new file mode 100644 index 0000000..14394a8 --- /dev/null +++ b/toolbox/Dockerfile @@ -0,0 +1,40 @@ +FROM alpine:latest +LABEL maintainer "J. Elfring " + +RUN apk add --update --no-cache \ + bash \ + bind-tools \ + busybox-extras \ + ca-certificates \ + curl \ + git \ + jq \ + msmtp \ + mysql-client \ + netcat-openbsd \ + openssh-client \ + openssl \ + postgresql-client \ + rsync \ + socat \ + sqlite \ + vim \ + w3m \ + wget + +RUN apk add --update --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ \ + helm \ + kubectl + +ADD assets/profile.d/* /etc/profile.d/ +RUN mv /etc/profile.d/color_prompt /etc/profile.d/color_prompt.sh +COPY assets/vimrc /etc/vim/vimrc + +WORKDIR /root + +CMD /bin/bash -li + + + + + diff --git a/toolbox/assets/profile.d/aliases.sh b/toolbox/assets/profile.d/aliases.sh new file mode 100644 index 0000000..a89620e --- /dev/null +++ b/toolbox/assets/profile.d/aliases.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Easier navigation: .., ..., ...., ....., ~ and - +alias ..="cd .." +alias ...="cd ../.." +alias ....="cd ../../.." +alias .....="cd ../../../.." +alias ~="cd ~" # `cd` is probably faster to type though +alias -- -="cd -" + +# Shortcuts +alias g="git" +alias h="history" +alias k="kubectl" + +# Always use color output for `ls` +# And sort directories before files +alias ls="ls --color --group-directories-first" + +# ls abbreviation +alias l="ls -l" +alias ll="ls -l" +alias la="ls -la" + +# Always enable colored `grep` output +alias grep='grep --color=auto ' + +# Enable aliases to be sudo’ed +alias sudo='sudo ' + +# Canonical hex dump some systems have this symlinked +command -v hd > /dev/null || alias hd="hexdump -C" + +# vi == vim +alias vi='vim' + +# Passwort erstellen +alias mkpasswd='openssl rand -base64 40 | cut -c1-40' diff --git a/toolbox/assets/profile.d/functions.sh b/toolbox/assets/profile.d/functions.sh new file mode 100644 index 0000000..5dea850 --- /dev/null +++ b/toolbox/assets/profile.d/functions.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Trap RC != 0 and display +EC() { + echo -e '\e[1;31m'code $?'\e[m\n' +} +trap EC ERR + +# Create a new directory and enter it +mkd() { + mkdir -p "$@" && cd "$@" +} + +# Make a temporary directory and enter it +tmpd() { + if [ $# -eq 0 ]; then + dir=`mktemp -d` && cd $dir + else + dir=`mktemp -d -t $1.XXXXXXXXXX` && cd $dir + fi +} + +# Run `dig` and display the most useful info +digga() { + dig +nocmd "$1" any +multiline +noall +answer +} + +## Dump SSL Cert from host +## sslcheck example.com:25 -starttls smtp +## sslcheck example.com:443 +sslcheck(){ + echo -n | openssl s_client -connect $* | tee /dev/tty | openssl x509 -text -noout +} + +## SSH agent +## Add sth like test -z $noKeychain && agent to ~/.extra +function agent(){ + /usr/bin/keychain --nolock --nogui $HOME/.ssh/id_rsa + source $HOME/.keychain/$HOSTNAME-sh +} + + + +## Kubernetes Goodies +k(){ + kubectl $* +} + +k-sel(){ + kubeconfig=$(find ~/.kube/kubesel -type f | rev | cut -d "/" -f 1 | rev | sort | fzf --height=25%) + export KUBECONFIG=~/.kube/kubesel/$kubeconfig + echo + kubectl config get-contexts +} + +k-ns(){ + kubectl config set-context + --current \ + --namespace=$(kubectl get namespace | grep Active \ + | cut -d " " -f1 \ + | fzf --height=25% + ) + echo + kubectl config get-contexts +} diff --git a/toolbox/assets/vimrc b/toolbox/assets/vimrc new file mode 100755 index 0000000..78e2df6 --- /dev/null +++ b/toolbox/assets/vimrc @@ -0,0 +1,193 @@ +" Basics +" +set nocompatible " be iMproved, required +let mapleader = "," +let g:mapleader = "," +let maplocalleader = ";" + +" Settings +" +set noerrorbells " No beeps +set number " Show line numbers +set backspace=indent,eol,start " Makes backspace key more powerful. +set showcmd " Show me what I'm typing +set noswapfile " Don't use swapfile +set nobackup " Don't create annoying backup files +set nowritebackup +set splitright " Split vertical windows right to the current windows +set splitbelow " Split horizontal windows below to the current windows +set encoding=utf-8 " Set default encoding to UTF-8 +set autowrite " Automatically save before :next, :make etc. +set autoread " Automatically reread changed files without asking me anything +set laststatus=2 +set hidden +set ruler " Show the cursor position all the time +set fileformats=unix,dos,mac " Prefer Unix over Windows over OS 9 formats + +set showmatch " Show matching brackets by flickering +set showmode + +" Search Options +set incsearch +set hlsearch +set ignorecase +set smartcase +" Visual mode pressing * or # searches for the current selection +vnoremap # :call VisualSelection('b') +" Center search results +nnoremap n nzzzv +nnoremap N Nzzzv +nnoremap :nohlsearch + +set ttyfast +set lazyredraw +set nocursorcolumn +set nocursorline +set synmaxcol=300 +set re=1 + +" open help vertically +command! -nargs=* -complete=help Help vertical belowright help + +" Make Vim to handle long lines nicely. +set wrap +set textwidth=79 +set formatoptions=qrn1 + +set complete-=i + +set nrformats-=octal + +" Time out on key codes but not mappings. +" Basically this makes terminal Vim work sanely. +set notimeout +set ttimeout +set ttimeoutlen=10 + +" Different Cursorshapes for the modes +let &t_SI = "\[6 q" +let &t_SR = "\[4 q" +let &t_EI = "\[2 q" + +" Better Completion +set complete=.,w,b,u,t +set completeopt=longest,menuone + +set history=500 +set tabpagemax=50 + +set scrolloff=7 +set sidescrolloff=7 +set display+=lastline + +" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, +" so that you can undo CTRL-U after inserting a line break. +inoremap u + +syntax on +syntax sync minlines=256 +filetype plugin indent on + +colorscheme elflord + +if has('gui_running') + "set transparency=3 + "fix js regex syntax + set regexpengine=1 +endif + +" Toggle line numbers and rulers +nmap ll :set number! +nmap lr :set relativenumber! +nmap cc :set cursorcolumn! +nmap cl :set cursorline! + +" Better split switching +map j +map k +map h +map l +map j +map k +map h +map l + +" Center the screen +nnoremap zz + +" Move up and down on splitted lines (on small width screens) +map gk +map gj +map k gk +map j gj + +" Spell checking +nnoremap :setlocal spell! spell? +map ss :setlocal spell! +map sn ]s +map sp [s +map sa zg +map s? z= + +" trim all whitespaces away +nnoremap W :%s/\s\+$//:let @/='' + +" Do not show stupid q: window +map q: :q + +" dont save .netrwhist history +let g:netrw_dirhistmax=0 + +" Allow saving of files as sudo +cmap w!! w !sudo tee > /dev/null % + +" Paste Mode +set pastetoggle= + +" ----------------------------------------- " +" File Type settings " +" ----------------------------------------- " +set tabstop=4 +set shiftwidth=4 +set softtabstop=4 +set autoindent +set smarttab +set expandtab +set shiftround + +au BufNewFile,BufRead *.vim setlocal noet ts=4 sw=4 sts=4 +au BufNewFile,BufRead *.txt setlocal noet ts=4 sw=4 sts=4 +au BufNewFile,BufRead *.md setlocal noet ts=4 sw=4 sts=4 +au BufNewFile,BufRead *.json setlocal et ts=2 sw=2 sts=2 +au BufNewFile,BufRead *.go setlocal noet ts=4 sw=4 sts=4 +au BufNewFile,BufRead *.md setlocal et ts=4 sw=4 sts=4 +au BufNewFile,BufRead *.lua setlocal noet ts=4 sw=4 sts=4 +au BufNewFile,BufRead *.py setlocal et ts=4 sw=4 sts=4 +au BufNewFile,BufRead *.yml,*.yaml setlocal et ts=2 sw=2 sts=2 + +au FileType nginx setlocal noet ts=4 sw=4 sts=4 +au FileType dockerfile setlocal et ts=2 sw=2 sts=2 +au FileType fstab,systemd set noet +au FileType gitconfig,sh,toml set noet + +" ==================== Wildmenu ==================== +set wildmenu +" set wildmode=list:longest +set wildmode=list:full + +set wildignore+=.hg,.git,.svn " Version control +set wildignore+=*.aux,*.out,*.toc " LaTeX intermediate files +set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg " binary images +set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest " compiled object files +set wildignore+=*.spl " compiled spelling word lists +set wildignore+=*.sw? " Vim swap files +set wildignore+=*.DS_Store " OSX bullshit +set wildignore+=*.luac " Lua byte code +set wildignore+=migrations " Django migrations +set wildignore+=go/pkg " Go static files +set wildignore+=go/bin " Go bin files +set wildignore+=go/bin-vagrant " Go bin-vagrant files +set wildignore+=*.pyc " Python byte code +set wildignore+=*.orig " Merge resolution files + +" vim:ts=2:sw=2:et