Difference between revisions of "Terraform best practices"

From wikieduonline
Jump to navigation Jump to search
Tags: Mobile web edit, Mobile edit
 
(30 intermediate revisions by 5 users not shown)
Line 1: Line 1:
  
 
* https://www.terraform.io/cloud-docs/guides/recommended-practices
 
* https://www.terraform.io/cloud-docs/guides/recommended-practices
 +
** One [[Workspace]] per Environment per Terraform configuration
 +
* https://cloud.google.com/docs/terraform/best-practices-for-terraform
  
== Best practices from Google Cloud team ==
+
== Best practices from [[Google Cloud]] team ==
 
https://cloud.google.com/docs/terraform/best-practices-for-terraform
 
https://cloud.google.com/docs/terraform/best-practices-for-terraform
 
* Protect [[stateful resources]]: <code>[[lifecycle]] { [[prevent_destroy]] = true }</code>
 
* Protect [[stateful resources]]: <code>[[lifecycle]] { [[prevent_destroy]] = true }</code>
* Follow a standard module structure.
+
* Expose [[Terraform: output|outputs]]: <code>[[outputs.tf]]</code>
 +
* Use [[data sources]]: <code>[[data.]]</code>
 
* Adopt a naming convention.
 
* Adopt a naming convention.
* Use variables carefully.
+
* Use [[variables]] carefully: <code>[[variables.tf]]</code>
* Expose [[outputs]]: <code>[[outputs.tf]]</code>
+
* Limit the use of custom scripts
* Use [[data sources]].
+
* Follow a [[standard module structure]]
* Limit the use of custom scripts.
+
* Include helper scripts in a separate directory: <code>[[helpers/]]</code>
* Include helper scripts in a separate directory.
+
* Put static files in a separate directory: <code>[[files/]]</code>
* Put static files in a separate directory.
+
* Use built-in formatting: <code>[[terraform fmt]]</code>
 +
* Limit the complexity of expressions.
 +
* Use <code>[[Terraform meta argument: count|count]]</code> for conditional values.
 +
* Use <code>[[for_each]]</code> for [[iterated resources]].
 +
* Publish [[Terraform modules|modules]] to a [[registry]].
  
* Use built-in formatting.
+
=== Operations ===
* Limit the complexity of expressions.
+
* Don't modify [[Terraform state]] manually.
* Use count for conditional values.
+
* Always [[plan]] first, <code>[[terraform plan]]</code>
* Use for_each for iterated resources.
+
* Implement an automated [[pipeline]].
* Publish modules to a registry.
+
* Use [[service account]] credentials for CI.
 +
* Avoid [[terraform import|importing]] existing resources.
 +
* Regularly review version [[pins]].
 +
* Use application default credentials when running locally.
 +
* Set [[aliases]] to Terraform.
  
 
== Related ==
 
== Related ==
 
* [[Best practices]]
 
* [[Best practices]]
 
* [[main]]
 
* [[main]]
* [[prevent_destroy]]
+
* <code>[[prevent_destroy]]</code>
 +
 
 +
== Activities ==
 +
* Read https://www.digitalocean.com/community/tutorials/how-to-structure-a-terraform-project
  
 
== See also ==
 
== See also ==

Latest revision as of 11:12, 30 May 2024

Best practices from Google Cloud team[edit]

https://cloud.google.com/docs/terraform/best-practices-for-terraform

Operations[edit]

Related[edit]

Activities[edit]

See also[edit]

Advertising: