Skip to content

Instantly share code, notes, and snippets.

@v1nsai
Last active June 25, 2023 00:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save v1nsai/b454894fc4d443e369248f94ed8e4056 to your computer and use it in GitHub Desktop.
Save v1nsai/b454894fc4d443e369248f94ed8e4056 to your computer and use it in GitHub Desktop.
source "qemu" "instance" {
iso_url = "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
iso_checksum = "b2f77380d6afaa6ec96e41d5f9571eda"
format = "qcow2"
ssh_username = "root"
ssh_private_key_file = "~/.ssh/instance"
vm_name = "instance"
disk_image = true
boot_wait = "10s"
use_default_display = true
headless = false
http_directory = "projects/instance/packer/cloud-data"
vnc_port_min = 5900
vnc_port_max = 5900
ssh_timeout = "20m"
qemuargs = [["-smbios", "type=1,serial=ds=nocloud-net;instance-id=packer;seedfrom=http://{{ .HTTPIP }}:{{ .HTTPPort }}/"]]
}
build {
sources = ["source.qemu.instance"]
provisioner "shell-local" {
inline = [
# "cat projects/instance/install.sh | base64 -w 0 > projects/instance/install.sh.base64", # Linux
"cat projects/instance/install.sh | base64 > projects/instance/install.sh.base64", # MacOS
"yq -i '.write_files[0].content = load_str(\"projects/instance/install.sh.base64\")' projects/instance/packer/cloud-data/user-data"
]
}
provisioner "file" {
source = "${path.cwd}/projects/instance/install.sh"
destination = "/tmp/provisioner-install.sh"
}
provisioner "shell" {
inline = [
"mv /tmp/provisioner-install.sh /home/localadmin/provisioner-install.sh"
]
}
}
#cloud-config
ssh_pwauth: true
users:
- name: root
lock_passwd: false
hashed_passwd: $6$rounds=4096$s0cBOA5fV0NQT3a7$x1/wtO50h8UjYX.AuEN1qxr9z4Tw7.bhW/DeGY1z8ZtPmS245FkezDAogv1/ZxLfazSING3H0qW2z6qXeDPkH0
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAA...
- name: localadmin
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin, sudo
shell: /bin/bash
lock_passwd: false
passwd: $6$rounds=4096$nQEeaHtr...
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCX3ZnnojSpqi1R7CWmP7uVFU2fEd2uS4PYQpWC23ScmDGP7KFHeTJfMc6eMaAhbxfIXx2CFdsIhP5U58BFLmAxkUIM8lGnHgh1uME/aOMZokZrDhYnw0eaamVOg0rdKD/uaTo87ASoxpf0XYnrqcrYhFIQodxjsCC8pCU5Egjh9QDgHsniJ5vWEkxZGPQ4SXIj4txh8uXMI0mh57BWJRK0zJIDzZCxubtrOpWoQnVvg/ZV+Thgy0P9m7e8OHbaM3U/7p4DBd1MZ95jNwjefMeD5hR46T35rkR9w/ebEIKhGjz0UB2yRUZPOPqBzVfixYA6gfd5c1AhjluCyCqhLEMd Generated-by-Nova
- name: wordpress
groups: [www-data]
shell: /bin/bash
lock_passwd: false
ssh_pwauth: true
passwd: $6$rounds=4096$s0cBOA...
apt:
preserve_sources_list: true
package_update: false
write_files:
- path: /home/localadmin/cloudinit-install.sh
content: |
VvdXQ6IDYwL2c...
permissions: '0755'
owner: localadmin:localadmin
encoding: base64
defer: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment