Improved requirements list and graph

This commit is contained in:
Michele Cereda
2023-01-22 22:44:47 +01:00
parent 9417f4ab15
commit a7af61a87a
5 changed files with 36 additions and 25 deletions

View File

@@ -11,11 +11,15 @@ Stateless active/active.
| Requirement | Description |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Passwords | All passwords must be stored as a Base64 encoded secret in Azure Key Vault and retrieved during runtime. |
| Replicated license file | A valid Replicated license file (`.rli`) must be stored as a Base64 encoded secret in Azure Key Vault and retrieved during runtime. |
| Docker Engine | Required by Replicated. |
| Load balancer | Azure Application Gateway; FIXME |
| Passwords | All passwords must be stored as a Base64 encoded secret in Azure Key Vault and retrieved during the apply phase. |
| PostgreSQL | Azure Database For PostgreSQL; FIXME |
| Redis | Azure Cache for Redis; FIXME |
| Replicated license file | A valid Replicated license file (`.rli`) must be stored as a Blob in an Azure Storage Account and retrieved during the apply phase. |
| TFE airgap bundle | The TFE airgap bundle for Replicated must be stored as a Blob in a Storage Account and retrieved by the VM after first boot. |
| TLS certificate | The TLS certificate and private key files must be PEM-encoded. The TLS certificate file can contain a full chain of TLS certificates if necessary. |
| Tokens | All tokens must be stored as a Base64 encoded secret in Azure Key Vault and retrieved during runtime. |
| Tokens | All tokens must be stored as a Base64 encoded secret in Azure Key Vault and retrieved during the apply phase. |
| Virtual machine | Must be a Linux VM. |
![requirements diagram]
@@ -28,7 +32,7 @@ Stateless active/active.
- Azure's [Terraform Enterprise Azure Instance Module][azure-terraform/terraform-azurerm-terraform-enterprise-instance] on GitHub
<!-- knowledge base -->
[requirements diagram]: design/requirements.png
[requirements diagram]: design/images/requirements.png
<!-- hashicorp references -->
[terraform enterprise]: https://developer.hashicorp.com/terraform/enterprise

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

View File

@@ -1,33 +1,40 @@
#!/usr/bin/env python3
from diagrams import Diagram
from diagrams.azure.compute import VMLinux
from diagrams import Cluster, Diagram
from diagrams.azure.compute import OsImages, VMLinux
from diagrams.azure.database import CacheForRedis, DatabaseForPostgresqlServers
from diagrams.azure.network import LoadBalancers, NetworkInterfaces, Subnets, VirtualNetworks
from diagrams.azure.network import ApplicationGateway, NetworkInterfaces, VirtualNetworks
from diagrams.azure.security import KeyVaults
from diagrams.azure.storage import BlobStorage
from diagrams.custom import Custom
from diagrams.generic.os import RedHat
from diagrams.onprem.container import Docker
from diagrams.onprem.iac import Terraform
with Diagram("Requirements", show=False):
cache = CacheForRedis("Redis Cache")
db = DatabaseForPostgresqlServers("PostgreSQL DB")
engine = Docker("Docker Engine")
kv = KeyVaults("Key Vault")
lb = LoadBalancers("Load Balancer")
nic = NetworkInterfaces("Network Interface")
storage = BlobStorage("Blob Storage")
subnet_private = Subnets("Private Subnet")
subnet_public = Subnets("Public Subnet")
container_engine = Docker("Docker Engine")
replicated = Custom("Replicated", icon_path = "images/replicated.png")
rhel = RedHat("RHEL")
tfe = Terraform("Terraform Enterprise")
vm = VMLinux("Linux Virtual Machine")
vnet = VirtualNetworks("VNet")
vnet >> [subnet_private, subnet_public]
subnet_private >> kv
[subnet_private, subnet_public] >> nic
kv >> [cache, db, storage, vm]
with Cluster("Azure"):
os = OsImages("Image")
vnet = VirtualNetworks("VNet")
with Cluster("Private Subnet"):
cache = CacheForRedis("Redis Cache")
db = DatabaseForPostgresqlServers("PostgreSQL DB")
kv = KeyVaults("Key Vault")
nic = NetworkInterfaces("Network Interface")
storage = BlobStorage("Blob Storage")
vm = VMLinux("Linux Virtual Machine")
with Cluster("Public Subnet"):
lb = ApplicationGateway("Application Gateway")
vnet >> [kv, nic]
kv >> [cache, db, lb, storage, vm]
nic >> [lb, vm]
vm >> engine
[cache, db, engine, lb, storage] >> tfe
rhel >> os >> vm
storage >> vm >> container_engine >> replicated
[cache, db, lb, replicated] >> tfe