test: add network template tests
This commit is contained in:
1
tests/.gitignore
vendored
Normal file
1
tests/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
output
|
||||||
6
tests/network/golden/dhcp-autoinstall
Normal file
6
tests/network/golden/dhcp-autoinstall
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
network:
|
||||||
|
network:
|
||||||
|
version: 2
|
||||||
|
ethernets:
|
||||||
|
eth0:
|
||||||
|
dhcp4: true
|
||||||
1
tests/network/golden/dhcp-kickstart
Normal file
1
tests/network/golden/dhcp-kickstart
Normal file
@@ -0,0 +1 @@
|
|||||||
|
network --device=eth0 --bootproto=dhcp
|
||||||
1
tests/network/golden/dhcp-preseed
Normal file
1
tests/network/golden/dhcp-preseed
Normal file
@@ -0,0 +1 @@
|
|||||||
|
d-i netcfg/choose_interface select eth0
|
||||||
13
tests/network/golden/static-autoinstall
Normal file
13
tests/network/golden/static-autoinstall
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
network:
|
||||||
|
network:
|
||||||
|
version: 2
|
||||||
|
ethernets:
|
||||||
|
eth0:
|
||||||
|
dhcp4: false
|
||||||
|
addresses:
|
||||||
|
- 192.168.100.192/24
|
||||||
|
gateway4: 192.168.100.1
|
||||||
|
nameservers:
|
||||||
|
addresses:
|
||||||
|
- 192.168.100.3
|
||||||
|
- 192.168.100.1
|
||||||
1
tests/network/golden/static-kickstart
Normal file
1
tests/network/golden/static-kickstart
Normal file
@@ -0,0 +1 @@
|
|||||||
|
network --device=eth0 --bootproto=static --ip=192.168.100.192 --netmask=255.255.255.0 --gateway=192.168.100.1 --nameserver=192.168.100.3,192.168.100.1
|
||||||
7
tests/network/golden/static-preseed
Normal file
7
tests/network/golden/static-preseed
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
d-i netcfg/choose_interface select eth0
|
||||||
|
d-i netcfg/disable_autoconfig boolean true
|
||||||
|
d-i netcfg/get_ipaddress string 192.168.100.192
|
||||||
|
d-i netcfg/get_netmask string 255.255.255.0
|
||||||
|
d-i netcfg/get_gateway string 192.168.100.1
|
||||||
|
d-i netcfg/get_nameservers string 192.168.100.3 192.168.100.1
|
||||||
|
d-i netcfg/confirm_static boolean true
|
||||||
19
tests/network/templates/autoinstall.pkrtpl
Normal file
19
tests/network/templates/autoinstall.pkrtpl
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
network:
|
||||||
|
network:
|
||||||
|
version: 2
|
||||||
|
ethernets:
|
||||||
|
%{ if ip != null ~}
|
||||||
|
${device}:
|
||||||
|
dhcp4: false
|
||||||
|
addresses:
|
||||||
|
- ${ip}/${netmask}
|
||||||
|
gateway4: ${gateway}
|
||||||
|
nameservers:
|
||||||
|
addresses:
|
||||||
|
%{ for item in dns ~}
|
||||||
|
- ${item}
|
||||||
|
%{ endfor ~}
|
||||||
|
%{ else ~}
|
||||||
|
${device}:
|
||||||
|
dhcp4: true
|
||||||
|
%{ endif ~}
|
||||||
5
tests/network/templates/kickstart.pkrtpl
Normal file
5
tests/network/templates/kickstart.pkrtpl
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
%{~ if ip != null ~}
|
||||||
|
network --device=${device} --bootproto=static --ip=${ip} --netmask=${cidrnetmask("${ip}/${netmask}")} --gateway=${gateway} --nameserver=${join(",", dns)}
|
||||||
|
%{~ else ~}
|
||||||
|
network --device=${device} --bootproto=dhcp
|
||||||
|
%{~ endif ~}
|
||||||
9
tests/network/templates/preseed.pkrtpl
Normal file
9
tests/network/templates/preseed.pkrtpl
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
d-i netcfg/choose_interface select ${device}
|
||||||
|
%{ if ip != null ~}
|
||||||
|
d-i netcfg/disable_autoconfig boolean true
|
||||||
|
d-i netcfg/get_ipaddress string ${ip}
|
||||||
|
d-i netcfg/get_netmask string ${cidrnetmask("${ip}/${netmask}")}
|
||||||
|
d-i netcfg/get_gateway string ${gateway}
|
||||||
|
d-i netcfg/get_nameservers string ${join(" ", dns)}
|
||||||
|
d-i netcfg/confirm_static boolean true
|
||||||
|
%{ endif ~}
|
||||||
68
tests/network/test
Normal file
68
tests/network/test
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env bats
|
||||||
|
|
||||||
|
setup() {
|
||||||
|
DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )"
|
||||||
|
echo "$DIR"
|
||||||
|
packer init -upgrade "$DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown() {
|
||||||
|
rm -f /tmp/tmpfile
|
||||||
|
}
|
||||||
|
|
||||||
|
clean_blank_lines() {
|
||||||
|
# Remove any blank lines that HCL likes to leave around
|
||||||
|
awk 'NF' "$1" > /tmp/tmpfile && cat /tmp/tmpfile > "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
## Test DHCP
|
||||||
|
###############################################################################
|
||||||
|
@test "network with Autoinstall using DHCP" {
|
||||||
|
mkdir -p "$DIR/output/dhcp"
|
||||||
|
packer build -var-file="$DIR/test-dhcp.pkrvars.hcl" -var "output_folder=$DIR/output/dhcp" -only "autoinstall.*" "$DIR"
|
||||||
|
run clean_blank_lines "$DIR/output/dhcp/autoinstall"
|
||||||
|
run diff -u "$DIR/output/dhcp/autoinstall" "$DIR/golden/dhcp-autoinstall"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "network with Kickstart using DHCP" {
|
||||||
|
mkdir -p "$DIR/output/dhcp"
|
||||||
|
packer build -var-file="$DIR/test-dhcp.pkrvars.hcl" -var "output_folder=$DIR/output/dhcp" -only "kickstart.*" "$DIR"
|
||||||
|
run clean_blank_lines "$DIR/output/dhcp/kickstart"
|
||||||
|
run diff -u "$DIR/output/dhcp/kickstart" "$DIR/golden/dhcp-kickstart"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "network with Preseed using DHCP" {
|
||||||
|
mkdir -p "$DIR/output/dhcp"
|
||||||
|
packer build -var-file="$DIR/test-dhcp.pkrvars.hcl" -var "output_folder=$DIR/output/dhcp" -only "preseed.*" "$DIR"
|
||||||
|
run clean_blank_lines "$DIR/output/dhcp/preseed"
|
||||||
|
run diff -u "$DIR/output/dhcp/preseed" "$DIR/golden/dhcp-preseed"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
## Test static IP
|
||||||
|
###############################################################################
|
||||||
|
@test "network with Autoinstall using static IP" {
|
||||||
|
mkdir -p "$DIR/output/static"
|
||||||
|
packer build -var-file="$DIR/test-static.pkrvars.hcl" -var "output_folder=$DIR/output/static" -only "autoinstall.*" "$DIR"
|
||||||
|
run clean_blank_lines "$DIR/output/static/autoinstall"
|
||||||
|
run diff -u "$DIR/output/static/autoinstall" "$DIR/golden/static-autoinstall"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "network with Kickstart using static IP" {
|
||||||
|
mkdir -p "$DIR/output/static"
|
||||||
|
packer build -var-file="$DIR/test-static.pkrvars.hcl" -var "output_folder=$DIR/output/static" -only "kickstart.*" "$DIR"
|
||||||
|
run clean_blank_lines "$DIR/output/static/kickstart"
|
||||||
|
run diff -u "$DIR/output/static/kickstart" "$DIR/golden/static-kickstart"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "network with Preseed using static IP" {
|
||||||
|
mkdir -p "$DIR/output/static"
|
||||||
|
packer build -var-file="$DIR/test-static.pkrvars.hcl" -var "output_folder=$DIR/output/static" -only "preseed.*" "$DIR"
|
||||||
|
run clean_blank_lines "$DIR/output/static/preseed"
|
||||||
|
run diff -u "$DIR/output/static/preseed" "$DIR/golden/static-preseed"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
}
|
||||||
1
tests/network/test-dhcp.pkrvars.hcl
Normal file
1
tests/network/test-dhcp.pkrvars.hcl
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Nothing to set for DHCP
|
||||||
4
tests/network/test-static.pkrvars.hcl
Normal file
4
tests/network/test-static.pkrvars.hcl
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
vm_ip_address = "192.168.100.192"
|
||||||
|
vm_ip_netmask = 24
|
||||||
|
vm_ip_gateway = "192.168.100.1"
|
||||||
|
vm_dns_list = ["192.168.100.3", "192.168.100.1"]
|
||||||
57
tests/network/test.pkr.hcl
Normal file
57
tests/network/test.pkr.hcl
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
source "null" "test" {
|
||||||
|
communicator = "none"
|
||||||
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
autoinstall = templatefile("${abspath(path.root)}/templates/autoinstall.pkrtpl", {
|
||||||
|
device = var.vm_network_device,
|
||||||
|
ip = var.vm_ip_address,
|
||||||
|
netmask = var.vm_ip_netmask,
|
||||||
|
gateway = var.vm_ip_gateway,
|
||||||
|
dns = var.vm_dns_list,
|
||||||
|
})
|
||||||
|
kickstart = templatefile("${abspath(path.root)}/templates/kickstart.pkrtpl", {
|
||||||
|
device = var.vm_network_device,
|
||||||
|
ip = var.vm_ip_address,
|
||||||
|
netmask = var.vm_ip_netmask,
|
||||||
|
gateway = var.vm_ip_gateway,
|
||||||
|
dns = var.vm_dns_list,
|
||||||
|
})
|
||||||
|
preseed = templatefile("${abspath(path.root)}/templates/preseed.pkrtpl", {
|
||||||
|
device = var.vm_network_device,
|
||||||
|
ip = var.vm_ip_address,
|
||||||
|
netmask = var.vm_ip_netmask,
|
||||||
|
gateway = var.vm_ip_gateway,
|
||||||
|
dns = var.vm_dns_list,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
build {
|
||||||
|
name = "autoinstall"
|
||||||
|
sources = ["source.null.test"]
|
||||||
|
provisioner "shell-local" {
|
||||||
|
inline = [
|
||||||
|
"echo '${local.autoinstall}' > ${var.output_folder}/autoinstall",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
build {
|
||||||
|
name = "kickstart"
|
||||||
|
sources = ["source.null.test"]
|
||||||
|
provisioner "shell-local" {
|
||||||
|
inline = [
|
||||||
|
"echo '${local.kickstart}' > ${var.output_folder}/kickstart",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
build {
|
||||||
|
name = "preseed"
|
||||||
|
sources = ["source.null.test"]
|
||||||
|
provisioner "shell-local" {
|
||||||
|
inline = [
|
||||||
|
"echo '${local.preseed}' > ${var.output_folder}/preseed",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
34
tests/network/variables.pkr.hcl
Normal file
34
tests/network/variables.pkr.hcl
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
variable "vm_network_device" {
|
||||||
|
type = string
|
||||||
|
description = "The network device of the VM."
|
||||||
|
default = "eth0"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "vm_ip_address" {
|
||||||
|
type = string
|
||||||
|
description = "The IP address of the VM (e.g. 172.16.100.192)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "vm_ip_netmask" {
|
||||||
|
type = number
|
||||||
|
description = "The netmask of the VM (e.g. 24)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "vm_ip_gateway" {
|
||||||
|
type = string
|
||||||
|
description = "The gateway of the VM (e.g. 172.16.100.1)."
|
||||||
|
default = null
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "vm_dns_list" {
|
||||||
|
type = list(string)
|
||||||
|
description = "The nameservers of the VM."
|
||||||
|
default = []
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "output_folder" {
|
||||||
|
type = string
|
||||||
|
description = "The output folder for the generated files."
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user