Compare commits
2 commits
649f1ba598
...
6490070e48
| Author | SHA1 | Date | |
|---|---|---|---|
| 6490070e48 | |||
| c8c4c8355b |
10 changed files with 59 additions and 4 deletions
57
README.md
57
README.md
|
|
@ -1,2 +1,57 @@
|
||||||
# infrastructure
|
# Hobbyrack Infrastructure
|
||||||
|
|
||||||
|
This repository contains the infrastructure-as-code configuration for managing Wheatley, a homelab environment within Hobbyrack. The current focus is on deploying a Kubernetes clusters with Talos and Cilium on Proxmox VE using OpenTofu.
|
||||||
|
|
||||||
|
## Contents
|
||||||
|
|
||||||
|
- **modules/**: Contains reusable modules for cluster bootstrap and node provisioning.
|
||||||
|
- **talos-bootstrap/**: Bootstraps the Talos cluster, including templates for machine configuration and Cilium installation.
|
||||||
|
- **talos-node/**: Provisions individual Talos node VMs on Proxmox.
|
||||||
|
- **pve01.wheatley.in/**: Configuration specific to the Proxmox VE host `pve01.wheatley.in`.
|
||||||
|
- **k8s-wheatley/**: Provisions the `k8s-wheatley` Kubernetes cluster.
|
||||||
|
- **templates/**: Provisions VM templates on the PVE host.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [OpenTofu](https://opentofu.org/) >= 1.0
|
||||||
|
- Access to a Proxmox VE environment
|
||||||
|
- (Optional) talosctl for managing Talos nodes
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. **Initialize OpenTofu**
|
||||||
|
```sh
|
||||||
|
tofu init
|
||||||
|
```
|
||||||
|
2. **Review the execution plan**
|
||||||
|
```sh
|
||||||
|
tofu plan
|
||||||
|
```
|
||||||
|
3. **Apply the infrastructure**
|
||||||
|
```sh
|
||||||
|
tofu apply
|
||||||
|
```
|
||||||
|
|
||||||
|
> Adjust variables in `variables.tf` or provide a `terraform.tfvars` file for your environment.
|
||||||
|
|
||||||
|
## Modules
|
||||||
|
|
||||||
|
- **talos-bootstrap**: Bootstraps the cluster, including generating machine configurations and Cilium manifests.
|
||||||
|
- **talos-node**: Provisions control-plane and worker nodes.
|
||||||
|
|
||||||
|
## Templates
|
||||||
|
|
||||||
|
- Machine configurations for Talos control-plane and worker nodes
|
||||||
|
- Cilium installation manifest
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This repository is licensed under the MIT License. See the `LICENSE` file for details.
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
For questions or support, open an issue or contact via GitHub.
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ locals {
|
||||||
}
|
}
|
||||||
|
|
||||||
module "controlplanes" {
|
module "controlplanes" {
|
||||||
source = "./modules/talos-node"
|
source = "../../modules/talos-node"
|
||||||
for_each = { for node in local.controlplanes.nodes : node.name => node }
|
for_each = { for node in local.controlplanes.nodes : node.name => node }
|
||||||
|
|
||||||
node = {
|
node = {
|
||||||
|
|
@ -116,7 +116,7 @@ module "controlplanes" {
|
||||||
}
|
}
|
||||||
|
|
||||||
module "workers" {
|
module "workers" {
|
||||||
source = "./modules/talos-node"
|
source = "../../modules/talos-node"
|
||||||
for_each = { for node in local.workers.nodes : node.name => node }
|
for_each = { for node in local.workers.nodes : node.name => node }
|
||||||
|
|
||||||
node = {
|
node = {
|
||||||
|
|
@ -145,7 +145,7 @@ module "talos-bootstrap" {
|
||||||
module.workers
|
module.workers
|
||||||
]
|
]
|
||||||
|
|
||||||
source = "./modules/talos-bootstrap"
|
source = "../../modules/talos-bootstrap"
|
||||||
|
|
||||||
node_config = {
|
node_config = {
|
||||||
ipv4_gateway = local.ipv4_gateway
|
ipv4_gateway = local.ipv4_gateway
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue