Compare commits
3 commits
f2acafd737
...
58dce491bb
| Author | SHA1 | Date | |
|---|---|---|---|
| 58dce491bb | |||
| 814a1cf5e3 | |||
| 0e37a64198 |
9 changed files with 62 additions and 55 deletions
|
|
@ -16,7 +16,6 @@ machine:
|
||||||
kubelet:
|
kubelet:
|
||||||
extraArgs:
|
extraArgs:
|
||||||
pod-max-pids: 1000
|
pod-max-pids: 1000
|
||||||
rotate-server-certificates: true
|
|
||||||
extraConfig:
|
extraConfig:
|
||||||
imageGCHighThresholdPercent: 75
|
imageGCHighThresholdPercent: 75
|
||||||
imageGCLowThresholdPercent: 70
|
imageGCLowThresholdPercent: 70
|
||||||
|
|
@ -38,7 +37,6 @@ cluster:
|
||||||
disabled: true
|
disabled: true
|
||||||
extraManifests:
|
extraManifests:
|
||||||
- https://github.com/kubernetes-sigs/gateway-api/releases/download/v${gateway-api_version}/standard-install.yaml
|
- https://github.com/kubernetes-sigs/gateway-api/releases/download/v${gateway-api_version}/standard-install.yaml
|
||||||
- https://raw.githubusercontent.com/alex1989hu/kubelet-serving-cert-approver/refs/heads/main/deploy/standalone-install.yaml
|
|
||||||
inlineManifests:
|
inlineManifests:
|
||||||
- name: cilium-bootstrap
|
- name: cilium-bootstrap
|
||||||
contents: |
|
contents: |
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ machine:
|
||||||
kubelet:
|
kubelet:
|
||||||
extraArgs:
|
extraArgs:
|
||||||
pod-max-pids: 1000
|
pod-max-pids: 1000
|
||||||
rotate-server-certificates: true
|
|
||||||
extraConfig:
|
extraConfig:
|
||||||
imageGCHighThresholdPercent: 75
|
imageGCHighThresholdPercent: 75
|
||||||
imageGCLowThresholdPercent: 70
|
imageGCLowThresholdPercent: 70
|
||||||
|
|
@ -51,7 +50,6 @@ cluster:
|
||||||
disabled: true
|
disabled: true
|
||||||
extraManifests:
|
extraManifests:
|
||||||
- https://github.com/kubernetes-sigs/gateway-api/releases/download/v${gateway-api_version}/standard-install.yaml
|
- https://github.com/kubernetes-sigs/gateway-api/releases/download/v${gateway-api_version}/standard-install.yaml
|
||||||
- https://raw.githubusercontent.com/alex1989hu/kubelet-serving-cert-approver/refs/heads/main/deploy/standalone-install.yaml
|
|
||||||
inlineManifests:
|
inlineManifests:
|
||||||
- name: cilium-bootstrap
|
- name: cilium-bootstrap
|
||||||
contents: |
|
contents: |
|
||||||
|
|
|
||||||
|
|
@ -8,20 +8,21 @@ terraform {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "proxmox_virtual_environment_vm" "talos-node" {
|
resource "proxmox_virtual_environment_vm" "talos-node" {
|
||||||
vm_id = var.node.id
|
vm_id = var.node.id
|
||||||
name = var.node.name
|
name = var.node.name
|
||||||
node_name = var.node.proxmox_node
|
node_name = var.node.proxmox_node
|
||||||
tags = ["tofu"]
|
tags = ["tofu"]
|
||||||
|
bios = "ovmf"
|
||||||
|
|
||||||
clone {
|
clone {
|
||||||
vm_id = 10000 + tonumber(replace(var.node.talos_version, ".", ""))
|
vm_id = 10000 + tonumber(replace(var.node.talos_version, ".", ""))
|
||||||
retries = 3
|
retries = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
cpu {
|
cpu {
|
||||||
cores = var.node.cpu
|
cores = var.node.cpu
|
||||||
sockets = 1
|
sockets = 1
|
||||||
type = "x86-64-v2-AES"
|
type = "host"
|
||||||
}
|
}
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
@ -46,17 +47,17 @@ resource "proxmox_virtual_environment_vm" "talos-node" {
|
||||||
}
|
}
|
||||||
|
|
||||||
network_device {
|
network_device {
|
||||||
bridge = "vmbr1"
|
bridge = "vmbr1"
|
||||||
model = "virtio"
|
model = "virtio"
|
||||||
mtu = 1500
|
mtu = 1500
|
||||||
}
|
}
|
||||||
|
|
||||||
dynamic "network_device" {
|
dynamic "network_device" {
|
||||||
for_each = var.node.type == "worker" ? [1] : []
|
for_each = var.node.type == "worker" ? [1] : []
|
||||||
content {
|
content {
|
||||||
bridge = "vmbr2"
|
bridge = "vmbr2"
|
||||||
model = "virtio"
|
model = "virtio"
|
||||||
mtu = 9000
|
mtu = 9000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,8 @@ provider "registry.opentofu.org/bpg/proxmox" {
|
||||||
}
|
}
|
||||||
|
|
||||||
provider "registry.opentofu.org/hashicorp/http" {
|
provider "registry.opentofu.org/hashicorp/http" {
|
||||||
version = "3.5.0"
|
version = "3.5.0"
|
||||||
|
constraints = "3.5.0"
|
||||||
hashes = [
|
hashes = [
|
||||||
"h1:eClUBisXme48lqiUl3U2+H2a2mzDawS9biqfkd9synw=",
|
"h1:eClUBisXme48lqiUl3U2+H2a2mzDawS9biqfkd9synw=",
|
||||||
"zh:0a2b33494eec6a91a183629cf217e073be063624c5d3f70870456ddb478308e9",
|
"zh:0a2b33494eec6a91a183629cf217e073be063624c5d3f70870456ddb478308e9",
|
||||||
25
pve01.wheatley.in/templates/main.tf
Normal file
25
pve01.wheatley.in/templates/main.tf
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
terraform {
|
||||||
|
backend "s3" {
|
||||||
|
bucket = "13225-wheatley-states"
|
||||||
|
key = "pve01-templates.tfstate"
|
||||||
|
region = "main"
|
||||||
|
skip_credentials_validation = true
|
||||||
|
skip_metadata_api_check = true
|
||||||
|
skip_region_validation = true
|
||||||
|
force_path_style = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "proxmox" {
|
||||||
|
endpoint = var.proxmox_endpoint
|
||||||
|
api_token = var.proxmox_api_token
|
||||||
|
ssh {
|
||||||
|
agent = true
|
||||||
|
username = "tofu"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module "talos" {
|
||||||
|
source = "./talos"
|
||||||
|
talos_versions = ["1.11.5"]
|
||||||
|
}
|
||||||
|
|
@ -1,29 +1,12 @@
|
||||||
terraform {
|
terraform {
|
||||||
backend "s3" {
|
required_providers {
|
||||||
bucket = "13225-wheatley-states"
|
proxmox = {
|
||||||
key = "pve01-templates.tfstate"
|
source = "bpg/proxmox"
|
||||||
region = "main"
|
version = "0.86.0"
|
||||||
skip_credentials_validation = true
|
}
|
||||||
skip_metadata_api_check = true
|
|
||||||
skip_region_validation = true
|
|
||||||
force_path_style = true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
provider "proxmox" {
|
|
||||||
endpoint = var.proxmox_endpoint
|
|
||||||
api_token = var.proxmox_api_token
|
|
||||||
ssh {
|
|
||||||
agent = true
|
|
||||||
username = "root"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
locals {
|
|
||||||
talos_versions = ["1.11.5"]
|
|
||||||
}
|
|
||||||
|
|
||||||
data "http" "schematic" {
|
data "http" "schematic" {
|
||||||
url = "https://factory.talos.dev/schematics"
|
url = "https://factory.talos.dev/schematics"
|
||||||
method = "POST"
|
method = "POST"
|
||||||
|
|
@ -40,21 +23,20 @@ locals {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "proxmox_virtual_environment_download_file" "talos-image" {
|
resource "proxmox_virtual_environment_download_file" "talos-image" {
|
||||||
for_each = toset(local.talos_versions)
|
for_each = toset(var.talos_versions)
|
||||||
|
|
||||||
node_name = "pve01"
|
node_name = "pve01"
|
||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
content_type = "iso"
|
content_type = "iso"
|
||||||
|
|
||||||
|
|
||||||
url = "https://factory.talos.dev/image/${local.schematic_id}/v${each.value}/nocloud-amd64-secureboot.raw.gz"
|
url = "https://factory.talos.dev/image/${local.schematic_id}/v${each.value}/nocloud-amd64-secureboot.iso"
|
||||||
file_name = "talos-${each.value}-nocloud-amd64-secureboot.img"
|
file_name = "talos-${each.value}-nocloud-amd64-secureboot.iso"
|
||||||
decompression_algorithm = "gz"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "proxmox_virtual_environment_vm" "talos-template" {
|
resource "proxmox_virtual_environment_vm" "talos-template" {
|
||||||
depends_on = [proxmox_virtual_environment_download_file.talos-image]
|
depends_on = [proxmox_virtual_environment_download_file.talos-image]
|
||||||
for_each = toset(local.talos_versions)
|
for_each = toset(var.talos_versions)
|
||||||
|
|
||||||
template = true
|
template = true
|
||||||
vm_id = 10000 + tonumber(replace(each.value, ".", ""))
|
vm_id = 10000 + tonumber(replace(each.value, ".", ""))
|
||||||
|
|
@ -73,7 +55,7 @@ resource "proxmox_virtual_environment_vm" "talos-template" {
|
||||||
cpu {
|
cpu {
|
||||||
cores = 2
|
cores = 2
|
||||||
sockets = 1
|
sockets = 1
|
||||||
type = "x86-64-v2-AES"
|
type = "host"
|
||||||
}
|
}
|
||||||
memory {
|
memory {
|
||||||
dedicated = 2048
|
dedicated = 2048
|
||||||
|
|
@ -93,7 +75,4 @@ resource "proxmox_virtual_environment_vm" "talos-template" {
|
||||||
datastore_id = local.storagepool
|
datastore_id = local.storagepool
|
||||||
version = "v2.0"
|
version = "v2.0"
|
||||||
}
|
}
|
||||||
network_device {
|
|
||||||
bridge = "vmbr1"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
variable "proxmox_endpoint" {
|
variable talos_versions {
|
||||||
description = "Proxmox API endpoint"
|
description = "List of Talos versions to create templates for"
|
||||||
type = string
|
type = list(string)
|
||||||
}
|
default = []
|
||||||
variable "proxmox_api_token" {
|
|
||||||
description = "Proxmox API token"
|
|
||||||
type = string
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
8
pve01.wheatley.in/templates/variables.tf
Normal file
8
pve01.wheatley.in/templates/variables.tf
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
variable "proxmox_endpoint" {
|
||||||
|
description = "Proxmox API endpoint"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
variable "proxmox_api_token" {
|
||||||
|
description = "Proxmox API token"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue