This repository hosts the IaC (Infrastructure as Code) configuration for my homelab.
The Homelab is backed by Proxmox VE hypervisor nodes with VMs bootstrapped using OpenTofu/Terraform.
Most of the services run on Talos flavoured Kubernetes, though I'm also running a TrueNAS VM for storage and Home Assistant VM for home automation.
To organise all the configuration, I've opted for an approach using Kustomized Helm with Argo CD which I've explained in more detail in this article.
I journal my homelab journey over at my self-hosted blog.
A Terraform / OpenTofu Provider that adds support for Proxmox Virtual Environment.
Welcome to OpenTofu 1.9! This version brings you a host of new features like provider iteration, the -exclude flag and more. If you are coming from a previous OpenTofu or Terraform version you can read the details about the new features here »
Previously named OpenTF, OpenTofu is a fork of Terraform that is open-source, community-driven, and managed by the Linux Foundation.
Find security vulnerabilities, compliance issues, and infrastructure misconfigurations early in the development cycle of your infrastructure-as-code with KICS by Checkmarx.
KICS stands for Keeping Infrastructure as Code Secure, it is open source and is a must-have for any cloud native project.
Providers are a logical abstraction of an upstream API. They are responsible for understanding API interactions and exposing resources.
Features and Compatibility
- Source image can be a clone of a VM or local vmx, ovf, ova file. This provider uses ovftool, so there should be a wide compatibility.
- Supports adding your VM to Resource Pools to partition CPU and memory usage from other VMs on your ESXi host.
- Terraform will Create, Destroy, Update & Import Resource Pools.
- Terraform will Create, Destroy, Update & Import Guest VMs.
- Terraform will Create, Destroy, Update & Import Extra Storage for Guests.
- Terraform will Create, Destroy, Update & Import vSwitches.
- Terraform will Create, Destroy, Update & Import Port Groups.
The official Terraform provider for VMware vCloud Director
- Documentation of the latest binary release available at https://www.terraform.io/docs/providers/vcd/index.html
- This project is using go-vcloud-director Golang SDK for making API calls to vCD
- Join through VMware {code} to Chat in #vcd-terraform-dev channel
The VMware Cloud Director provider is used to interact with the resources supported by VMware Cloud Director. The provider needs to be configured with the proper credentials before it can be used.
Use the navigation to the left to read about the available resources. Please refer to CHANGELOG.md to track feature additions.
The OpenTelekomCloud provider is used to interact with the many resources supported by OpenTelekomCloud. The provider needs to be configured with the proper credentials before it can be used.
OpenNebula provider for Terraform.
- Leverages OpenNebula's XML/RPC API
- Tested for versions 5.X
This is based on a project started by Runtastic, and has been enhanced by BlackBerry to allow for definition of these resource types:
- Virtual Machines
- Images
- VNET Reservations
- Security Groups
As well as data sources for:
- Images
- VNETs
- Security Groups
An Ansible dynamic inventory script to process Terraform state and return Ansible host data from Terraform Provider for Ansible host resources. See the Terraform Provider for it's own installation and use.
Infrastructure as Code (IaC) is changing the way that we’re doing things. Some people think that it’s the motorway that we have to follow and be aligned with business, as a resume they want us to be agile.
The arrival of tools such as Ansible, Puppet, SaltStack, and Chef, have enabled sysadmins to maintain modular, automatable infrastructure. This time I would like to introduce the Terraform tool.
Terraform is a provisioning declarative tool that is based on the Infrastructure as Code paradigm. Terraform is a multipurpose composition tool: it composes multiple tiers (SaaS/PaaS/IaaS).
Terraform is not a cloud agnostic tool, but in combination with OpenNebula, it can be amazing. By taking advantage of the template concept it will allow us to deploy vm’s agnostically in different cloud providers, such as AWS, Azure or on premise cloud infrastructure.
A Terraform provider serving as an interop layer for an Ansible dynamic inventory script.
Read the introductory blog post for an explanation of the design motivations behind this provider.
When working with Ansible and Terraform, I felt there was a gap in the workflow, so I built a Terraform Provider for Ansible. It integrates with a Terraform Inventory script to connect machines in your Terraform state to Ansible. This article explains my thought process in designing this integration.
