# CRUD Functions

As we move on to 2 5 0 and 2 6 0, we will see the CRUD functions in action. One interesting thing to note is, though, that **the CRUDs are&#x20;**<mark style="color:red;">**NOT**</mark>**&#x20;explicitly called anywhere in our project code** (no function calls in `main.tf`). This is because these CRUDs are defined for the <mark style="color:purple;">**Terraform SDK**</mark>. They are invoked automatically by Terraform based on the configurations specified in our terraform configuration files (`main.tf`).

* <mark style="color:purple;">**SDK**</mark>...? 🤨 : Terraform SDK (Software Development Kit) is the set of libraries and tools provided by HashiCorp for developing custom Terraform providers.
* This <mark style="color:purple;">**SDK**</mark> provides a plugin framework which allows us to build custom plugins ([providers](https://gwen-leigh.gitbook.io/multiverse-of-madness-terraform-with-go/2-3-0-custom-terraform-provider-resource-skeleton-go) and provisioners) which is loaded by Terraform. Using the <mark style="color:purple;">**SDK**</mark>, we can create **custom resource types** and execute **custom actions** during Terraform's lifecycle.
  * **custom resource type**: `terrahouse`
  * **custom actions**: the CRUD functions

<div data-full-width="true"><figure><img src="https://1712665346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F56KCNXKO8CxQIkEx9FB3%2Fuploads%2FUDlfqI80q3a24KMR0Wn1%2FCRUD%20-%20all%20four.png?alt=media&#x26;token=c3a18587-1643-4167-8489-ac09cfb31a5d" alt=""><figcaption></figcaption></figure></div>

### Resources

* [Wikipedia - CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete)
