Skip to content

Examples

The Azure lexicon ships with several example projects demonstrating common patterns.

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.

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.

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.

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.

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.

Terminal window
# Build any example
cd lexicons/azure/examples/basic-storage
chant build --output dist/template.json
# Validate without deploying
az deployment group validate \
--resource-group my-rg \
--template-file dist/template.json