Bash
# Run command if binaty exists without additional output
command -v echo &> /dev/null && echo "works"
command -v thefuck &> /dev/null && eval $(thefuck --alias)
# default value for variable/argument
loglevel=${1:-info} # ${name:-value}
Git
# Always use ssh keys instead of asking for a password.
git config --global url.ssh://git@github.com/.insteadOf https://github.com/
# Commit signing
git config --global user.signingkey SOMEKEYID! # Choose Key; note ending `!`
git config --global commit.gpgsign true # Auto sign without `-S`
# note: You can set up different keys per each repo.
# Of course profile
git config --global user.email "your@email.com"
git config --global user.Name "Name Surname"
git config --global pull.rebase true # Rebase own changes on never commit from upstream
# git config --global fetch.prune true # In case you need it
# Other
git rebase -i HEAD~9 # Squash / Edit lasn N=9 commits
git add -p # last check before commit.
Yubikey (hardware keys in general)
# OTP, OATH does not work unless pcscd is running
sudo systemctl enable --now pcscd.service
# Get oath OTP by name (substring match) into clipboard
ykman oath accounts code -s OpenVPN | xclip -selection clipboard
Infra
K8S
Don’t forget about official kubectl CheatSheet.
# Prefered way is `view-secret` krew plugin for kubectl.
kubectl get secret database-credentials -o jsonpath='{.data.password}' | base64 -d | xclip -selection clipboard
# This one is important :)
kubectl logs my-pod --previous
Terraform
Never edit state file manually!
Partial apply
When someone forgot to push changes, or terraform shows alot of unrelated changes, and there is no time to dig into it, it’s possible to apply specific resources via -target
. Docs
# can check existing resources with `terraform state list`
terraform apply -target="module.some_resource.name[42]" -target="another_resource"
Command would return partial output, but terraform output
would work as expected, returning full state of outputs.
Move state
Before any operation with state make a backup, or use versioned S3 bucket.
terraform state pull > backup.tfstate
During refactoring, or small restructure, renaming this can be useful
# check `terraform plan` and copy-paste SOURCE and DESTINATION paths from there.
terraform state mv [options] SOURCE DESTINATION
How to move resources between different terraform states
Docker
AWS ECR Access
# It's possible manually login, for one time use
docker login -u AWS -p $(aws ecr get-login-password) https://{account}.dkr.ecr.{region}.amazonaws.com
But the right way to do it is ecr-login. Add this into ~/.docker/config.json
{
"credHelpers": {
"{account}.dkr.ecr.{region}.amazonaws.com": "ecr-login"
}
}