chore(kb): promote placeholders to todo articles

This commit is contained in:
Michele Cereda
2024-05-24 13:12:20 +02:00
parent 369781894e
commit e22c5a4043
33 changed files with 352 additions and 92 deletions

10
.vscode/settings.json vendored
View File

@@ -85,15 +85,16 @@
"btrfs", "btrfs",
"buildah", "buildah",
"buildkit", "buildkit",
"buildx",
"burstable", "burstable",
"byod", "byod",
"caldav", "caldav",
"celeron", "celeron",
"cereda",
"certmanager", "certmanager",
"cfengine", "cfengine",
"chage", "chage",
"chattr", "chattr",
"cheatsheet",
"chezmoi", "chezmoi",
"chpass", "chpass",
"chsh", "chsh",
@@ -101,6 +102,7 @@
"clamd", "clamd",
"clamscan", "clamscan",
"cloudinit", "cloudinit",
"cloudquery",
"commitlint", "commitlint",
"commitlintrc", "commitlintrc",
"compsize", "compsize",
@@ -194,7 +196,9 @@
"markdownlint", "markdownlint",
"mdlrc", "mdlrc",
"mktemp", "mktemp",
"mountpoint",
"mpiexec", "mpiexec",
"multiarch",
"netcat", "netcat",
"nindent", "nindent",
"nmap", "nmap",
@@ -230,7 +234,9 @@
"pvresize", "pvresize",
"radeon", "radeon",
"radicale", "radicale",
"rego",
"replicatedctl", "replicatedctl",
"resolv",
"rfkill", "rfkill",
"ripsecrets", "ripsecrets",
"rmmod", "rmmod",
@@ -238,6 +244,7 @@
"rootlv", "rootlv",
"rootvg", "rootvg",
"runbook", "runbook",
"runc",
"runcmd", "runcmd",
"runtimes", "runtimes",
"sata", "sata",
@@ -262,6 +269,7 @@
"tcsh", "tcsh",
"templating", "templating",
"tfvars", "tfvars",
"tldr",
"tmpfs", "tmpfs",
"tolerations", "tolerations",
"tput", "tput",

View File

@@ -118,17 +118,18 @@
- [Continuous delivery] - [Continuous delivery]
<!-- <!--
References Reference
═╬═Time══
--> -->
<!-- Knowledge base --> <!-- Knowledge base -->
[acl]: acl.md [acl]: acl.md
[adr]: adr.placeholder [adr]: adr.md
[bash]: bash.md [bash]: bash.md
[cni]: cni.placeholder [cni]: cni.md
[fhs]: fhs.placeholder [fhs]: fhs.placeholder
[fish]: fish.md [fish]: fish.md
[iac]: iac.placeholder [iac]: iac.md
[kubernetes]: kubernetes/README.md [kubernetes]: kubernetes/README.md
[ssh]: ssh.md [ssh]: ssh.md
[sssd]: sssd.md [sssd]: sssd.md

23
knowledge base/adr.md Normal file
View File

@@ -0,0 +1,23 @@
# Architectural decision records
TODO
1. [Further readings](#further-readings)
## Further readings
- [Website]
- [Github]
- [Amazon's ADR process]
<!--
Reference
═╬═Time══
-->
<!-- Upstream -->
[github]: https://github.com/joelparkerhenderson/architecture-decision-record
[website]: https://adr.github.io/
<!-- Others -->
[amazon's adr process]: https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html

View File

@@ -1,5 +0,0 @@
# Architectural decision records
https://adr.github.io/
https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html
https://github.com/joelparkerhenderson/architecture-decision-record

View File

@@ -12,15 +12,22 @@ What really worked for me.
## Generic concepts ## Generic concepts
- Always think critically and question all the things. Especially those that don't appear to make any sense.<br/> - Always think critically and question all the things. Especially those that don't appear to make any sense.<br/>
Don't just follow trends or advice from others. They _might_ know better, but you will be the one dealing with the issues in the end. Don't just follow trends or advice from others. They _might_ know better, but you will be the one dealing with the
issues in the end.
- Try to understand how something really works, may it be a technology, a tool or what else.<br/> - Try to understand how something really works, may it be a technology, a tool or what else.<br/>
Try at least once to do manually what an automation would do in your place. Look at the source code of tools. Read the _fabulous_ documentation. Try at least once to do manually what an automation would do in your place. Look at the source code of tools. Read the
_fabulous_ documentation.
- Stay curious. Experiment. Learn and break things (in a sane and safe way). Dive deeper into what interests you. - Stay curious. Experiment. Learn and break things (in a sane and safe way). Dive deeper into what interests you.
- Make the **informed** decision that most satisfies your **current** necessities.<br/> - Make the **informed** decision that most satisfies your **current** necessities.<br/>
There is no _perfect_ nor _correct_ solution, just different sets of tradeoff. Besides, no one will ever have all the information at the start, as some of them only come with experience and looking back at decisions one has already made gives the distorted perspective that those decisions were clearer than they really were. There is no _perfect_ nor _correct_ solution, just different sets of tradeoff. Besides, no one will ever have all the
- Review every decision after some time. Check they are still relevant, or if there is some improvement you can implement.<br/> information at the start, as some of them only come with experience and looking back at decisions one has already made
Things change constantly: new technologies are given birth often, and processes improve. Also, now you know better then before. gives the distorted perspective that those decisions were clearer than they really were.
- Keep things simple (KISS approach) **with respect of your ultimate goal** and not only for the sake of simplicity.<br/> - Review every decision after some time. Check they are still relevant, or if there is some improvement you can
implement.<br/>
Things change constantly: new technologies are given birth often, and processes improve. Also, now you know better
then before.
- Keep things simple (KISS approach) **with respect of your ultimate goal** and not only for the sake of
simplicity.<br/>
Always going for the simple solution makes things complicated on a higher level.<br/> Always going for the simple solution makes things complicated on a higher level.<br/>
Check out [KISS principle is not that simple]. Check out [KISS principle is not that simple].
- Beware of complex things that _should be simple_.<br/> - Beware of complex things that _should be simple_.<br/>
@@ -31,23 +38,29 @@ What really worked for me.
Check out the [5 whys] approach. Check out the [5 whys] approach.
- Put in place processes to avoid repeating mistakes. - Put in place processes to avoid repeating mistakes.
- Automate when and where you can, yet mind [the automation paradox]. - Automate when and where you can, yet mind [the automation paradox].
- Automation does **not** necessarily involve [abstracting away][we have used too many levels of abstractions and now the future looks bleak]. - Automation does **not** necessarily involve
- Keep different parts **de**coupled where possible, the same way [_interfaces_ are used in programming][what does it mean to program to interfaces?].<br/> [abstracting away][we have used too many levels of abstractions and now the future looks bleak].
- Keep different parts **de**coupled where possible, the same way
[_interfaces_ are used in programming][what does it mean to program to interfaces?].<br/>
This allows for quick and (as much as possible) painless switch between technologies. This allows for quick and (as much as possible) painless switch between technologies.
- The _one-size-fits-all_ approach is a big fat lie.<br/> - The _one-size-fits-all_ approach is a big fat lie.<br/>
You'll end up with stiff, hard to change results that satisfy nobody. This proved particularly true with regards to templates and pipelines. You'll end up with stiff, hard to change results that satisfy nobody. This proved particularly true with regards to
templates and pipelines.
- Choose tools based on **how helpful** they are to achieve your goals.<br/> - Choose tools based on **how helpful** they are to achieve your goals.<br/>
Do **not** adapt your work to specific tools. Do **not** adapt your work to specific tools.
- Backup your data, especially when you are about to update something.<br/> - Backup your data, especially when you are about to update something.<br/>
[Murphy's law] is lurking. Consider [the 3-2-1 backup strategy]. [Murphy's law] is lurking. Consider [the 3-2-1 backup strategy].
- [Branch early, branch often]. - [Branch early, branch often].
- [Keep a changelog].
- [Keep changes short and sweet][the art of small pull requests].<br/> - [Keep changes short and sweet][the art of small pull requests].<br/>
Nobody likes to dive deep into a 1200 lines, 356 files pull request ([PR fatigue][how to tackle pull request fatigue], everybody?). Nobody likes to dive deep into a 1200 lines, 356 files pull request ([PR fatigue][how to tackle pull request fatigue],
everybody?).
- Consider keeping changes in _behaviour_ (logic) separated from changes to the structure.<br/> - Consider keeping changes in _behaviour_ (logic) separated from changes to the structure.<br/>
It allows for easier debugging by letting you deal with one great issue at a time. It allows for easier debugging by letting you deal with one great issue at a time.
- Make changes easy, avoid making easy changes.<br/> - Make changes easy, avoid making easy changes.<br/>
Easy changes will build up long term and become a pain to deal with. Easy changes will build up long term and become a pain to deal with.
- [Trunk-based development][trunk-based development: a comprehensive guide] and other branching strategies all work.<br/> - [Trunk-based development][trunk-based development: a comprehensive guide] and other branching strategies all
work.<br/>
Consider the [different pros and cons of each][git branching strategies vs. trunk-based development]. Consider the [different pros and cons of each][git branching strategies vs. trunk-based development].
- Refactoring _can_ be an option.<br/> - Refactoring _can_ be an option.<br/>
Just **don't default** to it nor use it mindlessly. Just **don't default** to it nor use it mindlessly.
@@ -68,7 +81,8 @@ What really worked for me.
Then try to make them better. Then try to make them better.
- Don't just dismiss your teammates' customs.<br/> - Don't just dismiss your teammates' customs.<br/>
E.g., use [EditorConfig] instead of your editor's specific setting files only. E.g., use [EditorConfig] instead of your editor's specific setting files only.
- You, your teammates and other teams in your company _should be_ on the same boat and _should be_ shooting for the same goal.<br/> - You, your teammates and other teams in your company _should be_ on the same boat and _should be_ shooting for the same
goal.<br/>
Act like it. You may as well collaborate instead of fighting. Act like it. You may as well collaborate instead of fighting.
## CI/CD specific ## CI/CD specific
@@ -80,7 +94,8 @@ What really worked for me.
### Pipelining ### Pipelining
- Differentiate what the concept of pipelines really is from the idea of pipelines in approaches like DevOps.<br/> - Differentiate what the concept of pipelines really is from the idea of pipelines in approaches like DevOps.<br/>
Pipelines are sequences of actions. Pipelines in DevOps and alike end up being magic tools to take actions away from people. Pipelines are sequences of actions. Pipelines in DevOps and alike end up being magic tools to take actions away from
people.
- Keep in mind [the automation paradox].<br/> - Keep in mind [the automation paradox].<br/>
Pipelines tend to easily become complex systems just like Rube Goldberg machines. Pipelines tend to easily become complex systems just like Rube Goldberg machines.
- Keep tasks as simple, consistent and reproducible as possible.<br/> - Keep tasks as simple, consistent and reproducible as possible.<br/>
@@ -90,7 +105,8 @@ What really worked for me.
- Consider using local automation to guarantee basic quality **before** the code reaches the shared repository.<br/> - Consider using local automation to guarantee basic quality **before** the code reaches the shared repository.<br/>
Tools like [`pre-commit`][pre-commit] or [`lefthook`][lefthook] are a doozy for this. Tools like [`pre-commit`][pre-commit] or [`lefthook`][lefthook] are a doozy for this.
- DevOps pipelines are meant to be used as **last mile** steps for specific goals.<br/> - DevOps pipelines are meant to be used as **last mile** steps for specific goals.<br/>
There **cannot** be a single pipeline for everything, the same way as the _one-size-fits-all_ concept never really works. There **cannot** be a single pipeline for everything, the same way as the _one-size-fits-all_ concept never really
works.
## Product engineering ## Product engineering
@@ -101,9 +117,11 @@ Consider what follows for infrastructure and platform engineering as well.
- Focus on small audiences first. Avoid trying appealing lots of users from the beginning.<br/> - Focus on small audiences first. Avoid trying appealing lots of users from the beginning.<br/>
If you do not have a user base, the product has no reason to exist but your will to create it. If you do not have a user base, the product has no reason to exist but your will to create it.
- Consider and fix users' pain points **before** adding new features.<br/> - Consider and fix users' pain points **before** adding new features.<br/>
If users are not happy with your tool they'll try moving away from it, bringing the discussion back to the previous point in this list. If users are not happy with your tool they'll try moving away from it, bringing the discussion back to the previous
point in this list.
- Avoid creating mindless abstractions, like templates using variables for all their attributes.<br/> - Avoid creating mindless abstractions, like templates using variables for all their attributes.<br/>
Prefer providing one or at most a few simplified solutions that use different [adapters or interfaces][what does it mean to program to interfaces?] in the background instead.<br/> Prefer providing one or at most a few simplified solutions that use different
[adapters or interfaces][what does it mean to program to interfaces?] in the background instead.<br/>
E.g., check out how [Crossplane] works. E.g., check out how [Crossplane] works.
## Sources ## Sources
@@ -143,6 +161,7 @@ Listed in order of addition:
<!-- Knowledge base --> <!-- Knowledge base -->
[crossplane]: https://www.crossplane.io/ [crossplane]: https://www.crossplane.io/
[editorconfig]: editorconfig.md [editorconfig]: editorconfig.md
[keep a changelog]: keep%20a%20changelog.md
[lefthook]: lefthook.md [lefthook]: lefthook.md
[pre-commit]: pre-commit.md [pre-commit]: pre-commit.md
[safe]: safe.placeholder [safe]: safe.placeholder

View File

@@ -1,2 +0,0 @@
https://keepachangelog.com/en/1.1.0/
https://github.com/olivierlacan/keep-a-changelog

17
knowledge base/cni.md Normal file
View File

@@ -0,0 +1,17 @@
# Container Network Interface
TODO
1. [Further readings](#further-readings)
## Further readings
- [Website]
<!--
Reference
═╬═Time══
-->
<!-- Upstream -->
[website]: https://www.cni.dev/

View File

@@ -1 +0,0 @@
https://www.cni.dev/

View File

@@ -0,0 +1,25 @@
# Containerd
TODO
1. [Further readings](#further-readings)
## Further readings
- [Website]
- [Github]
- [Docker]
- [NerdCTL]
<!--
Reference
═╬═Time══
-->
<!-- Knowledge base -->
[docker]: docker.md
[nerdctl]: nerdctl.md
<!-- Upstream -->
[github]: https://github.com/containerd/containerd
[website]: https://containerd.io/

View File

@@ -1,4 +0,0 @@
https://github.com/containerd/containerd
[docker]: docker.md
[nerdctl]: nerdctl.placeholder

View File

@@ -235,7 +235,8 @@ sudo vim "$(docker volume inspect --format '{{.Mountpoint}}' 'gitea_config')/app
8eaaae8c0c72 hello-world "/hello" 21 seconds ago Created sleepy_brown 8eaaae8c0c72 hello-world "/hello" 21 seconds ago Created sleepy_brown
``` ```
- When referring to a container or image using their ID, you just need to use as many characters you need to uniquely specify a single one of them: - When referring to a container or image using their ID, you just need to use as many characters you need to uniquely
specify a single one of them:
```sh ```sh
$ docker ps -a $ docker ps -a
@@ -252,8 +253,10 @@ sudo vim "$(docker volume inspect --format '{{.Mountpoint}}' 'gitea_config')/app
8eaaae8c0c72 hello-world "/hello" 45 seconds ago Exited (0) 10 seconds ago sleepy_brown 8eaaae8c0c72 hello-world "/hello" 45 seconds ago Exited (0) 10 seconds ago sleepy_brown
``` ```
- Docker's host networking feature is not supported on Mac, even though the `docker run` command doesn't complain about it.<br/> - Docker's host networking feature is not supported on Mac, even though the `docker run` command doesn't complain about
This is due to the fact that the Docker daemon on Mac is running in a virtual machine, and not natively; hence, ports are exposed on the VM and not of the host running it.<br/> it.<br/>
This is due to the fact that the Docker daemon on Mac is running in a virtual machine, and not natively; hence, ports
are exposed on the VM and not of the host running it.<br/>
One way around it is port forwarding to localhost (the `-p` or `-P` options). One way around it is port forwarding to localhost (the `-p` or `-P` options).
## Daemon configuration ## Daemon configuration
@@ -393,9 +396,9 @@ docker load …
--> -->
<!-- Knowledge base --> <!-- Knowledge base -->
[containerd]: containerd.placeholder [containerd]: containerd.md
[dive]: dive.placeholder [dive]: dive.placeholder
[podman]: podman.placeholder [podman]: podman.md
[testcontainers]: testcontainers.placeholder [testcontainers]: testcontainers.placeholder
<!-- Upstream --> <!-- Upstream -->

View File

@@ -6,5 +6,5 @@ Hyperconverged infrastructure (HCI) solution by SUSE built for bare metal server
[kubernetes]: kubernetes/README.md [kubernetes]: kubernetes/README.md
[kubevirt]: kubernetes/kubevirt.placeholder [kubevirt]: kubernetes/kubevirt.placeholder
[kvm]: kvm.placeholder [kvm]: kvm.md
[longhorn]: kubernetes/longhorn.placeholder [longhorn]: kubernetes/longhorn.placeholder

26
knowledge base/iac.md Normal file
View File

@@ -0,0 +1,26 @@
# Infrastructure as Code
TODO
1. [Further readings](#further-readings)
Personal preference:
[Pulumi] > [OpenTofu] > [Terraform] > [Ansible]
## Further readings
- [Pulumi]
- [Terraform] / [OpenTofu]
- [Ansible]
<!--
Reference
═╬═Time══
-->
<!-- Knowledge base -->
[ansible]: pulumi.md
[opentofu]: opentofu.md
[pulumi]: pulumi.md
[terraform]: terraform.md

View File

@@ -1 +0,0 @@
# Infrastructure as Code

25
knowledge base/iam.md Normal file
View File

@@ -0,0 +1,25 @@
# Identity and Access Management
TODO
1. [Further readings](#further-readings)
## Further readings
Solutions:
- [Authelia]
- [Authentik]
- [Hydra]
- [Keycloak]
<!--
Reference
═╬═Time══
-->
<!-- Others -->
[authelia]: https://www.authelia.com/
[authentik]: https://goauthentik.io/
[hydra]: https://www.ory.sh/hydra/
[keycloak]: https://www.keycloak.org/

View File

@@ -1,4 +0,0 @@
[authelia]: https://www.authelia.com/
[authentik]: https://goauthentik.io/
[keycloak]: https://www.keycloak.org/
[hydra]: https://www.ory.sh/hydra/

View File

@@ -0,0 +1,17 @@
# JSON schema
TODO
1. [Further readings](#further-readings)
## Further readings
- [Website]
<!--
Reference
═╬═Time══
-->
<!-- Upstream -->
[website]: https://json-schema.org/

View File

@@ -1 +0,0 @@
https://json-schema.org/

View File

@@ -0,0 +1,19 @@
# Keep a changelog
TODO
1. [Further readings](#further-readings)
## Further readings
- [Website]
- [Github]
<!--
Reference
═╬═Time══
-->
<!-- Upstream -->
[github]: https://github.com/olivierlacan/keep-a-changelog
[website]: https://keepachangelog.com/en/1.1.0/

View File

@@ -0,0 +1,27 @@
# Rancher
TODO
1. [Further readings](#further-readings)
## Further readings
- [Website]
- [Rancher Kubernetes Engine (RKE)][rke]
- [Rancher desktop]
- [Containerd]
- [Docker]
<!--
Reference
═╬═Time══
-->
<!-- Knowledge base -->
[containerd]: ../containerd.md
[docker]: ../docker.md
[rancher desktop]: ../rancher%20desktop.md
<!-- Upstream -->
[rke]: https://rke.docs.rancher.com/
[website]: https://www.rancher.com/

View File

@@ -1,8 +0,0 @@
# Rancher
[website]: https://www.rancher.com/
[rke]: https://rke.docs.rancher.com/
[containerd]: ../containerd.placeholder
[docker]: ../docker.md
[rancher desktop]: ../rancher%20desktop.placeholder

17
knowledge base/kvm.md Normal file
View File

@@ -0,0 +1,17 @@
# KVM
Full virtualization solution for Linux on x86 hardware.
1. [Further readings](#further-readings)
## Further readings
- [Website]
<!--
Reference
═╬═Time══
-->
<!-- Upstream -->
[website]: https://linux-kvm.org/page/Main_Page

View File

@@ -1,5 +0,0 @@
# KVM
Full virtualization solution for Linux on x86 hardware.
[website]: https://linux-kvm.org/page/Main_Page

22
knowledge base/nerdctl.md Normal file
View File

@@ -0,0 +1,22 @@
# NerdCTL
TODO
Docker-compatible CLI for [Containerd].
1. [Further readings](#further-readings)
## Further readings
- [Github]
<!--
Reference
═╬═Time══
-->
<!-- Knowledge base -->
[containerd]: containerd.md
<!-- Upstream -->
[github]: https://github.com/containerd/nerdctl

View File

@@ -1,3 +0,0 @@
https://github.com/containerd/nerdctl
[containerd]: containerd.placeholder

View File

@@ -4,7 +4,7 @@
1. [TL;DR](#tldr) 1. [TL;DR](#tldr)
1. [Further readings](#further-readings) 1. [Further readings](#further-readings)
1. [Sources](#sources) 1. [Sources](#sources)
## TL;DR ## TL;DR
@@ -95,22 +95,18 @@ rm -rf '/nix'
- [Website] - [Website]
- [NixOS] - [NixOS]
## Sources ### Sources
All the references in the [further readings] section, plus the following:
- [Manual] - [Manual]
<!-- <!--
References Reference
═╬═Time══
--> -->
<!-- Knowledge base -->
[nixos]: nixos.md
<!-- Upstream --> <!-- Upstream -->
[manual]: https://nix.dev/manual/nix/2.19/ [manual]: https://nix.dev/manual/nix/2.19/
[website]: https://nix.dev [website]: https://nix.dev
<!-- In-article sections -->
[further readings]: #further-readings
<!-- Knowledge base -->
[nixos]: nixos.placeholder

17
knowledge base/nixos.md Normal file
View File

@@ -0,0 +1,17 @@
# NixOS
TODO
1. [Further readings](#further-readings)
## Further readings
- [Website]
<!--
Reference
═╬═Time══
-->
<!-- Upstream -->
[website]: https://nixos.org

View File

@@ -1 +0,0 @@
https://nixos.org

View File

@@ -1,6 +1,21 @@
# Open Policy Agent # Open Policy Agent
TODO
Open source, general-purpose policy engine. Open source, general-purpose policy engine.
1. [Further readings](#further-readings)
## Further readings
- [Website]
- [Rego]
<!--
Reference
═╬═Time══
-->
<!-- Upstream -->
[rego]: https://www.openpolicyagent.org/docs/latest/policy-language/ [rego]: https://www.openpolicyagent.org/docs/latest/policy-language/
[website]: https://www.openpolicyagent.org/ [website]: https://www.openpolicyagent.org/

View File

@@ -22,11 +22,12 @@ sudo zypper install 'podman'
- [Docker] - [Docker]
<!-- <!--
References Reference
═╬═Time══
--> -->
<!-- Upstream -->
[website]: https://podman.io/
<!-- Knowledge base --> <!-- Knowledge base -->
[docker]: docker.md [docker]: docker.md
<!-- Upstream -->
[website]: https://podman.io/

View File

@@ -0,0 +1,25 @@
# Rancher Desktop
TODO
1. [Further readings](#further-readings)
## Further readings
- [Website]
- [Rancher]
- [Containerd]
- [Docker]
<!--
Reference
═╬═Time══
-->
<!-- Knowledge base -->
[containerd]: containerd.md
[docker]: docker.md
[rancher]: kubernetes/rancher.md
<!-- Upstream -->
[website]: https://rancherdesktop.io/

View File

@@ -1,7 +0,0 @@
# Rancher Desktop
[website]: https://rancherdesktop.io/
[containerd]: containerd.placeholder
[docker]: docker.md
[rancher]: kubernetes/rancher.placeholder

View File

@@ -2,11 +2,9 @@
Runs on top of [Podman]. Runs on top of [Podman].
## Table of contents <!-- omit in toc -->
1. [TL;DR](#tldr) 1. [TL;DR](#tldr)
1. [Further readings](#further-readings) 1. [Further readings](#further-readings)
1. [Sources](#sources) 1. [Sources](#sources)
## TL;DR ## TL;DR
@@ -43,17 +41,18 @@ toolbox rmi -af
- [GitHub] page - [GitHub] page
- [Podman] - [Podman]
## Sources ### Sources
- [Fedora Silverblue] - [Fedora Silverblue]
<!-- <!--
References Reference
═╬═Time══
--> -->
<!-- Knowledge base -->
[podman]: podman.md
<!-- Upstream --> <!-- Upstream -->
[fedora silverblue]: https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/ [fedora silverblue]: https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/
[github]: https://github.com/containers/toolbox [github]: https://github.com/containers/toolbox
<!-- Knowledge base -->
[podman]: podman.placeholder