1. HashiCorp Developer - What is Infrastructure as Code?: "IaC allows you to manage your infrastructure with a configuration file... This provides a single source of truth for your infrastructure, making it self-documenting." This supports option A. The page also emphasizes version control, supporting option C.
Source: HashiCorp Learn, Introduction to Terraform, "What is Infrastructure as Code?".
2. HashiCorp Developer - Custom Conditions: "Terraform's goal is to be idempotent... Terraform achieves this by saving the state of your infrastructure and comparing it to the state you define in your configuration files." This directly supports idempotence (option B) as a core goal.
Source: HashiCorp Terraform Documentation, Language, Expressions, "Custom Conditions - Idempotence".
3. HashiCorp Resources - What is Immutable Infrastructure?: This resource distinguishes between infrastructure patterns. While golden images can be part of an immutable strategy (a pattern often used with IaC), the concept itself is a building block, not a principle of the IaC methodology. The principles are about how you manage definitions (code, versioning, idempotence), not what you deploy.
Source: HashiCorp Resources, "What is Immutable Infrastructure?".