fix: minify mermaid graph

Bertrand Lanson 2024-08-29 20:35:18 +02:00
parent f2ef6e8861
commit 42eec5b013
Signed by: lanson
SSH Key Fingerprint: SHA256:/nqc6HGqld/PS208F6FUOvZlUzTS0rGpNNwR5O2bQBw

@ -7,6 +7,9 @@ Hashistack-Ansible offers flexibility in deploying various environments, whether
If you're setting up a test environment, you can deploy each service on a single host. Heres an example of a minimal inventory file: If you're setting up a test environment, you can deploy each service on a single host. Heres an example of a minimal inventory file:
```ini ```ini
[haproxy_servers]
test-server
[vault_servers] [vault_servers]
test-server test-server
@ -34,13 +37,11 @@ The architecture for this test setup looks like this:
```mermaid ```mermaid
graph LR; graph LR;
client[Client] -->|http/s| server client[Client] -->|http| server{
subgraph server[Dev/Test Server] Vault Server
direction LR Consul Server
vault[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/vault_500x500.png' width='40' height='40' /><span>] <--> consul Nomad Server
nomad[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/nomad_500x500.png' width='40' height='40' /><span>] <--> consul };
consul[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_500x500.png' width='40' height='40' /><span>]
end
``` ```
## 🚀 Production Deployment ## 🚀 Production Deployment
@ -73,9 +74,9 @@ nomadnode2
nomadnode3 nomadnode3
[nomad_clients] [nomad_clients]
nmdcl1 nomadclient1
nmdcl2 nomadclient2
nmdcl3 nomadclient3
[consul_agents] [consul_agents]
... ...
@ -91,82 +92,85 @@ Heres what the architecture for a production setup might look like:
```mermaid ```mermaid
graph TD graph TD
subgraph cnslsrv[Consul Servers] subgraph c[ ]
direction LR direction LR
consul1[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_500x500.png' width='40' height='40' /><span>] <--> consul2 & consul3 & consul4 & consul5 c1[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_500x500.png' /><span>] <--> c2 & c3 & c4 & c5
consul2[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_500x500.png' width='40' height='40' /><span>] <--> consul3 & consul4 & consul5 c2[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_500x500.png' /><span>] <--> c3 & c4 & c5
consul3[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_500x500.png' width='40' height='40' /><span>] <--> consul4 & consul5 c3[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_500x500.png' /><span>] <--> c4 & c5
consul4[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_500x500.png' width='40' height='40' /><span>] <--> consul5 c4[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_500x500.png' /><span>] <--> c5
consul5[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_500x500.png' width='40' height='40' /><span>] c5[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_500x500.png' /><span>]
end end
subgraph vaultservers[Vault Servers] subgraph v[ ]
direction LR direction LR
subgraph vaultnode1[ ] subgraph vn1[ ]
direction TB direction TB
vault1[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/vault_500x500.png' width='40' height='40' /><span>] <--> consulvaultagent1 v1[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/vault_500x500.png' /><span>] <--> cva1
consulvaultagent1([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) cva1([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
subgraph vaultnode2[ ] subgraph vn2[ ]
direction TB direction TB
vault2[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/vault_500x500.png' width='40' height='40' /><span>] <--> consulvaultagent2 v2[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/vault_500x500.png' /><span>] <--> cva2
consulvaultagent2([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) cva2([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
subgraph vaultnode3[ ] subgraph vn3[ ]
direction TB direction TB
vault3[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/vault_500x500.png' width='40' height='40' /><span>] <--> consulvaultagent3 v3[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/vault_500x500.png' /><span>] <--> cva3
consulvaultagent3([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) cva3([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
vaultnode1 <--> vaultnode2 vn1 <--> vn2
vaultnode2 <--> vaultnode3 vn2 <--> vn3
vaultnode3 <--> vaultnode1 vn3 <--> vn1
end end
vaultservers -->|Service registration| cnslsrv v -->|Service registration| c
subgraph nmdsrvs[Nomad Servers] subgraph ns[ ]
direction LR direction LR
subgraph nmdsrvnode1[ ] subgraph ns1[ ]
direction TB direction TB
nmdsrv1[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/nomad_500x500.png' width='40' height='40' /><span>] <--> consulnmdsrvagent1 n1[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/nomad_500x500.png' /><span>] <--> nca1
consulnmdsrvagent1([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) nca1([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
subgraph nmdsrvnode2[ ] subgraph nsn2[ ]
direction TB direction TB
nmdsrv2[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/nomad_500x500.png' width='40' height='40' /><span>] <--> consulnmdsrvagent2 n2[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/nomad_500x500.png' /><span>] <--> nca2
consulnmdsrvagent2([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) nca2([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
subgraph nmdsrvnode3[ ] subgraph ns3[ ]
direction TB direction TB
nmdsrv3[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/nomad_500x500.png' width='40' height='40' /><span>] <--> consulnmdsrvagent3 n3[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/nomad_500x500.png' /><span>] <--> nca3
consulnmdsrvagent3([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) nca3([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
nmdsrv1 <--> nmdsrv2 n1 <--> n2
nmdsrv2 <--> nmdsrv3 n2 <--> n3
nmdsrv3 <--> nmdsrv1 n3 <--> n1
end end
nmdsrvs -->|Service registration| cnslsrv ns -->|Service registration| c
subgraph nmdcls[Nomad Clients] subgraph nc[ ]
direction LR direction LR
subgraph nmdclnode1[ ] subgraph ncn1[ ]
direction LR direction LR
nmdcl1[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/nomad_white_500x500.png' width='40' height='40' /><span>] <--> consulnmdclagent1 nc1[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/nomad_white_500x500.png' /><span>] <--> ncca1
consulnmdclagent1([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) ncca1([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
subgraph nmdclnode2[ ] subgraph ncn2[ ]
direction LR direction LR
nmdcl2[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/nomad_white_500x500.png' width='40' height='40' /><span>] <--> consulnmdclagent2 nc2[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/nomad_white_500x500.png' /><span>] <--> ncca2
consulnmdclagent2([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) ncca2([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
subgraph nmdclnode3[ ] subgraph ncn3[ ]
direction LR direction LR
nmdcl3[<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/nomad_white_500x500.png' width='40' height='40' /><span>] <--> consulnmdclagent3 nc3[<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/nomad_white_500x500.png' /><span>] <--> ncca3
consulnmdclagent3([<span style='min-width: 40px; display: block;'><img src='./assets/hashicorp/consul_white_500x500.png' width='40' height='40' /><span>]) ncca3([<span style='min-width: 40px; display: block;'><img src='https://git.ednz.fr/ansible-collections/hashistack/raw/branch/main/assets/consul_white_500x500.png' /><span>])
end end
end end
nmdcls -->|Service registration| cnslsrv nc -->|Service registration| c
nmdcls <--> nmdsrvs nc <--> ns
``` ```
> [!NOTE]
> You can skip the HAProxy part if you're using an external load-balancing solution like AWS ALB or any other LB technology to connect to your platform.