template.yaml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. ---
  2. kind: terraform
  3. metadata:
  4. icon:
  5. provider: selfh
  6. id: netbox
  7. name: NetBox Virtual Machine
  8. description: >
  9. Register a virtual machine in NetBox with cluster and site association.
  10. Defines VM metadata including name, cluster, site, host device, and resource allocation.
  11. Project: https://netboxlabs.com/
  12. Documentation: https://registry.terraform.io/providers/e-breuninger/netbox/latest/docs/resources/virtual_machine
  13. version: 5.0.0
  14. author: Christian Lempa
  15. date: '2025-12-02'
  16. schema: "1.2"
  17. spec:
  18. general:
  19. vars:
  20. resource_name:
  21. default: vm
  22. vm:
  23. title: Virtual Machine Configuration
  24. vars:
  25. vm_name:
  26. type: str
  27. description: Virtual machine name
  28. required: true
  29. default: srv-prod-1
  30. cluster_ref:
  31. type: str
  32. description: Cluster resource name
  33. required: true
  34. default: pve_prod_1
  35. status:
  36. type: enum
  37. description: VM status
  38. options:
  39. - active
  40. - planned
  41. - staged
  42. - offline
  43. - decommissioning
  44. default: active
  45. site:
  46. title: Site Assignment
  47. vars:
  48. site_ref:
  49. type: str
  50. description: Site data source name (leave empty to skip)
  51. device:
  52. title: Host Device
  53. vars:
  54. device_ref:
  55. type: str
  56. description: Device resource name for host assignment (leave empty to skip)
  57. ipam:
  58. title: IP Address Management
  59. toggle: ipam_enabled
  60. vars:
  61. ipam_enabled:
  62. type: bool
  63. description: Enable IP address assignment
  64. default: false
  65. interface_name:
  66. type: str
  67. description: Network interface name
  68. default: eth0
  69. required: true
  70. primary_ip4:
  71. type: str
  72. description: Primary IPv4 address resource name
  73. required: true
  74. dns_name:
  75. type: str
  76. description: DNS name for the IP address (leave empty to skip)
  77. resources:
  78. title: Resource Allocation
  79. toggle: resources_enabled
  80. vars:
  81. resources_enabled:
  82. type: bool
  83. description: Specify resource allocation
  84. default: false
  85. vcpus:
  86. type: int
  87. description: Number of virtual CPUs
  88. default: 2
  89. memory_mb:
  90. type: int
  91. description: Memory allocation in MB
  92. default: 4096
  93. disk_gb:
  94. type: int
  95. description: Disk size in GB
  96. default: 50
  97. description:
  98. title: Description
  99. toggle: description_enabled
  100. vars:
  101. description_enabled:
  102. type: bool
  103. description: Add VM description
  104. default: false
  105. description_text:
  106. type: str
  107. description: VM description
  108. default: Managed by Terraform
  109. depends_on:
  110. title: Dependencies
  111. toggle: depends_on_enabled
  112. vars:
  113. depends_on_enabled:
  114. description: Enable resource dependencies
  115. type: bool
  116. default: false
  117. dependencies:
  118. description: Comma-separated list of resource dependencies
  119. type: str
  120. default: ""
  121. lifecycle:
  122. title: Lifecycle
  123. toggle: lifecycle_enabled
  124. vars:
  125. lifecycle_enabled:
  126. description: Enable lifecycle rules
  127. type: bool
  128. default: false
  129. prevent_destroy:
  130. description: Prevent resource destruction
  131. type: bool
  132. default: false
  133. create_before_destroy:
  134. description: Create replacement before destroying
  135. type: bool
  136. default: false
  137. ignore_changes:
  138. description: Comma-separated list of attributes to ignore changes for
  139. type: str
  140. default: ""