History rewrite
This commit is contained in:
84
builds/linux/centos/9-stream/data/ks.pkrtpl.hcl
Normal file
84
builds/linux/centos/9-stream/data/ks.pkrtpl.hcl
Normal file
@@ -0,0 +1,84 @@
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# CentOS Stream 9
|
||||
|
||||
### Installs from the first attached CD-ROM/DVD on the system.
|
||||
cdrom
|
||||
|
||||
### Performs the kickstart installation in text mode.
|
||||
### By default, kickstart installations are performed in graphical mode.
|
||||
text
|
||||
|
||||
### Accepts the End User License Agreement.
|
||||
eula --agreed
|
||||
|
||||
### Sets the language to use during installation and the default language to use on the installed system.
|
||||
lang ${vm_os_language}
|
||||
|
||||
### Sets the default keyboard type for the system.
|
||||
keyboard ${vm_os_keyboard}
|
||||
|
||||
### Configure network information for target system and activate network devices in the installer environment (optional)
|
||||
### --onboot enable device at a boot time
|
||||
### --device device to be activated and / or configured with the network command
|
||||
### --bootproto method to obtain networking configuration for device (default dhcp)
|
||||
### --noipv6 disable IPv6 on this device
|
||||
###
|
||||
### network --bootproto=static --ip=172.16.11.200 --netmask=255.255.255.0 --gateway=172.16.11.200 --nameserver=172.16.11.4 --hostname centos-linux-8
|
||||
network --bootproto=dhcp
|
||||
|
||||
### Lock the root account.
|
||||
rootpw --lock
|
||||
|
||||
### The selected profile will restrict root login.
|
||||
### Add a user that can login and escalate privileges.
|
||||
user --name=${build_username} --iscrypted --password=${build_password_encrypted} --groups=wheel
|
||||
|
||||
### Configure firewall settings for the system.
|
||||
### --enabled reject incoming connections that are not in response to outbound requests
|
||||
### --ssh allow sshd service through the firewall
|
||||
firewall --enabled --ssh
|
||||
|
||||
### Sets up the authentication options for the system.
|
||||
### The SSDD profile sets sha512 to hash passwords. Passwords are shadowed by default
|
||||
### See the manual page for authselect-profile for a complete list of possible options.
|
||||
authselect select sssd
|
||||
|
||||
### Sets the state of SELinux on the installed system.
|
||||
### Defaults to enforcing.
|
||||
selinux --enforcing
|
||||
|
||||
### Sets the system time zone.
|
||||
timezone ${vm_os_timezone}
|
||||
|
||||
### Partitioning
|
||||
${storage}
|
||||
|
||||
### Modifies the default set of services that will run under the default runlevel.
|
||||
services --enabled=NetworkManager,sshd
|
||||
|
||||
### Do not configure X on the installed system.
|
||||
skipx
|
||||
|
||||
### Packages selection.
|
||||
%packages --ignoremissing --excludedocs
|
||||
@core
|
||||
-iwl*firmware
|
||||
%end
|
||||
|
||||
### Post-installation commands.
|
||||
%post
|
||||
dnf makecache
|
||||
dnf install epel-release -y
|
||||
dnf makecache
|
||||
dnf install -y sudo qemu-guest-tools
|
||||
echo "${build_username} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/${build_username}
|
||||
sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
|
||||
%end
|
||||
|
||||
### Reboot after the installation is complete.
|
||||
### --eject attempt to eject the media before rebooting.
|
||||
reboot --eject
|
||||
66
builds/linux/centos/9-stream/data/storage.pkrtpl.hcl
Normal file
66
builds/linux/centos/9-stream/data/storage.pkrtpl.hcl
Normal file
@@ -0,0 +1,66 @@
|
||||
### Sets how the boot loader should be installed.
|
||||
bootloader --location=mbr
|
||||
|
||||
### Initialize any invalid partition tables found on disks.
|
||||
zerombr
|
||||
|
||||
### Removes partitions from the system, prior to creation of new partitions.
|
||||
### By default, no partitions are removed.
|
||||
### --all Erases all partitions from the system
|
||||
### --initlabel Initializes a disk (or disks) by creating a default disk label for all disks in their respective architecture.
|
||||
clearpart --all --initlabel
|
||||
|
||||
### Modify partition sizes for the virtual machine hardware.
|
||||
### Create primary system partitions.
|
||||
%{~ if length(partitions) == 1 && partitions[0].name == "autopart" ~}
|
||||
%{~ if partitions[0].format.fstype == "lvm" ~}
|
||||
autopart --type=lvm
|
||||
%{ endif }
|
||||
%{~ if partitions[0].format.fstype == "simple" ~}
|
||||
autopart --type=plain
|
||||
%{ endif }
|
||||
%{~ if partitions[0].format.fstype == "" ~}
|
||||
autopart --type=plain
|
||||
%{ endif }
|
||||
%{ else }
|
||||
%{~ for partition in partitions ~}
|
||||
%{~ if partition.format.fstype == "swap" ~}
|
||||
part swap --size=${partition.size}
|
||||
|
||||
%{~ endif ~}
|
||||
%{~ if partition.mount.path == "/boot/efi" ~}
|
||||
part ${partition.mount.path} --fstype vfat --size=${partition.size} --label=${partition.format.label}
|
||||
|
||||
%{~ endif ~}
|
||||
%{~ if partition.mount.path != "" ~}
|
||||
part ${partition.mount.path} --fstype ${partition.format.fstype} --size=${partition.size} --label=${partition.format.label} %{~ if partition.mount.options != "" ~}--fsoptions="${partition.mount.options}"%{~ endif ~}
|
||||
|
||||
%{~ endif ~}
|
||||
%{~ if partition.volume_group != "" ~}
|
||||
%{~ if partition.size == -1 ~}
|
||||
part pv.${partition.volume_group} --size=100 --grow
|
||||
|
||||
%{~ else ~}
|
||||
part pv.${partition.volume_group} --size=${partition.size}
|
||||
|
||||
%{~ endif ~}
|
||||
### Create a logical volume management (LVM) group.
|
||||
### Modify logical volume sizes for the virtual machine hardware.
|
||||
%{~ for index, volume_group in lvm ~}
|
||||
%{~ if partition.volume_group != "" ~}
|
||||
volgroup ${volume_group.name} --pesize=4096 pv.${partition.volume_group}
|
||||
|
||||
%{~ endif ~}
|
||||
### Create logical volumes.
|
||||
%{~ for partition in volume_group.partitions ~}
|
||||
%{~ if partition.format.fstype == "swap" ~}
|
||||
logvol swap --fstype ${partition.format.fstype} --name=${partition.name} --vgname=${volume_group.name} --size=${partition.size} --label=${partition.format.label}
|
||||
%{~ else ~}
|
||||
logvol ${partition.mount.path} %{ if partition.format.fstype == "fat32" } --fstype vfat %{ else } --fstype ${partition.format.fstype} %{ endif } %{ if partition.size != -1 } --size=${partition.size} %{ else } --size=100 --grow %{ endif } --name=${partition.name} --vgname=${volume_group.name} --label=${partition.format.label} %{ if partition.mount.options != "" ~} --fsoptions="${partition.mount.options}" %{~ endif ~}
|
||||
|
||||
%{~ endif ~}
|
||||
%{~ endfor ~}
|
||||
%{~ endfor ~}
|
||||
%{~ endif ~}
|
||||
%{~ endfor ~}
|
||||
%{~ endif }
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
DESCRIPTION:
|
||||
Ubuntu Server 22.04 LTS variables used by the Packer Plugin for Proxmox (proxmox-iso).
|
||||
*/
|
||||
|
||||
// Guest Operating System Metadata
|
||||
vm_os_language = "en_US"
|
||||
vm_os_keyboard = "us"
|
||||
vm_os_timezone = "UTC"
|
||||
vm_os_family = "linux"
|
||||
vm_os_name = "centos-stream"
|
||||
vm_os_version = "9"
|
||||
|
||||
// Virtual Machine Guest Operating System Setting
|
||||
vm_os_type = "l26"
|
||||
|
||||
// Virtual Machine Hardware Settings
|
||||
vm_bios = "seabios"
|
||||
vm_cpu_count = 1
|
||||
vm_cpu_sockets = 1
|
||||
vm_cpu_type = "x86-64-v2-AES"
|
||||
vm_mem_size = 2048
|
||||
vm_disk_type = "virtio"
|
||||
vm_disk_size = "32G"
|
||||
vm_disk_format = "raw"
|
||||
vm_storage_pool = "vm-data"
|
||||
vm_disk_controller_type = "virtio-scsi-pci"
|
||||
vm_network_card_model = "virtio"
|
||||
vm_bridge_interface = "vmbr0"
|
||||
vm_vlan_tag = "102"
|
||||
|
||||
// Removable Media Settings
|
||||
iso_path = "iso"
|
||||
iso_file = "CentOS-Stream-9-latest-x86_64-dvd1.iso"
|
||||
iso_checksum = "file:https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/SHA256SUM"
|
||||
|
||||
// Boot Settings
|
||||
vm_boot = "order=virtio0;ide2;net0"
|
||||
vm_boot_wait = "5s"
|
||||
|
||||
// EFI Settings
|
||||
vm_firmware_path = "./OVMF.fd"
|
||||
vm_efi_storage_pool = "vm-data"
|
||||
vm_efi_pre_enrolled_keys = false
|
||||
vm_efi_type = "4m"
|
||||
197
builds/linux/centos/9-stream/linux-centos-stream.pkr.hcl
Normal file
197
builds/linux/centos/9-stream/linux-centos-stream.pkr.hcl
Normal file
@@ -0,0 +1,197 @@
|
||||
/*
|
||||
DESCRIPTION:
|
||||
Debian 11 template using the Packer Builder for Proxmox (proxmox-iso).
|
||||
*/
|
||||
|
||||
// BLOCK: packer
|
||||
// The Packer configuration.
|
||||
|
||||
packer {
|
||||
required_version = ">= 1.9.1"
|
||||
required_plugins {
|
||||
ansible = {
|
||||
source = "github.com/hashicorp/ansible"
|
||||
version = "~> 1"
|
||||
}
|
||||
git = {
|
||||
version = ">= 0.4.2"
|
||||
source = "github.com/ethanmdavidson/git"
|
||||
}
|
||||
proxmox = {
|
||||
version = ">= 1.0.6"
|
||||
source = "github.com/hashicorp/proxmox"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// BLOCK: data
|
||||
// Defines the data sources.
|
||||
|
||||
data "git-repository" "cwd" {}
|
||||
|
||||
// BLOCK: locals
|
||||
// Defines the local variables.
|
||||
|
||||
locals {
|
||||
build_by = "Built by: HashiCorp Packer ${packer.version}"
|
||||
build_date = formatdate("DD-MM-YYYY hh:mm ZZZ", "${timestamp()}" )
|
||||
build_version = data.git-repository.cwd.head
|
||||
build_description = "Version: ${local.build_version}\nBuilt on: ${local.build_date}\n${local.build_by}\nCloud-Init: ${var.vm_cloud_init_enable}"
|
||||
vm_disk_type = var.vm_disk_type == "virtio" ? "vda" : "sda"
|
||||
manifest_date = formatdate("YYYY-MM-DD hh:mm:ss", timestamp())
|
||||
manifest_path = "${path.cwd}/manifests/"
|
||||
manifest_output = "${local.manifest_path}${local.manifest_date}.json"
|
||||
data_source_content = {
|
||||
"/ks.cfg" = templatefile("${abspath(path.root)}/data/ks.pkrtpl.hcl", {
|
||||
build_username = var.build_username
|
||||
build_password = var.build_password
|
||||
build_password_encrypted = var.build_password_encrypted
|
||||
vm_disk_type = local.vm_disk_type
|
||||
vm_os_language = var.vm_os_language
|
||||
vm_os_keyboard = var.vm_os_keyboard
|
||||
vm_os_timezone = var.vm_os_timezone
|
||||
common_data_source = var.common_data_source
|
||||
# lvm needs to be here so late commands can access vg names
|
||||
lvm = var.vm_disk_lvm
|
||||
storage = templatefile("${abspath(path.root)}/data/storage.pkrtpl.hcl", {
|
||||
device = var.vm_disk_device
|
||||
swap = var.vm_disk_use_swap
|
||||
partitions = var.vm_disk_partitions
|
||||
lvm = var.vm_disk_lvm
|
||||
vm_bios = var.vm_bios
|
||||
})
|
||||
})
|
||||
}
|
||||
data_source_command = var.common_data_source == "http" ? "inst.ks=http://{{.HTTPIP}}:{{.HTTPPort}}/ks.cfg" : "inst.ks=/cdrom/ks.cfg"
|
||||
vm_name = "${var.vm_os_family}-${var.vm_os_name}-${var.vm_os_version}"
|
||||
vm_bios = var.vm_bios == "ovmf" ? var.vm_firmware_path : null
|
||||
}
|
||||
|
||||
// BLOCK: source
|
||||
// Defines the builder configuration blocks.
|
||||
|
||||
source "proxmox-iso" "linux-centos-stream" {
|
||||
|
||||
// Proxmox Connection Settings and Credentials
|
||||
proxmox_url = "https://${var.proxmox_hostname}:8006/api2/json"
|
||||
username = "${var.proxmox_api_token_id}"
|
||||
token = "${var.proxmox_api_token_secret}"
|
||||
insecure_skip_tls_verify = "${var.proxmox_insecure_connection}"
|
||||
|
||||
// Proxmox Settings
|
||||
node = "${var.proxmox_node}"
|
||||
|
||||
// Virtual Machine Settings
|
||||
vm_name = "${local.vm_name}"
|
||||
bios = "${var.vm_bios}"
|
||||
sockets = "${var.vm_cpu_sockets}"
|
||||
cores = "${var.vm_cpu_count}"
|
||||
cpu_type = "${var.vm_cpu_type}"
|
||||
memory = "${var.vm_mem_size}"
|
||||
os = "${var.vm_os_type}"
|
||||
scsi_controller = "${var.vm_disk_controller_type}"
|
||||
disks {
|
||||
disk_size = "${var.vm_disk_size}"
|
||||
type = "${var.vm_disk_type}"
|
||||
storage_pool = "${var.vm_storage_pool}"
|
||||
format = "${var.vm_disk_format}"
|
||||
}
|
||||
dynamic "efi_config" {
|
||||
for_each = var.vm_bios == "ovmf" ? [1] : []
|
||||
content {
|
||||
efi_storage_pool = var.vm_bios == "ovmf" ? var.vm_efi_storage_pool : null
|
||||
efi_type = var.vm_bios == "ovmf" ? var.vm_efi_type : null
|
||||
pre_enrolled_keys = var.vm_bios == "ovmf" ? var.vm_efi_pre_enrolled_keys : null
|
||||
}
|
||||
}
|
||||
unmount_iso = true
|
||||
ssh_username = "${var.build_username}"
|
||||
ssh_password = "${var.build_password}"
|
||||
ssh_timeout = "${var.timeout}"
|
||||
ssh_port = "22"
|
||||
iso_file = "${var.common_iso_storage}:${var.iso_path}/${var.iso_file}"
|
||||
iso_checksum = "${var.iso_checksum}"
|
||||
qemu_agent = true
|
||||
|
||||
network_adapters {
|
||||
bridge = "${var.vm_bridge_interface}"
|
||||
model = "${var.vm_network_card_model}"
|
||||
vlan_tag = "${var.vm_vlan_tag}"
|
||||
}
|
||||
|
||||
// Removable Media Settings
|
||||
http_content = "${var.common_data_source}" == "http" ? "${local.data_source_content}" : null
|
||||
|
||||
// Boot and Provisioning Settings
|
||||
http_bind_address = var.common_data_source == "http" ? var.common_http_bind_address : null
|
||||
http_port_min = var.common_data_source == "http" ? var.common_http_port_min : null
|
||||
http_port_max = var.common_data_source == "http" ? var.common_http_port_max : null
|
||||
boot = var.vm_boot
|
||||
boot_wait = var.vm_boot_wait
|
||||
boot_command = [
|
||||
"<up><wait>",
|
||||
"<tab><wait>",
|
||||
" text ${local.data_source_command}",
|
||||
"<enter><wait>"
|
||||
]
|
||||
|
||||
dynamic "additional_iso_files" {
|
||||
for_each = var.common_data_source == "disk" ? [1] : []
|
||||
content {
|
||||
cd_files = var.common_data_source == "disk" ? local.data_source_content : null
|
||||
cd_label = var.common_data_source == "disk" ? "cidata" : null
|
||||
iso_storage_pool = var.common_data_source == "disk" ? "local" : null
|
||||
}
|
||||
}
|
||||
|
||||
template_name = "${local.vm_name}"
|
||||
template_description = "${local.build_description}"
|
||||
|
||||
# VM Cloud Init Settings
|
||||
cloud_init = var.vm_cloud_init_enable
|
||||
cloud_init_storage_pool = var.vm_cloud_init_enable == true ? var.vm_storage_pool : null
|
||||
|
||||
}
|
||||
|
||||
# Build Definition to create the VM Template
|
||||
build {
|
||||
sources = ["source.proxmox-iso.linux-centos-stream"]
|
||||
|
||||
provisioner "ansible" {
|
||||
user = "${var.build_username}"
|
||||
playbook_file = "${path.cwd}/ansible/main.yml"
|
||||
roles_path = "${path.cwd}/ansible/roles"
|
||||
ansible_env_vars = [
|
||||
"ANSIBLE_CONFIG=${path.cwd}/ansible/ansible.cfg"
|
||||
]
|
||||
extra_arguments = [
|
||||
"--extra-vars", "display_skipped_hosts=false",
|
||||
"--extra-vars", "BUILD_USERNAME=${var.build_username}",
|
||||
"--extra-vars", "BUILD_SECRET='${var.build_key}'",
|
||||
"--extra-vars", "ANSIBLE_USERNAME=${var.ansible_username}",
|
||||
"--extra-vars", "ANSIBLE_SECRET='${var.ansible_key}'",
|
||||
"--extra-vars", "cloud_init='${var.vm_cloud_init_enable}'",
|
||||
]
|
||||
}
|
||||
|
||||
post-processor "manifest" {
|
||||
output = local.manifest_output
|
||||
strip_path = true
|
||||
strip_time = true
|
||||
custom_data = {
|
||||
ansible_username = "${var.ansible_username}"
|
||||
build_username = "${var.build_username}"
|
||||
build_date = "${local.build_date}"
|
||||
build_version = "${local.build_version}"
|
||||
common_data_source = "${var.common_data_source}"
|
||||
vm_cpu_sockets = "${var.vm_cpu_sockets}"
|
||||
vm_cpu_count = "${var.vm_cpu_count}"
|
||||
vm_disk_size = "${var.vm_disk_size}"
|
||||
vm_bios = "${var.vm_bios}"
|
||||
vm_os_type = "${var.vm_os_type}"
|
||||
vm_mem_size = "${var.vm_mem_size}"
|
||||
vm_network_card_model = "${var.vm_network_card_model}"
|
||||
vm_cloud_init_enable = "${var.vm_cloud_init_enable}"
|
||||
}
|
||||
}
|
||||
}
|
||||
53
builds/linux/centos/9-stream/variables-storage.pkr.hcl
Normal file
53
builds/linux/centos/9-stream/variables-storage.pkr.hcl
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
DESCRIPTION:
|
||||
Debian 11 storage variables used by the Packer Plugin for Proxmox (proxmox-iso).
|
||||
*/
|
||||
|
||||
// VM Storage Settings
|
||||
|
||||
variable "vm_disk_device" {
|
||||
type = string
|
||||
description = "The device for the virtual disk. (e.g. 'sda')"
|
||||
}
|
||||
|
||||
variable "vm_disk_use_swap" {
|
||||
type = bool
|
||||
description = "Whether to use a swap partition."
|
||||
}
|
||||
|
||||
variable "vm_disk_partitions" {
|
||||
type = list(object({
|
||||
name = string
|
||||
size = number
|
||||
format = object({
|
||||
label = string
|
||||
fstype = string
|
||||
})
|
||||
mount = object({
|
||||
path = string
|
||||
options = string
|
||||
})
|
||||
volume_group = string
|
||||
}))
|
||||
description = "The disk partitions for the virtual disk."
|
||||
}
|
||||
|
||||
variable "vm_disk_lvm" {
|
||||
type = list(object({
|
||||
name = string
|
||||
partitions = list(object({
|
||||
name = string
|
||||
size = number
|
||||
format = object({
|
||||
label = string
|
||||
fstype = string
|
||||
})
|
||||
mount = object({
|
||||
path = string
|
||||
options = string
|
||||
})
|
||||
}))
|
||||
}))
|
||||
description = "The LVM configuration for the virtual disk."
|
||||
default = []
|
||||
}
|
||||
297
builds/linux/centos/9-stream/variables.pkr.hcl
Normal file
297
builds/linux/centos/9-stream/variables.pkr.hcl
Normal file
@@ -0,0 +1,297 @@
|
||||
/*
|
||||
DESCRIPTION:
|
||||
Debian 11 variables using the Packer Builder for Proxmox (proxmox-iso).
|
||||
*/
|
||||
|
||||
// BLOCK: variable
|
||||
// Defines the input variables.
|
||||
|
||||
// Proxmox Credentials
|
||||
|
||||
variable "proxmox_hostname" {
|
||||
type = string
|
||||
description = "The FQDN or IP address of a Proxmox node. Only one node should be specified in a cluster."
|
||||
}
|
||||
|
||||
variable "proxmox_api_token_id" {
|
||||
type = string
|
||||
description = "The token to login to the Proxmox node/cluster. The format is USER@REALM!TOKENID. (e.g. packer@pam!packer_pve_token)"
|
||||
}
|
||||
|
||||
variable "proxmox_api_token_secret" {
|
||||
type = string
|
||||
description = "The secret for the API token used to login to the Proxmox API."
|
||||
# sensitive = true
|
||||
}
|
||||
|
||||
variable "proxmox_insecure_connection" {
|
||||
description = "true/false to skip Proxmox TLS certificate checks."
|
||||
type = bool
|
||||
default = true
|
||||
}
|
||||
|
||||
// Proxmox Settings
|
||||
|
||||
variable "proxmox_node" {
|
||||
type = string
|
||||
description = "The name of the Proxmox node that Packer will build templates on."
|
||||
}
|
||||
|
||||
// Virtual Machine Settings
|
||||
|
||||
variable "vm_os_language" {
|
||||
type = string
|
||||
description = "The guest operating system language."
|
||||
default = "en_US"
|
||||
}
|
||||
|
||||
variable "vm_os_keyboard" {
|
||||
type = string
|
||||
description = "The guest operating system keyboard layout."
|
||||
default = "us"
|
||||
}
|
||||
|
||||
variable "vm_os_timezone" {
|
||||
type = string
|
||||
description = "The guest operating system timezone."
|
||||
default = "UTC"
|
||||
}
|
||||
|
||||
variable "vm_os_family" {
|
||||
type = string
|
||||
description = "The guest operating system family. Used for naming. (e.g. 'linux')"
|
||||
}
|
||||
|
||||
variable "vm_os_name" {
|
||||
type = string
|
||||
description = "The guest operating system name. Used for naming. (e.g. 'ubuntu')"
|
||||
}
|
||||
|
||||
variable "vm_os_version" {
|
||||
type = string
|
||||
description = "The guest operating system version. Used for naming. (e.g. '22-04-lts')"
|
||||
}
|
||||
|
||||
variable "vm_os_type" {
|
||||
type = string
|
||||
description = "The guest operating system type. (e.g. 'l26')"
|
||||
}
|
||||
|
||||
variable "vm_bios" {
|
||||
type = string
|
||||
description = "The firmware type. Allowed values 'ovmf' or 'seabios'"
|
||||
default = "OVMF"
|
||||
|
||||
validation {
|
||||
condition = contains(["ovmf", "seabios"], var.vm_bios)
|
||||
error_message = "The vm_bios value must be 'ovmf' or 'seabios'."
|
||||
}
|
||||
}
|
||||
|
||||
variable "vm_firmware_path" {
|
||||
type = string
|
||||
description = "The firmware file to be used. Needed for EFI"
|
||||
default = "/usr/share/ovmf/OVMF.fd"
|
||||
}
|
||||
|
||||
variable "vm_efi_storage_pool" {
|
||||
type = string
|
||||
description = "Set the UEFI disk storage location. (e.g. 'local-lvm')"
|
||||
}
|
||||
|
||||
variable "vm_efi_type" {
|
||||
type = string
|
||||
description = "Specifies the version of the OVMF firmware to be used. (e.g. '4m')"
|
||||
}
|
||||
|
||||
variable "vm_efi_pre_enrolled_keys" {
|
||||
type = bool
|
||||
description = "Whether Microsoft Standard Secure Boot keys should be pre-loaded on the EFI disk. (e.g. false)"
|
||||
}
|
||||
|
||||
variable "vm_cpu_count" {
|
||||
type = number
|
||||
description = "The number of virtual CPUs. (e.g. '2')"
|
||||
}
|
||||
|
||||
variable "vm_cpu_sockets" {
|
||||
type = number
|
||||
description = "The number of virtual CPU sockets. (e.g. '1')"
|
||||
}
|
||||
|
||||
variable "vm_cpu_type" {
|
||||
type = string
|
||||
description = "The CPU type to emulate. See the Proxmox API documentation for the complete list of accepted values. For best performance, set this to host. Defaults to kvm64."
|
||||
}
|
||||
|
||||
variable "vm_mem_size" {
|
||||
type = number
|
||||
description = "The size for the virtual memory in MB. (e.g. '2048')"
|
||||
}
|
||||
|
||||
variable "vm_disk_controller_type" {
|
||||
type = string
|
||||
description = "The SCSI controller model to emulate. (e.g. 'virtio-scsi-pci')"
|
||||
}
|
||||
|
||||
variable "vm_disk_type" {
|
||||
type = string
|
||||
description = "The type of disk to emulate. (e.g. 'virtio')"
|
||||
}
|
||||
|
||||
variable "vm_storage_pool" {
|
||||
type = string
|
||||
description = "The name of the Proxmox storage pool to store the VM template. (e.g. 'local-lvm')"
|
||||
}
|
||||
|
||||
variable "vm_disk_size" {
|
||||
type = string
|
||||
description = "The size for the virtual disk in GB. (e.g. '32G')"
|
||||
}
|
||||
|
||||
variable "vm_disk_format" {
|
||||
type = string
|
||||
description = "The format of the file backing the disk. (e.g. 'qcow2')"
|
||||
}
|
||||
|
||||
variable "vm_network_card_model" {
|
||||
type = string
|
||||
description = "The model of the virtual network adapter to emulate. (e.g. 'virtio')"
|
||||
}
|
||||
|
||||
variable "vm_bridge_interface" {
|
||||
type = string
|
||||
description = "The name of the Proxmox bridge to attach the adapter to."
|
||||
}
|
||||
|
||||
variable "vm_vlan_tag" {
|
||||
type = string
|
||||
description = "If the adapter should tag packets, give the VLAN ID. (e.g. '102')"
|
||||
}
|
||||
|
||||
// Cloud-Init Settings
|
||||
|
||||
variable "vm_cloud_init_enable" {
|
||||
type = bool
|
||||
description = "Enable or disable cloud-init drive in Proxmox. (e.g. false)"
|
||||
default = false
|
||||
}
|
||||
|
||||
// Removable Media Settings
|
||||
|
||||
variable "common_iso_storage" {
|
||||
type = string
|
||||
description = "The name of the source Proxmox storage location for ISO images. (e.g. 'local-lvm')"
|
||||
}
|
||||
|
||||
variable "iso_path" {
|
||||
type = string
|
||||
description = "The path on the source Proxmox storage location for ISO images. (e.g. 'iso')"
|
||||
}
|
||||
|
||||
variable "iso_file" {
|
||||
type = string
|
||||
description = "The file name of the ISO image used by the vendor. (e.g. 'ubuntu-<version>-live-server-amd64.iso')"
|
||||
}
|
||||
|
||||
variable "iso_checksum" {
|
||||
type = string
|
||||
description = "The checksum value of the ISO image provided by the vendor."
|
||||
}
|
||||
|
||||
// Boot Settings
|
||||
|
||||
variable "common_data_source" {
|
||||
type = string
|
||||
description = "The provisioning data source. (e.g. 'http' or 'disk')"
|
||||
}
|
||||
|
||||
variable "common_http_bind_address" {
|
||||
type = string
|
||||
description = "Define an IP address on the host to use for the HTTP server."
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "common_http_port_min" {
|
||||
type = number
|
||||
description = "The start of the HTTP port range."
|
||||
}
|
||||
|
||||
variable "common_http_port_max" {
|
||||
type = number
|
||||
description = "The end of the HTTP port range."
|
||||
}
|
||||
|
||||
variable "vm_boot" {
|
||||
type = string
|
||||
description = "The boot order for virtual machine devices. (e.g. 'order=virtio0;ide2;net0')"
|
||||
}
|
||||
|
||||
variable "vm_boot_wait" {
|
||||
type = string
|
||||
description = "The time to wait after booting the initial VM before typing the boot_command (e.g '10s')"
|
||||
}
|
||||
|
||||
variable "common_ip_wait_timeout" {
|
||||
type = string
|
||||
description = "Time to wait for guest operating system IP address response."
|
||||
}
|
||||
|
||||
variable "common_shutdown_timeout" {
|
||||
type = string
|
||||
description = "Time to wait for guest operating system shutdown."
|
||||
}
|
||||
|
||||
// Communicator Settings and Credentials
|
||||
|
||||
variable "build_username" {
|
||||
type = string
|
||||
description = "The username to login to the guest operating system. (e.g. 'ubuntu')"
|
||||
# sensitive = true
|
||||
}
|
||||
|
||||
variable "build_password" {
|
||||
type = string
|
||||
description = "The password to login to the guest operating system."
|
||||
# sensitive = true
|
||||
}
|
||||
|
||||
variable "build_password_encrypted" {
|
||||
type = string
|
||||
description = "The encrypted password to login to the guest operating system."
|
||||
# sensitive = true
|
||||
}
|
||||
|
||||
variable "build_key" {
|
||||
type = string
|
||||
description = "The SSH public key to login to the guest operating system."
|
||||
# sensitive = true
|
||||
}
|
||||
|
||||
variable "timeout" {
|
||||
description = "not sure why I need so high a timeout but here we are"
|
||||
default = "90m"
|
||||
}
|
||||
|
||||
// Ansible Credentials
|
||||
|
||||
variable "ansible_username" {
|
||||
type = string
|
||||
description = "The username for Ansible to login to the guest operating system. (e.g. 'ansible')"
|
||||
# sensitive = true
|
||||
}
|
||||
|
||||
variable "ansible_key" {
|
||||
type = string
|
||||
description = "The public key for Ansible to login to the guest operating system."
|
||||
# sensitive = true
|
||||
}
|
||||
|
||||
// HCP Packer Settings
|
||||
|
||||
variable "common_hcp_packer_registry_enabled" {
|
||||
type = bool
|
||||
description = "Enable the HCP Packer registry."
|
||||
default = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user