initial commit
This commit is contained in:
parent
b916d56285
commit
51a028e634
6 changed files with 182 additions and 1 deletions
73
vm-firstrun.sh
Normal file
73
vm-firstrun.sh
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
#!/bin/bash
|
||||
|
||||
# /usr/local/sbin/vm-firstrun.sh
|
||||
|
||||
# This script depends on having these packages installed:
|
||||
# - cloud-utils-growpart
|
||||
# - parted
|
||||
|
||||
# This should be a simple bash file that sets the CFG_* variables
|
||||
[ -f /etc/sysconfig/vm-firstrun ] && . /etc/sysconfig/vm-firstrun
|
||||
|
||||
## Set default values for anything that wasn't already set
|
||||
# This will be run at firstboot to generate the hostname
|
||||
CFG_HOSTNAME_SCRIPT="${CFG_HOSTNAME_SCRIPT:=uuidgen}"
|
||||
# These can be set in config, there's just no reason for a default besides (blank)
|
||||
# CFG_HOSTNAME_PREFIX="${CFG_HOSTNAME_PREFIX:=}"
|
||||
# CFG_HOSTNAME_POSTFIX="${CFG_HOSTNAME_POSTFIX:=}"
|
||||
CFG_DOMAIN="${CFG_DOMAIN:=localdomain}"
|
||||
CFG_ROOTFS_DISK="${CFG_ROOTFS_DISK:=/dev/sda}"
|
||||
CFG_ROOTFS_PARTITION="${CFG_ROOTFS_PARTITION:=3}"
|
||||
CFG_ROOTFS_TYPE="${CFG_ROOTFS_TYPE:=xfs}"
|
||||
CFG_SERVICE_NAME="${CFG_SERVICE_NAME:=vm-firstrun}"
|
||||
|
||||
## Helper Functions
|
||||
function log() {
|
||||
echo "$@" | logger --stderr -t vm-firstrun
|
||||
}
|
||||
|
||||
|
||||
## Do the things
|
||||
old_hostname="$(hostname -f)"
|
||||
new_hostname="${CFG_HOSTNAME_PREFIX}$(${CFG_HOSTNAME_SCRIPT})${CFG_HOSTNAME_POSTFIX}"
|
||||
if ! [ -z "${CFG_DOMAIN}" ]; then
|
||||
new_hostname="${new_hostname}.${CFG_DOMAIN}"
|
||||
fi
|
||||
|
||||
log "Setting hostname from '${old_hostname}' to '${new_hostname}'"
|
||||
hostnamectl set-hostname "${new_hostname}"
|
||||
|
||||
if [ -b "${CFG_ROOTFS_DISK}" ]; then
|
||||
if [ -b "${CFG_ROOTFS_DISK}${CFG_ROOTFS_PARTITION}" ]; then
|
||||
# expand the partition
|
||||
log "Expanding rootfs partition"
|
||||
growpart "${CFG_ROOTFS_DISK}" "${CFG_ROOTFS_PARTITION}"
|
||||
# reload partition table
|
||||
log "Reloading partition table"
|
||||
partprobe "${CFG_ROOTFS_DISK}"
|
||||
|
||||
# grow the rootfs
|
||||
case "${CFG_ROOTFS_TYPE}" in
|
||||
xfs)
|
||||
log "Growing rootfs of type: ${CFG_ROOTFS_TYPE}"
|
||||
xfs_growfs /
|
||||
;;
|
||||
ext*)
|
||||
log "Growing ${CFG_ROOTFS_TYPE} rootfs on device: ${CFG_ROOTFS_DISK}${CFG_ROOTFS_PARTITION}"
|
||||
resize2fs "${CFG_ROOTFS_DISK}${CFG_ROOTFS_PARTITION}"
|
||||
;;
|
||||
*)
|
||||
log "Unsupported rootfs type: ${CFG_ROOTFS_TYPE}"
|
||||
log "Doing nothing, please grow the fs manually"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
log "rootfs partition not found, unable to expand: ${CFG_ROOTFS_DISK}${CFG_ROOTFS_PARTITION}"
|
||||
fi
|
||||
else
|
||||
log "rootfs disk not found, unable to expand: ${CFG_ROOTFS_DISK}"
|
||||
fi
|
||||
|
||||
log "initial config done, disabling myself"
|
||||
systemctl disable "${CFG_SERVICE_NAME}"
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue