Base ArchitectureΒΆ
Compose π³ΒΆ
flowchart LR
none["dsk-base declares no service"]
Swarm πΒΆ
flowchart LR
none["dsk-base declares no service"]
VolumesΒΆ
flowchart LR
none["dsk-base declares no volume"]
Condition |
Effect |
|---|---|
swarm, |
shared over NFS |
any one of those missing |
node-local |
All four conditions must hold, so pinning a role takes every one of its volumes node-local. Only the roleβs primary entry counts as pinned here: a placement on any other service pins that service alone and leaves the backing of every volume unchanged. The chain is drawn rather than its result, because that coupling is what makes a placement change move data without saying so.
DependenciesΒΆ
flowchart LR
subgraph deps [Dependencies]
dep_user_workstation["user-workstation π»"]
dep_web_app_docs["web-app-docs π³π"]
end
subgraph role [dsk-base π»]
svc_base["base"]
svc_workstation["workstation"]
svc_docs["docs"]
end
subgraph dependents [Dependents]
dpt_dsk_blender["dsk-blender π»"]
dpt_dsk_bluray_player["dsk-bluray-player π»"]
dpt_dsk_chromium["dsk-chromium π»"]
dpt_dsk_code["dsk-code π»"]
dpt_dsk_copyq["dsk-copyq π»"]
dpt_dsk_docker["dsk-docker π»"]
dpt_dsk_dotlinker["dsk-dotlinker π»"]
dpt_dsk_firefox["dsk-firefox π»"]
dpt_dsk_git["dsk-git π»"]
dpt_dsk_gnome["dsk-gnome π»"]
dpt_dsk_gnome_caffeine["dsk-gnome-caffeine π»"]
dpt_dsk_gnome_extensions["dsk-gnome-extensions π»"]
dpt_dsk_gnome_terminal["dsk-gnome-terminal π»"]
dpt_dsk_gnt_claude["dsk-gnt-claude π»"]
dpt_dsk_gnt_codex["dsk-gnt-codex π»"]
dpt_dsk_gnt_cursor["dsk-gnt-cursor π»"]
dpt_dsk_gnt_pi["dsk-gnt-pi π»"]
dpt_dsk_gnucash["dsk-gnucash π»"]
dpt_dsk_jrnl["dsk-jrnl π»"]
dpt_dsk_keepassxc["dsk-keepassxc π»"]
dpt_dsk_laya["dsk-laya π»"]
dpt_dsk_libreoffice["dsk-libreoffice π»"]
dpt_dsk_micro["dsk-micro π»"]
dpt_dsk_neovim["dsk-neovim π»"]
dpt_dsk_nextcloud["dsk-nextcloud π»"]
dpt_dsk_obs["dsk-obs π»"]
dpt_dsk_qbittorrent["dsk-qbittorrent π»"]
dpt_dsk_retroarch["dsk-retroarch π»"]
dpt_dsk_spotify["dsk-spotify π»"]
dpt_dsk_ssh["dsk-ssh π»"]
dpt_dsk_torbrowser["dsk-torbrowser π»"]
dpt_dsk_virtualbox["dsk-virtualbox π»"]
dpt_dsk_zoom["dsk-zoom π»"]
end
dep_user_workstation -- "1:1" --> svc_workstation
dep_web_app_docs -. "0..1" .-> svc_docs
svc_base -- "1:1" --> dpt_dsk_blender
svc_base -- "1:1" --> dpt_dsk_bluray_player
svc_base -- "1:1" --> dpt_dsk_chromium
svc_base -- "1:1" --> dpt_dsk_code
svc_base -- "1:1" --> dpt_dsk_copyq
svc_base -- "1:1" --> dpt_dsk_docker
svc_base -- "1:1" --> dpt_dsk_dotlinker
svc_base -- "1:1" --> dpt_dsk_firefox
svc_base -- "1:1" --> dpt_dsk_git
svc_base -- "1:1" --> dpt_dsk_gnome
svc_base -- "1:1" --> dpt_dsk_gnome_caffeine
svc_base -- "1:1" --> dpt_dsk_gnome_extensions
svc_base -- "1:1" --> dpt_dsk_gnome_terminal
svc_base -- "1:1" --> dpt_dsk_gnt_claude
svc_base -- "1:1" --> dpt_dsk_gnt_codex
svc_base -- "1:1" --> dpt_dsk_gnt_cursor
svc_base -- "1:1" --> dpt_dsk_gnt_pi
svc_base -- "1:1" --> dpt_dsk_gnucash
svc_base -- "1:1" --> dpt_dsk_jrnl
svc_base -- "1:1" --> dpt_dsk_keepassxc
svc_base -- "1:1" --> dpt_dsk_laya
svc_base -- "1:1" --> dpt_dsk_libreoffice
svc_base -- "1:1" --> dpt_dsk_micro
svc_base -- "1:1" --> dpt_dsk_neovim
svc_base -- "1:1" --> dpt_dsk_nextcloud
svc_base -- "1:1" --> dpt_dsk_obs
svc_base -- "1:1" --> dpt_dsk_qbittorrent
svc_base -- "1:1" --> dpt_dsk_retroarch
svc_base -- "1:1" --> dpt_dsk_spotify
svc_base -- "1:1" --> dpt_dsk_ssh
svc_base -- "1:1" --> dpt_dsk_torbrowser
svc_base -- "1:1" --> dpt_dsk_virtualbox
svc_base -- "1:1" --> dpt_dsk_zoom
Symbol |
Meaning |
|---|---|
|
fixed relationship |
|
conditional, enabled only in matching deployments |
|
declared but turned off in this role |
π» |
deploys to the host |
π³ |
deploys under compose |
π |
deploys under swarm |
β |
service explicitly turned off |
βοΈ |
Ansible role dependency from |
Every dependency and dependent is listed; the graph is not truncated.