Fine dining with Abraham Ortelius
We begin our local environment construction here.
Fine dining with Abraham Ortelius
Canapes
Windows 10
- Latest version & fully updated
- Enable
WSL2
| Go toPrograms and features
–>Turn Windows features on or off
–>Windows Subsystem for Linux
- We recommend using a second disk if you have one in your machine to create the custom folder to house the VMDK
- This splits up the I/O between the Windows OS and WSL2 which is just a stripped down virtual machine
- Install Windows Terminal here for easier management and get familiar with the documentation
- Use this documentation to install the latest
Ubuntu
flavour, don’t bother with the Microsoft store ( We recommendUbuntu Jammy JellyFish
at this time of writing) - Line feed ending hell can be solved with this VSCode extension here or Dos2Unix as another option
- Windows uses CRLF
- Linux uses LF
- This Stackoverflow article can help you understand whats going on
- Example error
/bin/sh^M:bad interpreter
- Suggestion Alert: Set your
VSCode
toLF
and only useWSL2
to do all your work - Terms & Conditions
Windows 11
- Latest version & fully updated
- Terms & Conditions
Configs for WSL
Windows Operating System
c:\Users\Abraham\.wslconfig
# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB
# Sets the VM to use two virtual processors
processors=2
# Specify a custom Linux kernel to use with your installed distros.
# The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
#kernel=C:\\temp\\myCustomKernel
# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
#kernelCommandLine = vsyscall=emulate
# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=4GB
# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=D:\\wsl\\ubuntu-22-04-lts\\wsl-swap.vhdx
# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false
# Turn off default connection to bind WSL 2 localhost to Windows localhost
localhostforwarding=true
# Disables nested virtualization
nestedVirtualization=false
# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true
[user]
default = sacha
[automount]
options = "metadata"
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB
WSL Ubuntu Linux Virtual Machine
\etc\wsl.conf
# Automatically mount Windows drive when the distribution is launched
[automount]
# Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab.
enabled = true
# Sets the directory where fixed drives will be automatically mounted. This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c.
root = /
# DrvFs-specific options can be specified.
options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off"
# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.
mountFsTab = true
# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
hostname = DemoHost497686
generateHosts = false
generateResolvConf = false
# Set whether WSL supports interop process like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
[interop]
enabled = false
appendWindowsPath = false
# Set the user when launching a distribution with WSL.
[user]
default = DemoUser
# Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
command = service docker start
Linux
Ubuntu
CentOS
Package Managers
APT for Ubuntu
YUM for Centos
MacOs
Package Managers
Macports.org
Brew.sh
Docker Mac Net Connect MANDATORY
- Accessing containers directly by IP (instead of port binding) can be useful and convenient.
- Unlike Docker on Linux, Docker-for-Mac does not expose container networks directly on the macOS host.
- Docker-for-Mac works by running a Linux VM under the hood (using hyperkit) and creates containers within that VM.
- Docker-for-Mac supports connecting to containers over Layer 4 (port binding), but not Layer 3 (by IP address).
Solution
- Create a minimal network tunnel between macOS and the Docker Desktop Linux VM.
- The tunnel is implemented using WireGuard.
Install via Homebrew
brew install chipmk/tap/docker-mac-net-connect
Run the service and register it to launch at boot
brew services start chipmk/tap/docker-mac-net-connect
sudo brew services start chipmk/tap/docker-mac-net-connect
Starters
Topgrade | Update everything with one command OPTIONAL
- Topgrade Wiki
- Supports all operating systems
- Topgrade config file is here
.config/topgrade.toml
- All I need to type now on my
zsh terminal
istopgrade
- It upgrades all my package managers including the packages, Mac store apps and Mac OS updates
- It can do so much more | We will leave you to explore
- Terms & Conditions
Devdocs.io | The application command encyclopedia & yes you can access it offline
Bash, CSS, Docker, Flask, Git, Go, Brew, HTML, HTTP, Java, JavaScript, Markdown, Nginx, Nodejs, npm, Python, Kubectl, Kubernetes
and so much more- Terms & Conditions
WARP The Terminal for the 21st Century OPTIONAL
- Documentation is here
- Terms & Conditions
SDKMan.io | For managing all things Java | SDKs | JDKs OPTIONAL
- Usage here
- Terms & Conditions
Discord.com
- Discord is global human interaction
- Set yourself up with your very own
Discord server
- Create a dedicated channel for
Git Guardian alerts
Do this before Git Guardian
- GitHub webhooks are here
- Terms & Conditions
Git Guardian.com
- Set yourself up for free
- This tool will warn you when you accidently put sensitive information on the public internet in your repos
- Go to
VCS Integrations
and add yourGitHub
(You will need to set yourself up on GitHub first) - Go to
Alerting
and setupDiscord
notifications - Support for
CI|CD
pipelines such asAzure, Bitbucket, Circle CI, Drone CI, GitHub Actions, GitLab, Jenkins & Travis
- Support for
Git Hooks
- Support for
Docker
| Docker image integration - Alerting for
Discord, Custom Webhook, Jira, Pager Duty, Slack, Splunk
- Discord integrations are here
- Terms & Conditions
YADM.io Yet Another Dot File Manager OPTIONAL
- In Linux you end up with a lot of config files which usually start with
.
- The dot files have configurations for various application packages installed on your machine
- YADM allows you to keep the dot files of your choice backed up to a repository
- Documentation here
- Terms & Conditions
Main Course
Choose between Docker or Podman
Git-scm.com
- Install Git for all things source control
- Set up Git here
- Get familiar with the basic commands such as pushing and pulling of changes and creating branches
- Please refer to the Ortelius PR Cheat Sheet
- Use Devdocs and the Git documentation here
- Terms & Conditions
- Software Freedom Conservancy
.gitconfig
inspiration
[core]
excludesfile = /Users/abraham/.gitignore_global
[alias]
# Make sure you're adding under the [alias] block.
# Git Commit, Add all and Push in one step.
# Using functions in Git
cap = "!f() { git add .; git commit -m \"$@\"; git push; }; f"
# NEW.
new = "!f() { git cap \"📦 NEW: $@\"; }; f"
# IMPROVE.
imp = "!f() { git cap \"👌 IMPROVE: $@\"; }; f"
# FIX.
fix = "!f() { git cap \"🐛 FIX: $@\"; }; f"
# RELEASE.
rlz = "!f() { git cap \"🚀 RELEASE: $@\"; }; f"
# DOC.
doc = "!f() { git cap \"📖 DOC: $@\"; }; f"
# TEST.
tst = "!f() { git cap \"🤖 TEST: $@\"; }; f"
# BREAKING CHANGE.
brk = "!f() { git cap \"‼️ BREAKING: $@\"; }; f"
[user "https://github.com"]
name = Abraham Ortelius
email = abraham.ortelius@ortelius.io
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = false
[init]
defaultBranch = main
templatedir = /Users/abraham/.git_template
[pull]
rebase = false
[credential "https://github.com"]
helper = store
[credential "https://gist.github.com"]
helper = store
[help]
autocorrect = 1
[advice]
addIgnoredFile = false
[user]
name = Abraham Ortelius
email = abraham.ortelius@ortelious.io
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[web]
browser = firefox
Source Control GitHub.com
- Set yourself up on GitHub
- Terms & Conditions
VSCode IDE
- Download the
VSCode IDE
here - Security starts in the IDE
- Terms & Conditions
Helpful Extensions
- Install
Snyk Security | Code & Open Source Dependencies
scanner here - Install
Language Support for Java by Red Hat
here - Install
Yaml
support here - Install
Indent Rainbow
here - Install
Change All End of Line Sequence
here - Install
ToDo Tree
here
Docker.com
- Account setup
- Install
- Get familiar with the basic commands
- Use Devdocs and the Docker documentation here
- Terms & Conditions
Docker Security
- Bake security right in from the word go
- We are going to use Snyk to scan our containers
- Snyk is free and you can set yourself up here
- Terms & Conditions for Snyk
- In
Docker Desktop
go to theExtensions Marketplace
and install theSnyk Container Extension
- On your command line you can now scan your Docker images with
docker scan your-docker-image
- Disclaimer: Please follow any prompts
Snyk
requires you to fulfill to get up and running
Podman.io
- Podman-Desktop
- Get familiar with the basic commands
- Checkout the Podman documentation here
- Terms & Conditions
Container Registries
- Think of container registries as huge parking lots for containers
- Container images can be pushed and pulled from these locations
AWS registry
Docker registry
GCP registry
Azure registry
RedHat Quay registry (Ortelius image lives here)
Kind.sigs.k8s.io
- Kind allows you to use Docker to run K8s nodes as containers
- Install here
- Get familiar with the basic commands
- Checkout the Kind documentation here
- Terms & Conditions
Kubernetes.io
- K8s is a production grade container orchestrater
- K8s is the conductor of the orchestra where the conductor is K8s and the orchestra is the containers within PODs
- PODS are cuddly safe worlds to hold containers (so cute)
- Terms & Conditions
- Creative Commons
Kubectl
- Install
kubectl
the command line tool here - Use the
kubectl
cheat sheet here - Use Devdocs and the official documentation here
- Add the
aliases
&auto complete
which are in thecheat sheet
PostgreSQL.org & Ortelius event driven architecture
- Open Source relational database
- Terms & Conditions
ArangoDB & Ortelius XRPL SBOM Ledger
- Learn graph databases & native multi-models
- Terms & Conditions
Dessert
Ortelius.io
- Documentation here
- User guide here
- Contributors guide here
- Installation & Support here
- On-prem installation here
- Istio installation here
- Terms & Conditions
Helm.sh
- Install Helm for your operating system (Scroll down until you see
Get Helm!
) - K8s templating engine
- Terms & Conditions
Argo-CD.readthedocs.io
- Argo CD is a declarative, GitOps continous delivery tool for Kubernetes
- For example it allows you to abstract the application configuration out of the developer code
- Install here
- Terms & Conditions
Keptn.sh
- Cloud native application life-cycle orchestration
- API & event driven
- Install here
- Terms & Conditions
AWS Localstack The AWS Cloud on your local machine OPTIONAL
- A fully functional local cloud stack to Develop and test your cloud and serverless apps offline!
- AWS only at the time of writing
- Getting started
- Localstack Docs
- Integrations
- Localstack Cockpit Web UI
- Terms & Conditions
Terraform IaC
- Documentation is here
- Terms & Conditions
Pulumi IaC
- Documentation is here
- Convert your Terraform to Pulumi here
- Terms & Conditions
Last modified November 29, 2022: Updated title and corrected typos (32f4903)