Skip to content

Commit

Permalink
add virtualbox builder
Browse files Browse the repository at this point in the history
  • Loading branch information
kayiwa committed Feb 7, 2023
1 parent f5e5308 commit f89da00
Show file tree
Hide file tree
Showing 9 changed files with 499 additions and 424 deletions.
1 change: 1 addition & 0 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ name = "pypi"

[packages]
ansible = "*"
ansible-lint = "*"

[dev-packages]

Expand Down
322 changes: 274 additions & 48 deletions Pipfile.lock

Large diffs are not rendered by default.

42 changes: 42 additions & 0 deletions ubuntu/22-04-lts/http/user-data
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#cloud-config
autoinstall:
version: 1
apt:
conf: |
Acquire {
Check-Date "false";
};

ssh:
allow-pw: true
install-server: true
user-data:
disable_root: false
users:
- name: pulsys
shell: /bin/bash
lock-passwd: false
# Password:
passwd: ${hashed_os_password}
locale: en_US
keyboard:
layout: en
package_update: false
package_upgrade: false
packages:
- apt-transport-https
- sudo
- openssh-server
- wget
- curl
- python3
- python3-pip
- open-vm-tools-dev

late-commands:
- sed -i -e 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /target/etc/ssh/sshd_config
29 - sed -i -e 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /target/etc/ssh/sshd_config
- echo 'pulsys ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/pulsys
32 - curtin in-target --target=/target -- apt-get update
33 - curtin in-target --target=/target -- apt-get upgrade --yes
- sudo systemctl start ssh
98 changes: 98 additions & 0 deletions ubuntu/22-04-lts/ubuntu-server.pkr.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
variable "boot_wait" {
type = string
default = "10s"
}

variable "iso_checksum" {
type = string
default = "10f19c5b2b8d6db711582e0e27f5116296c34fe4b313ba45f9b201a5007056cb"
}

variable "iso_url" {
type = string
default = "https://releases.ubuntu.com/22.04/ubuntu-22.04.1-live-server-amd64.iso"
}

variable "cpus" {
type = string
default = "2"
}

variable "memory" {
type = string
default = "8192"
}

variable "ssh_password" {
type = string
default = "packer"
}

variable "ssh_timeout" {
type = string
default = "15m"
}

variable "ssh_username" {
type = string
default = "pulsys"
}

variable "ssh_handshake_attempts" {
type = number
default = 75
}

# "timestamp" template function replacement
locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") }

locals {
hashed_os_password = bcrypt("${var.ssh_password}")
}

source "virtualbox-iso" "vbox" {
guest_os_type = "Ubuntu_64"
shutdown_command = "echo 'packer' | sudo -S shutdown -P now"
ssh_password = "${var.ssh_password}"
ssh_timeout = "${var.ssh_timeout}"
ssh_username = "${var.ssh_username}"
ssh_handshake_attempts = "${var.ssh_handshake_attempts}"
cpus = "${var.cpus}"
memory = "${var.memory}"
boot_wait = "${var.boot_wait}"
http_directory = "${path.cwd}/22-04-lts/http"
iso_url = "${var.iso_url}"
iso_checksum = "${var.iso_checksum}"

boot_command = [
"<esc><esc><esc><esc>e<wait>", "<del><del><del><del><del><del><del><del>",
"<del><del><del><del><del><del><del><del>", "<del><del><del><del><del><del><del><del>",
"<del><del><del><del><del><del><del><del>", "<del><del><del><del><del><del><del><del>",
"<del><del><del><del><del><del><del><del>", "<del><del><del><del><del><del><del><del>",
"<del><del><del><del><del><del><del><del>", "<del><del><del><del><del><del><del><del>",
"<del><del><del><del><del><del><del><del>", "<del><del><del><del><del><del><del><del>",
"<del><del><del><del><del><del><del><del>", "<del><del><del><del><del><del><del><del>",
"<del><del><del><del><del><del><del><del>", "<del><del><del><del><del><del><del><del>",
"linux /casper/vmlinuz --- autoinstall ds=\"nocloud-net;seedfrom=http://{{ .HTTPIP }}:{{ .HTTPPort }}/\"<enter><wait>",
"initrd /casper/initrd<enter><wait>", "boot<enter>", "<enter><f10><wait>"
]
}

# a build block invokes sources and runs provisioning steps on them. The
# documentation for build blocks can be found here:
# https://www.packer.io/docs/templates/hcl_templates/blocks/build
build {
sources = ["source.virtualbox-iso.vbox"]


provisioner "ansible" {
playbook_file = "${path.cwd}/ansible/site.yml"
}

post-processors {
post-processor "vagrant" {
keep_input_artifact = true
provider_override = "virtualbox"
}
}
}
Loading

0 comments on commit f89da00

Please sign in to comment.