#!/bin/bash TEMPLATE_VM_ID=202404001 INPUT_FILE=$1 POOL_NAME=$2 NEXT_VM_ID=$3 if ! command -v jq &> /dev/null; then echo "jq is not installed. Please install it using 'apt install jq' to continue." exit 1 fi if [ -z "$INPUT_FILE" ] | [ -z "$POOL_NAME" ] | [ -z "$NEXT_VM_ID" ]; then echo "Usage: $0 " echo "Input file format:" echo -e "\tusername1" echo -e "\tusername2" echo -e "\t..." exit 1 fi POOL_EXISTS=$(pvesh get /pools --output-format=json | jq -r ".[] | select(.poolid == \"$POOL_NAME\") | .poolid") if [ "$POOL_EXISTS" == "$POOL_NAME" ]; then echo "Resource pool '$POOL_NAME' exists." else echo "Resource pool '$POOL_NAME' does not exist, creating..." pvesh create /pools --poolid $POOL_NAME fi while read -r username; do USERNAME=$(echo "$line") echo "Creating VM for $username in $POOL_NAME" qm clone $TEMPLATE_VM_ID $NEXT_VM_ID --name "$username" --full false --pool $POOL_NAME qm set $NEXT_VM_ID --args "-fw_cfg name=\"opt/fr.iut-fbleau/hostname\",string=\"vm-$username\" -fw_cfg name=\"opt/fr.iut-fbleau/domainname\",string=\"vm.iut-fbleau.fr\"" pvesh set /access/acl --path /vms/$NEXT_VM_ID --roles PVEVMUser --users "$username@arda.lan" ((NEXT_VM_ID++)) done < "$INPUT_FILE"