Skip to content

Instantly share code, notes, and snippets.

@Toasterson
Created November 6, 2025 18:49
Show Gist options
  • Select an option

  • Save Toasterson/aab06c14744eb20ed56d6d897c737bdc to your computer and use it in GitHub Desktop.

Select an option

Save Toasterson/aab06c14744eb20ed56d6d897c737bdc to your computer and use it in GitHub Desktop.
#!/usr/bin/bash
set -ex
ZONE=$1
IP_ADDRESS_CIDR="${2}/16"
NICNAME="${ZONE}0"
INTERNALSTUB="oinetint0"
GATEWAY="10.1.0.1"
RAM="16G"
VCPUS="8"
DISK="60G"
CIDATA_DIR="/vm/iso/${ZONE}-cidata"
ISO="${CIDATA_DIR}.iso"
if ! dladm show-vnic $NICNAME > /dev/null; then
dladm create-vnic -l $INTERNALSTUB $NICNAME
fi
if ! zfs get name rpool/vm/${ZONE}d0 > /dev/null;then
zfs create -V ${DISK} rpool/vm/${ZONE}d0
fi
dd if=/zones/oinetentry/root/var/www/dlc/hipster/cloudimage-ttya-openindiana-hipster.raw of=/dev/zvol/rdsk/rpool/vm/${ZONE}d0 bs=1M status=progress
cat <<EOF | zonecfg -z $ZONE
create -b
set zonepath=/zones/$ZONE
set brand=bhyve
set autoboot=true
set ip-type=exclusive
add fs
set dir="/vm/iso"
set special="/vm/iso"
set type="lofs"
add options ro
add options nodevices
end
add net
set physical="$NICNAME"
end
add device
set match="/dev/zvol/rdsk/rpool/vm/${ZONE}d0"
end
add attr
set name="bootdisk"
set type="string"
set value="rpool/vm/${ZONE}d0"
end
add attr
set name="acpi"
set type="string"
set value="off"
end
add attr
set name="ram"
set type="string"
set value="${RAM}"
end
add attr
set name="vcpus"
set type="string"
set value="${VCPUS}"
end
add attr
set name="cdrom"
set type="string"
set value="${ISO}"
end
EOF
mkdir -p $CIDATA_DIR
cat<<EOF > $CIDATA_DIR/user-data
#cloud-config
users:
- name: root
ssh_authorized_keys:
- "ssh-ed25519 AAAAC3"
EOF
ZONE_UUID=$(zoneadm -z ${ZONE} list -p | cut -d ":" -f 5)
cat<<EOF > $CIDATA_DIR/meta-data
instance-id: "${ZONE_UUID}"
hostname: "${ZONE}"
EOF
MAC_ADDRESS=$(dladm show-vnic ${NICNAME} -p -o macaddress)
cat<<EOF > $CIDATA_DIR/network-config
network:
version: 1
config:
- type: physical
name: ${NICNAME}
mac_address: '${MAC_ADDRESS}'
subnets:
- type: static
address: ${IP_ADDRESS_CIDR}
gateway: ${GATEWAY}
dns_nameservers:
- 9.9.9.9
- 149.112.112.112
- 2620:fe::fe
- 2620:fe::9
dns_search:
- openindiana.org
EOF
vim $CIDATA_DIR/network-config
(cd ${CIDATA_DIR}; mkisofs -graft-points -dlrDJN -relaxed-filenames -o ${ISO} -V cidata user-data meta-data network-config)
zoneadm -z $ZONE install
zoneadm -z $ZONE boot
zlogin -C $ZONE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment