zmgr/create_oi_vm.sh

122 lines
2.8 KiB
Bash
Raw Normal View History

#!/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-rsa AAAAB3NzaC1yc2EAAAABJQAAAQBmEXyfBHRiQogrAEgFp8Lr1TDEKdRRcpwqHOiujzTAFqszxutMPzuFlyU0Ljh28VqeDD9cIyS6VGfKG3iASQbIZd61yE0NHPNC6IPTFTggGK+3PzKt4T+t1ZdIhdrCGcsrq8c+44kSyIutvbruB0UmRjq4XqqkCDFEZMzBF/KUcu0M7oSEawFuzbtl7xoaDY83F7+HXTxbBKuRwSJw58d8MqsI7KlW6zUKJi0bgmYJOFjjDLPVTo7lqdNYfTRAHZYaCUADfrUqBCOLHSDET1Zrs3ibr6l8oMqOvctfwvuGpNT8vs05Z0P/ETUiZ/SzTyvoRyxXG0JTKlNSRmxcYA2J toasty_rsa"
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILcp4Wgea5V8N750xcRGil1rrdd+mCpwYBspNwwb45SN toasty_ed25519"
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBrXXxL7WUfh5UjSGV2uANb9E4LP9jl/cEt3NpC87g6h a.wacknitz@gmx.de"
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