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
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
Last modified November 29, 2022: Updated title and corrected typos (32f4903)