Table des matières

D2 permet de créer des schémas via un fichier texte, tel que l'ancêtre Graphviz ou Mermaid. Je l'aime bien, car je le trouve simple, et il fait des schémas assez propre.

.

Exemple de schéma

Schema en couche


grid-rows: 6
grid-gap: 20
style.fill: black

NixOS: {
  width: 400
  style.fill: "#5277C3"
  style.stroke: "#7c9ee8"
  style.font-color: white
}

Firewall: {
  width: 400
  style.fill: "#DC143C"
  style.stroke: "#ff4757"
  style.font-color: white
}

Kernel: {
  style.fill: "#E74C3C"
  style.stroke: "#ec7063"
  style.font-color: white
}

SSH: {
  style.fill: "#2C3E50"
  style.stroke: "#34495E"
  style.font-color: white
}

Nginx: {
  style.fill: "#009639"
  style.stroke: "#00b347"
  style.font-color: white
}

"Journald & Files": {
  width: 400
  style.fill: "#6C757D"
  style.stroke: "#95a5a6"
  style.font-color: white
}

Vector: {
  width: 400
  style.fill: "#FF6B35"
  style.stroke: "#ff8c61"
  style.font-color: white
}

Reaction: {
  style.fill: "#9B59B6"
  style.stroke: "#b37fd6"
  style.font-color: white
}

VictoriaMetrics: {
  style.fill: "#F39C12"
  style.stroke: "#f5b041"
  style.font-color: white
}

Diagramme réseaux


direction: right
vars: {
  d2-config: {
    layout-engine: elk
  }
}
style.fill: "#222222"

title: homelab network {
  shape: text
  near: top-center
  style: {
    font-size: 55
  }
}

internet: internet
internet.shape: cloud
box: SFR Box\n
internet -- box: {style.stroke: red}

# vlan-adm

mikrotik254: {
  eth01
  eth02
  eth03
  eth04
}

mikrotik253: {
  eth02
  eth03
  eth04
  eth05
  eth09
  eth10
}

mikrotik252: {
  eth02
  eth03
  eth04
  eth05
}

# Mikrotik254
box -- mikrotik254.eth01 -- mikrotik254.bridge: {style.stroke: red}
mikrotik254.bridge -- mikrotik254.eth02: tagged VLAN WAR(2) {style.stroke: red}
mikrotik254.bridge -- mikrotik254.eth02: tagged VLAN DMZ(32) {style.stroke: orange}
mikrotik254.bridge -- mikrotik254.eth02: tagged VLAN ADM(240) {style.stroke: purple}
mikrotik254.bridge -- mikrotik254.eth02: tagged VLAN LAN(254) {style.stroke: green}

mikrotik254.bridge -- mikrotik254.eth03: tagged VLAN WAR(2) {style.stroke: red}
mikrotik254.bridge -- mikrotik254.eth03: tagged VLAN DMZ(32) {style.stroke: orange}
mikrotik254.bridge -- mikrotik254.eth03: tagged VLAN ADM(240) {style.stroke: purple}
mikrotik254.bridge -- mikrotik254.eth03: tagged VLAN LAN(254) {style.stroke: green}

mikrotik254.bridge -- mikrotik254.eth04: LAN {style.stroke: green}
mikrotik254.bridge -- mikrotik254.eth10: ADM {style.stroke: purple}
mikrotik254.eth02 -- mikrotik253.eth02: Trunk: {
  style.stroke-width: 8
  style.font-color: white
}

mikrotik254.eth03 -- mikrotik252.eth02: Trunk: {
  style.stroke-width: 8
  style.font-color: white
}

mikrotik254.eth04 -- android tv: LAN {
  style.stroke: green
  style.font-color: white
}

# mikrotik253
mikrotik253.eth02 -- mikrotik253.router: Trunk: {style.stroke-width: 8}
mikrotik253.router -- mikrotik253.eth03: LAN {style.stroke: green}
mikrotik253.router -- mikrotik253.eth05: LAN {style.stroke: green}

mikrotik253.router -- mikrotik253.eth09: tagged VLAN DMZ(32) {style.stroke: orange}
mikrotik253.router -- mikrotik253.eth09: tagged VLAN ADM(240) {style.stroke: purple}
mikrotik253.router -- mikrotik253.eth10: ADM {style.stroke: purple}
mikrotik253.eth03 -- laptop: LAN {
  style.stroke: green
  style.font-color: white
}

mikrotik253.eth05 -- philips hue: LAN {
  style.stroke: green
  style.font-color: white
}

mikrotik253.eth09 -- hype10: Trunk: {
  style.stroke-width: 8
  style.font-color: white
}

# mikrotik252
mikrotik252.eth02 -- mikrotik252.router: Trunk: {style.stroke-width: 8}
mikrotik252.router -- mikrotik252.eth03: LAN {style.stroke: green}
mikrotik252.router -- mikrotik252.eth04: LAN {style.stroke: green}
mikrotik252.router -- mikrotik252.eth05: LAN {style.stroke: green}