Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stuttgart-things/proxmox-vm
terraform module for creating proxmox vms
https://github.com/stuttgart-things/proxmox-vm
module proxmox pve terraform virtual-machine
Last synced: 2 days ago
JSON representation
terraform module for creating proxmox vms
- Host: GitHub
- URL: https://github.com/stuttgart-things/proxmox-vm
- Owner: stuttgart-things
- Created: 2023-03-06T16:44:06.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-05T19:03:40.000Z (5 months ago)
- Last Synced: 2024-06-05T21:12:54.246Z (5 months ago)
- Topics: module, proxmox, pve, terraform, virtual-machine
- Language: HCL
- Homepage:
- Size: 74.2 KB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# stuttgart-things/proxmox-vm
Terraform module for creating proxmox vms
## EXAMPLE USAGE TERRAFORM
CREATE PVE VM
```hcl
# CALL MODULE - main.tf
# main.tf
module "proxmox-vm" {
source = "git::https://github.com/stuttgart-things/proxmox-vm.git?ref=v2.9.14-1.5.5"
pve_api_url = var.pve_api_url
pve_api_user = var.pve_api_user
pve_api_password = var.pve_api_password
pve_api_tls_verify = var.pve_api_tls_verifypve_cluster_node = "sthings-pve1"
pve_datastore = "datastore"
pve_folder_path = "stuttgart-things"
pve_network = "vmbr101"
vm_count = 1
vm_name = "vm-test-name"
vm_notes = "vm-info"
vm_template = "ubuntu22"
vm_num_cpus = "4"
vm_memory = "4096"
vm_disk_size = "32G"
vm_ssh_user = var.vm_ssh_user
vm_ssh_password = var.vm_ssh_password
}output "ip" {
value = module.proxmox-vm.ip
}output "mac" {
value = module.proxmox-vm.mac
}output "id" {
value = module.proxmox-vm.id
}variable "pve_api_url" {
description = "url of proxmox api. Example: https://server-example.sva.de:8006/api2/json"
}
variable "pve_api_user" {
description = "username of proxmox api user"
}
variable "pve_api_password" {
description = "password of proxmox api user"
}
variable "vm_ssh_user" {
description = "desired username for ssh connection"
}
variable "vm_ssh_password" {
description = "desired password for ssh connection"
}
variable "pve_api_tls_verify" {
description = "proxmox API disable check if cert is valid"
}
``````
# VARIABLES -tfvars
pve_api_url=""
pve_api_user=""
pve_api_password=""
pve_api_tls_verify = true
vm_ssh_user=""
vm_ssh_password=""
```EXECUTION
```bash
terraform init
terraform apply
terraform destroy
```## EXAMPLE USAGE CROSSPLANE
TFVARS (SECRETS)
```hcl
pve_api_url=""
pve_api_user=""
pve_api_password=""
vm_ssh_user=""
vm_ssh_password=""
``````bash
kubectl create secret generic pve-tfvars --from-file=terraform.tfvars
```WORKSPACE
```yaml
---
apiVersion: tf.upbound.io/v1beta1
kind: Workspace
metadata:
name: appserver
annotations:
crossplane.io/external-name: pve-vm
spec:
providerConfigRef:
name: terraform-default
forProvider:
source: Remote
module: git::https://github.com/stuttgart-things/proxmox-vm.git?ref=v2.9.14-1.5.5
vars:
- key: vm_count
value: "1"
- key: vm_num_cpus
value: "4"
- key: vm_memory
value: "4096"
- key: vm_name
value: appserver
- key: vm_template
value: ubuntu22
- key: pve_network
value: vmbr103
- key: pve_datastore
value: v3700
- key: vm_disk_size
value: 128G
- key: pve_folder_path
value: stuttgart-things
- key: pve_cluster_node
value: sthings-pve1
varFiles:
- source: SecretKey
secretKeyRef:
namespace: default
name: pve-tfvars
key: terraform.tfvars
writeConnectionSecretToRef:
namespace: default
name: terraform-workspace-appserver
```## OUTPUTS
- `ip` - ip address of created vm
- `mac` - mac address of created vm
- `id` - proxmox id of created vmLicense
--------BSD
Author Information
------------------Marcel Zapf; 09/2021; Stuttgart-Things