Examples
The Azure lexicon ships with several example projects demonstrating common patterns.
basic-storage
Section titled “basic-storage”A minimal storage account using the StorageAccountSecure composite with secure defaults.
import { StorageAccountSecure, Concat, UniqueString, Azure } from "@intentius/chant-lexicon-azure";
export const { storageAccount } = StorageAccountSecure({ name: Concat("chantstore", UniqueString(Azure.ResourceGroupId)) as unknown as string, sku: "Standard_LRS", location: Azure.ResourceGroupLocation as unknown as string, tags: { environment: "dev" },});Demonstrates: StorageAccountSecure composite, Concat/UniqueString intrinsics, Azure pseudo-parameters.
web-app
Section titled “web-app”An App Service web application with plan, managed identity, and HTTPS.
import { AppService, Azure } from "@intentius/chant-lexicon-azure";
export const { plan, webApp } = AppService({ name: "chant-web-app", sku: "B1", runtime: "NODE|18-lts", location: Azure.ResourceGroupLocation as unknown as string, tags: { environment: "dev" },});Demonstrates: AppService composite, location prop, managed identity, HTTPS-only.
aks-cluster
Section titled “aks-cluster”An AKS Kubernetes cluster with virtual network and container registry.
import { AksCluster, ContainerRegistrySecure, VnetDefault, Azure } from "@intentius/chant-lexicon-azure";
export const { cluster } = AksCluster({ name: "chant-aks", nodeCount: 3, vmSize: "Standard_D2s_v5", kubernetesVersion: "1.28", location: Azure.ResourceGroupLocation as unknown as string, tags: { environment: "dev" },});
export const { registry } = ContainerRegistrySecure({ name: "chantaksacr", location: Azure.ResourceGroupLocation as unknown as string, tags: { environment: "dev" },});
export const { virtualNetwork, subnet1, subnet2, nsg, routeTable } = VnetDefault({ name: "chant-aks-vnet", location: Azure.ResourceGroupLocation as unknown as string, tags: { environment: "dev" },});Demonstrates: Multiple composites, location prop, AKS + ACR + VNet pattern.
vnet-vms
Section titled “vnet-vms”A virtual network with Linux VMs in two subnets.
import { VnetDefault, VmLinux, ResourceId, Azure } from "@intentius/chant-lexicon-azure";
const location = Azure.ResourceGroupLocation as unknown as string;
// --- Network layer ---
export const { virtualNetwork, subnet1, subnet2, nsg: vnetNsg, routeTable } = VnetDefault({ name: "example-vnet", addressPrefix: "10.0.0.0/16", subnetPrefixes: ["10.0.1.0/24", "10.0.2.0/24"], location, tags: { layer: "network" },});
// --- Compute layer ---
const subnetRef = ResourceId( "Microsoft.Network/virtualNetworks/subnets", "example-vnet", "subnet-1",) as unknown as string;
export const { virtualMachine, nic, nsg: vmNsg } = VmLinux({ name: "example-vm", vmSize: "Standard_B2s", adminUsername: "azureuser", sshPublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7... user@example", subnetId: subnetRef, location, tags: { layer: "compute" },});Demonstrates: VNet + VM composite composition, ResourceId() intrinsic, SSH access.
multi-resource
Section titled “multi-resource”A multi-tier application with storage and web app, demonstrating cross-resource references via intrinsics.
import { StorageAccountSecure, AppService, ResourceId, Reference, Concat, UniqueString, ListKeys, Azure,} from "@intentius/chant-lexicon-azure";
// --- Storage layer ---
const storageName = Concat("appdata", UniqueString(Azure.ResourceGroupId)) as unknown as string;
export const { storageAccount } = StorageAccountSecure({ name: storageName, sku: "Standard_LRS", location: Azure.ResourceGroupLocation as unknown as string, tags: { layer: "data" },});
// --- Web layer ---
export const { plan, webApp } = AppService({ name: "multi-res-app", sku: "B1", runtime: "NODE|18-lts", location: Azure.ResourceGroupLocation as unknown as string, tags: { layer: "web" },});
// --- Cross-resource references ---
const storageAccountId = ResourceId("Microsoft.Storage/storageAccounts", storageName);const storageKeys = ListKeys(storageAccountId, "2023-01-01");const storageRef = Reference("storageAccount", "2023-01-01");
export const storageConnectionResourceId = storageAccountId;export const storageConnectionKeys = storageKeys;export const storageConnectionRef = storageRef;Demonstrates: StorageAccountSecure + AppService composites, ResourceId/ListKeys/Reference intrinsics, cross-resource wiring.
Running examples
Section titled “Running examples”# Build any examplecd lexicons/azure/examples/basic-storagechant build --output dist/template.json
# Validate without deployingaz deployment group validate \ --resource-group my-rg \ --template-file dist/template.json