Update vm/create_from_template.sh
This commit is contained in:
parent
1d15be88ce
commit
e88df481f2
@ -1,29 +1,38 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
TEMPLATE_VM_ID=202404001
|
||||||
|
|
||||||
INPUT_FILE=$1
|
INPUT_FILE=$1
|
||||||
|
POOL_NAME=$2
|
||||||
|
NEXT_VM_ID=$3
|
||||||
|
|
||||||
if [ -z "$INPUT_FILE" ]; then
|
if ! command -v jq &> /dev/null; then
|
||||||
echo "Usage: $0 <path-to-input-file>"
|
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 <path-to-input-file> <resource-pool-name> <start-vmid>"
|
||||||
echo "Input file format:"
|
echo "Input file format:"
|
||||||
echo -e "\tusername pool_name"
|
echo -e "\tusername1"
|
||||||
echo -e "\tusername pool_name"
|
echo -e "\tusername2"
|
||||||
echo -e "\t..."
|
echo -e "\t..."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NEXT_VM_ID=202404101
|
POOL_EXISTS=$(pvesh get /pools --output-format=json | jq -r ".[] | select(.poolid == \"$POOL_NAME\") | .poolid")
|
||||||
|
|
||||||
TEMPLATE_VM_ID=202404001
|
if [ "$POOL_EXISTS" == "$POOL_NAME" ]; then
|
||||||
|
echo "Resource pool '$POOL_NAME' exists."
|
||||||
while read -r line; do
|
else
|
||||||
USERNAME=$(echo "$line" | awk '{print $1}')
|
echo "Resource pool '$POOL_NAME' does not exist, creating..."
|
||||||
POOL_NAME=$(echo "$line" | awk '{print $2}')
|
pvesh create /pools --poolid $POOL_NAME
|
||||||
|
fi
|
||||||
echo "Creating VM for $USERNAME ($POOL_NAME)"
|
|
||||||
|
|
||||||
qm clone $TEMPLATE_VM_ID $NEXT_VM_ID --name "$USERNAME" --full false --pool $POOL_NAME
|
|
||||||
|
|
||||||
pvesh set /access/acl --path /vms/$NEXT_VM_ID --roles PVEVMUser --users "$USERNAME@arda.lan"
|
|
||||||
|
|
||||||
|
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/domain\",string=\"vm.iut-fbleau.fr\""
|
||||||
|
pvesh set /access/acl --path /vms/$NEXT_VM_ID --roles PVEVMUser --users "$username@arda.lan"
|
||||||
((NEXT_VM_ID++))
|
((NEXT_VM_ID++))
|
||||||
done < "$INPUT_FILE"
|
done < "$INPUT_FILE"
|
||||||
|
Loading…
Reference in New Issue
Block a user