diff options
author | Roberto Berto <roberto.berto@under.com.br> | 2024-05-05 02:59:27 +0000 |
---|---|---|
committer | Roberto Berto <roberto.berto@under.com.br> | 2024-05-05 02:59:27 +0000 |
commit | 79c253d6ac454a33d53c014bd90a3ed9e10d7bcf (patch) | |
tree | 0ed38fcb38d87d0355bead8d05b62a4bffe237ee | |
parent | 549712fbf29c841c2974f04dfc991ba2a489393e (diff) | |
download | packer-vyos-79c253d6ac454a33d53c014bd90a3ed9e10d7bcf.tar.gz packer-vyos-79c253d6ac454a33d53c014bd90a3ed9e10d7bcf.zip |
first release
-rw-r--r-- | README.md | 14 | ||||
-rw-r--r-- | vnc.sh | 11 | ||||
-rw-r--r-- | vyos1.3.pkr.hcl | 205 |
3 files changed, 228 insertions, 2 deletions
@@ -1,2 +1,12 @@ -# packer-vyos -packer vyos +root@ds1s1$ + Xvfb :99 -screen 0 1024x768x16 + export DISPLAY=:99 + packer build + +wsl2$ + ssh ubuntu@10.18.0.37 -i keys/privateos_rsa -X -v + +ubuntu@ds1s1:~$ + export DISPLAY=:99 + vncviewer -shared 127.0.0.1:5990 + @@ -0,0 +1,11 @@ +#!/bin/bash + +#export DISPLAY=:99 + +while ! nc -z 127.0.0.1 5904; do + sleep 1 + echo "waiting for vnc..." +done +echo "vnc on." + +vncviewer -shared 127.0.0.1:5904 diff --git a/vyos1.3.pkr.hcl b/vyos1.3.pkr.hcl new file mode 100644 index 0000000..6610441 --- /dev/null +++ b/vyos1.3.pkr.hcl @@ -0,0 +1,205 @@ + +packer { + required_plugins { + ansible = { + version = "~> 1" + source = "github.com/hashicorp/ansible" + } + } +} + + +variable "vm_name" { + default = "vyos-1.3.6.img" +} + +variable "numvcpus" { + default = "4" +} + +variable "memsize" { + default = "2048" +} + +variable "disk_size" { + default = "10240" +} + + +variable "iso_url" { + default = "vyos-1.3.6-amd64.iso" +} + +variable "iso_filename" { + default = "vyos-1.3.6-amd64.iso" +} + +variable "iso_checksum" { + default = "file:iso/SHA256SUM" +} + +variable "ssh_username" { + default = "vyos" +} + +variable "ssh_password" { + default = "vyos" +} + +variable "boot_wait" { + default = "5s" +} + +locals { + iso_path = "iso/${var.iso_filename}" + timestamp_dir = "output-vyos-${regex_replace(timestamp(), "[: ]", "-")}" +} + +source "qemu" "vyos" { + + boot_command = [ + "<enter>", + "<wait60s>", + "${var.ssh_username}<enter><wait>", + "${var.ssh_password}<enter><wait>", + "configure<enter><wait>", + #"set interfaces ethernet eth0 address '10.210.240.9/24'<enter><wait>", + #"set protocols static route 0.0.0.0/0 next-hop '10.10.10.1'<enter><wait>", + "set interfaces ethernet eth0 address 'dhcp'<enter><wait>", + "set system name-server '8.8.8.8'<enter><wait>", + "set service ssh port '22'<enter><wait>", + "commit<enter><wait>", + "save<enter><wait>", + "exit<enter><wait>", + "install image<enter><wait3s>", + "Yes<enter><wait>", + "Auto<enter><wait>", + "<enter><wait>", # vda + "Yes<enter><wait5s>", + "<enter><wait15s>", #disk size + "${var.vm_name}<enter><wait10s>", + "<enter><wait2s>", + "${var.ssh_password}<enter><wait>", + "${var.ssh_password}<enter><wait>", + "<enter><wait10s>", #vda + #"shutdown -h now<enter>" + ] + #boot_wait = "3s" + + vm_name = var.vm_name + format = "qcow2" + + accelerator = "kvm" + + iso_checksum = var.iso_checksum + iso_url = fileexists(local.iso_path) ? local.iso_path : var.iso_url + + boot_wait = var.boot_wait + + http_directory = "http" + + shutdown_command = "shutdown -P now" + + communicator = "ssh" + + #ssh_host = "10.18.0.37" + #ssh_port = 3333 + #ssh_host_port_min = 2222 + #ssh_host_port_max = 2222 + #ssh_skip_nat_mapping = true + + ssh_username = var.ssh_username + ssh_password = var.ssh_password + + ssh_timeout = "30m" + #use_sudo = false + #pause_before = "30s" + + memory = var.memsize + cpus = var.numvcpus + + vnc_port_min = 5904 + vnc_port_max = 5904 + headless = false + + #guest_os_type = "Debian_64" + + output_directory = "output-vyos-${local.timestamp_dir}" + + net_device = "virtio-net" + disk_interface = "virtio" + disk_size = var.disk_size + + qemuargs = [ + ["-m", "2048"], + ["-smp", "4"], + ["-cpu", "host"], + #["-netdev", "user,id=user.0,hostfwd=tcp:10.18.0.37:2222-10.10.10.2:22"], + #["-netdev", "user,id=user.0,hostfwd=tcp::2222-:22"], + #["-netdev", "bridge,id=br0,br=br0"], + #["-netdev", "user,id=user.0"], + #["-device", "virtio-net,netdev=user.0"], + + ["-netdev", "user,id=user.0,", + "hostfwd=tcp::{{ .SSHHostPort }}-:22,", + "net=10.210.240.0/24,", + "dhcpstart=10.210.240.9", + "" + ], + ["-device", "virtio-net,netdev=user.0"] + + ] +} + + +build { + sources = [ + "source.qemu.vyos" + ] + + provisioner "shell-local" { + inline = [ + "mkdir -p ${local.timestamp_dir}" + ] + #only = ["qemu.vyos"] + } + +# provisioner "shell" { +# execute_command = "sh -c '{{ .Vars }} {{ .Path }}'" + + +# # connection { +# # type = "ssh" +# # user = "vyos" +# # password = "vyos" +# # host = "127.0.0.1" +# # port = 2222 +# # } + +# inline = [ +# "sleep 1000" +# #"sudo apt update", +# #"apt install -y nginx" +# ] +# } + +# provisioner "shell" { +# execute_command = "sh -c '{{ .Vars }} {{ .Path }}'" + +# inline = [ +# #"apt -y update && apt -y upgrade", +# #"sudo apt -y install python3-pip", +# "sleep 10000" +# #"pip3 --no-cache-dir install ansible" +# ] +# } +} + +# provisioner "ansible-local" { +# playbook_file = "scripts/setup.yml" +# } + +# provisioner "shell" { +# execute_command = "echo '${var.ssh_password}'|{{.Vars}} sudo -S -E bash '{{.Path}}'" +# scripts = ["scripts/cleanup.sh"] +# } |