Auto-update blog content from Obsidian: 2025-07-01 11:45:05
All checks were successful
Blog Deployment / Check-Rebuild (push) Successful in 12s
Blog Deployment / Build (push) Successful in 36s
Blog Deployment / Deploy-Staging (push) Successful in 9s
Blog Deployment / Test-Staging (push) Successful in 3s
Blog Deployment / Merge (push) Successful in 6s
Blog Deployment / Deploy-Production (push) Successful in 9s
Blog Deployment / Test-Production (push) Successful in 2s
Blog Deployment / Clean (push) Successful in 3s
Blog Deployment / Notify (push) Successful in 2s
All checks were successful
Blog Deployment / Check-Rebuild (push) Successful in 12s
Blog Deployment / Build (push) Successful in 36s
Blog Deployment / Deploy-Staging (push) Successful in 9s
Blog Deployment / Test-Staging (push) Successful in 3s
Blog Deployment / Merge (push) Successful in 6s
Blog Deployment / Deploy-Production (push) Successful in 9s
Blog Deployment / Test-Production (push) Successful in 2s
Blog Deployment / Clean (push) Successful in 3s
Blog Deployment / Notify (push) Successful in 2s
This commit is contained in:
@@ -1,29 +1,35 @@
|
|||||||
---
|
---
|
||||||
slug:
|
slug:
|
||||||
title: Template
|
title: Create a Terraform module for Proxmox
|
||||||
description:
|
description:
|
||||||
date:
|
date:
|
||||||
draft: true
|
draft: true
|
||||||
tags:
|
tags:
|
||||||
categories:
|
categories:
|
||||||
---
|
---
|
||||||
## Develop a Terraform Module
|
## Intro
|
||||||
|
|
||||||
In the final step of this article, I will show you how you can transform this piece of code in a reusable Terraform module.
|
In one of my [previous article]({{< ref "post/3-terraform-create-vm-proxmox" >}}), I explained how to deploy Virtual Machines on Proxmox using Terraform from scratch.
|
||||||
|
|
||||||
### What is a Terraform Module?
|
Here I want to detail how to transform this piece of code in a reusable Terraform module. I will then show you how to modify your code to make use of it.
|
||||||
|
|
||||||
|
---
|
||||||
|
## What is a Terraform Module?
|
||||||
|
|
||||||
Terraform modules are reusable components that let you organize and simplify your infrastructure code by grouping related resources into a single unit. Instead of repeating the same configuration across multiple places, you can define it once in a module and use it wherever needed, just like calling a function in programming.
|
Terraform modules are reusable components that let you organize and simplify your infrastructure code by grouping related resources into a single unit. Instead of repeating the same configuration across multiple places, you can define it once in a module and use it wherever needed, just like calling a function in programming.
|
||||||
|
|
||||||
Modules can be local (within your project) or remote (from the Terraform Registry or a Git repository), making it easy to share and standardize infrastructure patterns across teams or projects. By using modules, you make your code more readable, maintainable, and scalable.
|
Modules can be local (within your project) or remote (from the Terraform Registry or a Git repository), making it easy to share and standardize infrastructure patterns across teams or projects. By using modules, you make your code more readable, maintainable, and scalable.
|
||||||
|
|
||||||
### Terraform Code
|
---
|
||||||
|
## Transform Project into Module
|
||||||
|
|
||||||
We will now transform the Terraform code above by creating our own module called `pve_vm
|
We will now transform the Terraform code from the [previous project]({{< ref "post/3-terraform-create-vm-proxmox" >}}) by creating our own module called `pve_vm`.
|
||||||
|
|
||||||
> 📌 Reminder, you can find all the code I have written in my [Homelab repo](https://git.vezpi.me/Vezpi/Homelab/), the following code is located [here](https://git.vezpi.me/Vezpi/Homelab/src/commit/22f64034175a6a4642a2c7b6656688f16ece5ba1/terraform/projects/simple-vm). Don't forget to match your variables with your environment!
|
> 📌 Reminder, you can find all the code I have written in my [Homelab repo](https://git.vezpi.me/Vezpi/Homelab/), the following code is located [here](https://git.vezpi.me/Vezpi/Homelab/src/commit/22f64034175a6a4642a2c7b6656688f16ece5ba1/terraform/projects/simple-vm). Don't forget to match your variables with your environment!
|
||||||
#### Code Structure
|
|
||||||
|
|
||||||
|
### Code Structure
|
||||||
|
|
||||||
|
Our module will live next to our project, in another folder:
|
||||||
```plaintext
|
```plaintext
|
||||||
terraform
|
terraform
|
||||||
|-- modules
|
|-- modules
|
||||||
@@ -39,5 +45,10 @@ terraform
|
|||||||
`-- variables.tf
|
`-- variables.tf
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Module
|
### Module
|
||||||
|
|
||||||
|
The module `pve_vm` will be decomposed in 3 files:
|
||||||
|
- **main**: The core logic
|
||||||
|
- **provider**: The providers needed to function
|
||||||
|
- **variables**: The variables of the module
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user