# Infrastructure as Code

> The practice of declaring infrastructure in versioned files and provisioning it from them.

Record: `architecture:infrastructure-as-code`
Kind: activity
Layer: [Resource Core](https://banes-lab.com/records/layer/resource-core.md)
Severity: contextual
Scope: infrastructure, deployment
Aliases: IaC
Canonical: https://banes-lab.com/ontology#architecture-infrastructure-as-code

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Containerization](https://banes-lab.com/records/architecture/containerization.md) and before [Standards Compliance](https://banes-lab.com/records/architecture/standards-compliance.md).

## Repair

- Refactored by: Codify Resource, Import State
- Detected by: drift between code and live infra
- Violated by: untracked manual infra mutation
- Measured by: drift count, IaC coverage
- Enforced by: [policy-as-code](https://banes-lab.com/records/architecture/policy-as-code.md), drift detection

## Requires

- [Declarative Configuration](https://banes-lab.com/records/architecture/declarative-configuration.md)
- [Version Control](https://banes-lab.com/records/lexicon/version-control.md)

## Reinforces

- [Reproducibility](https://banes-lab.com/records/architecture/reproducibility.md)
- [Governance](https://banes-lab.com/records/architecture/governance.md)

## Enables

- [Automated Provisioning](https://banes-lab.com/records/lexicon/automated-provisioning.md)

## Conflicts with

- [Manual Infrastructure Changes](https://banes-lab.com/records/lexicon/manual-infrastructure-changes.md)

## In tension with

- [Tooling Complexity](https://banes-lab.com/records/lexicon/tooling-complexity.md)

## Tensions

- [Infrastructure as Code / Tooling Complexity](https://banes-lab.com/records/tension/infrastructure-as-code-tooling-complexity.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Portability / Infrastructure / Deployment](https://banes-lab.com/records/architecture-category/portability-infrastructure-deployment.md)

## Required by

- [Environment Parity](https://banes-lab.com/records/architecture/environment-parity.md)
- [Immutable Infrastructure](https://banes-lab.com/records/architecture/immutable-infrastructure.md)

## Linked from

- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md)
- [Portability / Infrastructure / Deployment](https://banes-lab.com/ontology/principles/architecture-category-portability-infrastructure-deployment.md)
- [Metadata / Self-Description / Declarative Systems](https://banes-lab.com/ontology/principles/architecture-category-metadata-self-description-declarative-systems.md)
- [Security / Privacy / Compliance / Governance](https://banes-lab.com/ontology/principles/architecture-category-security-privacy-compliance-governance.md)
- [Portability / Infrastructure / Deployment](https://banes-lab.com/ontology/lexicon/lexicon-category-portability-infrastructure-deployment.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
