Skip to main content

Infrastructure as Code

When someone asks "Does HVE-Core help with deployment?" the honest answer is: it helps you write deployment code correctly, but it does not deploy anything.

This is an important distinction. The Bicep and Terraform instruction files are coding standards. They belong in the same category as the C# conventions or the Python script instructions. They happen to apply to infrastructure code, which makes them adjacent to deployment, but they are fundamentally authoring tools.

What HVE-Core Does for IaC

HVE-Core provides auto-applied coding standards for Bicep and Terraform. These are instruction files that activate when you edit .bicep or .tf files. They enforce conventions, naming patterns, and best practices as you write.

Auto-applied standards

When you open a .bicep file, Copilot automatically loads the Bicep instruction file. You do not invoke anything. The instructions guide naming conventions, parameter patterns, module structure, and API version selection as you write. The same pattern applies to Terraform: open a .tf file and the Terraform instructions activate automatically.

For more on how this mechanism works, see How It Works.

Bicep Conventions at a Glance

AreaWhat It Enforces
Namingkebab-case files, camelCase parameters, PascalCase types
ParametersGrouped by function (Identity, Networking, Storage, etc.)
DescriptionsEvery parameter and type needs @description()
Resource namesAzure naming convention patterns with prefix/environment/instance
ModulesMain module orchestrates, sub-modules receive all values from parent
TypesShared types in types.bicep with @export() and @description()
API versionsUse latest stable, consistent within files

Terraform Conventions at a Glance

AreaWhat It Enforces
StructureConsistent file layout: main.tf, variables.tf, outputs.tf, versions.tf
Namingsnake_case for resources, variables, outputs; kebab-case for files
VariablesEvery variable includes description, booleans start with should_ or is_
ModulesChild modules inherit providers and state from calling root module
StateExplicit backend configuration, no state files committed
ExpressionsPrefer coalesce() and try() over verbose ternary operators

The IaC → Deploy Gap

A complete Ship It experience would include deployment orchestration, progressive rollout, infrastructure validation, and post-deployment monitoring. These are active areas of growth.

What exists today covers the authoring side of the deployment pipeline. The conventions ensure that when you do deploy (through your own CI/CD pipeline, Azure DevOps, GitHub Actions, or manual commands), the infrastructure code follows established patterns and best practices.

For the broader coding standards story, see Coding Standards. For future plans in this space, see What's Coming.