@@ -181,7 +187,7 @@ vmcreds2pdf Creates a PDF with the credentials required to attach to run
...
@@ -181,7 +187,7 @@ vmcreds2pdf Creates a PDF with the credentials required to attach to run
If not the VM's owner: requires VM_ATTACH VM access capability or VM_ATTACH_ANY user capability.
If not the VM's owner: requires VM_ATTACH VM access capability or VM_ATTACH_ANY user capability.
vmcreds2csv Creates a CSV file with the credentials required to attach to running VMs.
vmcreds2csv Creates a CSV file with the credentials required to attach to running VMs.
The written CSV file contains 4 columns: VM ID;VM name;port;password
The written CSV file contains 3 columns: VM ID;VM name;password
If not the VM's owner: requires VM_ATTACH VM access capability or VM_ATTACH_ANY user capability.
If not the VM's owner: requires VM_ATTACH VM access capability or VM_ATTACH_ANY user capability.
vmdel Deletes one or more VMs.
vmdel Deletes one or more VMs.
...
@@ -302,27 +308,27 @@ First, you need to create the VM that will be used by your students during the e
...
@@ -302,27 +308,27 @@ First, you need to create the VM that will be used by your students during the e
- student: unprivileged user (doesn't have a sudo access); its password is "student"
- student: unprivileged user (doesn't have a sudo access); its password is "student"
- nexus: privileged user (access to sudo); its password is "nexus"
- nexus: privileged user (access to sudo); its password is "nexus"
1. Create the VM based on the chosen template. Let's say you want the VM to be named "Exam ProgSys Oct2022" and you want it to have 2 CPUs, 3GB RAM and access to the Internet (for now):
1. Create the VM based on the chosen template. Let's say you want the VM to be named "Exam ProgSys 06.2024" and you want it to have 2 CPUs, 3GB RAM and access to the Internet (for now):
```
```
vmcreate "Exam ProgSys Oct2022" 2 3000 user none 6d735b5d-1ff7-4931-b6f7-0b8eb070d7bd
vmcreate "Exam ProgSys 06.2024" 2 3000 user none 6d735b5d-1ff7-4931-b6f7-0b8eb070d7bd
```
```
This command displays the name and ID of the created VM(s):
This command displays the name and ID of the created VM(s):
```
```
Created VM "Exam ProgSys Oct2022" | 148ea20e-9c45-4bd1-a670-f18312d436b8
Created VM "Exam ProgSys 06.2024" | 148ea20e-9c45-4bd1-a670-f18312d436b8
```
```
1. Now that the VM is created, you need to start it, connect to it, and configure it to fit your needs. First, start it by starting any VM matching the following expression (matching is case-insensitive - you can also start it by specifying its unique VM ID):
1. Now that the VM is created, you need to start it, connect to it, and configure it to fit your needs. First, start it by starting any VM matching the following expression (matching is case-insensitive - you can also start it by specifying its unique VM ID):
```
```
vmstart "exam progsys oct2022"
vmstart "exam progsys 06.2024"
```
```
This command displays the name of the started VM(s):
This command displays the name of the started VM(s):
```
```
Started VM "Exam ProgSys Oct2022"
Started VM "Exam ProgSys 06.2024"
```
```
1. Attach to the VM in order to configure it to your needs:
1. Attach to the VM in order to configure it to your needs:
```
```
vmattach "exam progsys oct2022"
vmattach "exam progsys 06.2024"
```
```
alternatively, you could use the VM ID instead (this ensure any other possible name matches):
alternatively, you could use the VM ID instead (this ensure any other possible name matches):
```
```
...
@@ -355,60 +361,60 @@ First, you need to create the VM that will be used by your students during the e
...
@@ -355,60 +361,60 @@ First, you need to create the VM that will be used by your students during the e
<!--
<!--
1. Add the exam' specific files. All files (questions, code, etc.) can be copied from your local machine to the VM with `vmimportdir`. However, this command requires the VM to be shutdown so make sure it's not running. Below, we copy the "exam" local directory into the VM's student user's Desktop (`/home/student/Desktop`). Note that it copies the directory along all its subdirectories and files:
1. Add the exam' specific files. All files (questions, code, etc.) can be copied from your local machine to the VM with `vmimportdir`. However, this command requires the VM to be shutdown so make sure it's not running. Below, we copy the "exam" local directory into the VM's student user's Desktop (`/home/student/Desktop`). Note that it copies the directory along all its subdirectories and files:
The command displays the directory was copied successfully:
The command displays the directory was copied successfully:
```
```
Successfully copied "exam" into "/home/student/Desktop" in VM "Exam ProgSys Oct2022"
Successfully copied "exam" into "/home/student/Desktop" in VM "Exam ProgSys 06.2024"
```
```
-->
-->
1. Now that the VM is ready for the exam, create a template from it. The template must be `private` as we don't want anyone else to access it. Let's choose "Exam ProgSys Oct2022" as the template name (template creation takes several minutes, the larger the VM, the longer). The first argument is the template's name and the last is the VM ID from which the template must be created (as displayed when the VM was created earlier):
1. Now that the VM is ready for the exam, create a template from it. The template must be `private` as we don't want anyone else to access it. Let's choose "Exam ProgSys 06.2024" as the template name (template creation takes several minutes, the larger the VM, the longer). The first argument is the template's name and the last is the VM ID from which the template must be created (as displayed when the VM was created earlier):
This command displays details about the newly created template:
This command displays details about the newly created template:
```
```
{
{
"id": "0fb0b1f2-c72c-416e-961a-6bb802da89bb",
"id": "0fb0b1f2-c72c-416e-961a-6bb802da89bb",
"name": "Exam ProgSys Oct2022",
"name": "Exam ProgSys 06.2024",
"owner": "florent.gluck@hesge.ch",
"owner": "janedoe@nexus.org",
"access": "private"
"access": "private"
"creationTime": "2022-10-25T16:42:17+01:00"
"creationTime": "2024-06-15T16:42:17+01:00"
}
}
```
```
1. You can now create the VMs for your 30 students using your new template (ID `0fb0b1f2-c72c-416e-961a-6bb802da89bb`). Let's say the base name for the 30 VMs to create is "Live Exam ProgSys Oct2022". You want the VMs to have: 2 CPUs, 3GB RAM and no network interface to forbid any potentiel network/Internet access. Create a CSV file, say `students.csv` with the names of your 30 students, one per line (single column file). Then, create the 30 VMs with:
1. You can now create the VMs for your 30 students using your new template (ID `0fb0b1f2-c72c-416e-961a-6bb802da89bb`). Let's say the base name for the 30 VMs to create is "Live Exam ProgSys 06.2024". You want the VMs to have: 2 CPUs, 3GB RAM and no network interface to forbid any potentiel network/Internet access. Create a CSV file, say `students.csv` with the names of your 30 students, one per line (single column file). Then, create the 30 VMs with:
Created VM "Live Exam ProgSys Oct2022 <Alia Friedman>" | 74d8b83d-f59e-4129-bf68-af574968cf48
Created VM "Live Exam ProgSys 06.2024 <Alia Friedman>" | 74d8b83d-f59e-4129-bf68-af574968cf48
Created VM "Live Exam ProgSys Oct2022 <Aria Doyle>" | f3047faa-2f15-4f47-b79f-9acc19751b6c
Created VM "Live Exam ProgSys 06.2024 <Aria Doyle>" | f3047faa-2f15-4f47-b79f-9acc19751b6c
Created VM "Live Exam ProgSys Oct2022 <Avah Coffey>" | 3ebd56a2-2c1e-416c-9847-f80ee3efa1c1
Created VM "Live Exam ProgSys 06.2024 <Avah Coffey>" | 3ebd56a2-2c1e-416c-9847-f80ee3efa1c1
Created VM "Live Exam ProgSys Oct2022 <Briley Brady>" | 245fc5b2-b192-4b41-80be-2d39b5a2cef2
Created VM "Live Exam ProgSys 06.2024 <Briley Brady>" | 245fc5b2-b192-4b41-80be-2d39b5a2cef2
Created VM "Live Exam ProgSys Oct2022 <Brooklyn Sweeney>" | a9bafd7e-28f0-4f37-8b90-5e3c82d4bbc5
Created VM "Live Exam ProgSys 06.2024 <Brooklyn Sweeney>" | a9bafd7e-28f0-4f37-8b90-5e3c82d4bbc5
Created VM "Live Exam ProgSys Oct2022 <Cornelius Simmons>" | 40edb2b1-b4e9-4928-9dea-316ed834bf07
Created VM "Live Exam ProgSys 06.2024 <Cornelius Simmons>" | 40edb2b1-b4e9-4928-9dea-316ed834bf07
Created VM "Live Exam ProgSys Oct2022 <Donovan Heath>" | 8ae5c9cd-16f3-4e02-a940-e4209a6d7010
Created VM "Live Exam ProgSys 06.2024 <Donovan Heath>" | 8ae5c9cd-16f3-4e02-a940-e4209a6d7010
Created VM "Live Exam ProgSys Oct2022 <Ella Webster>" | 7d16f88f-afb1-4633-a646-57a9c87411d5
Created VM "Live Exam ProgSys 06.2024 <Ella Webster>" | 7d16f88f-afb1-4633-a646-57a9c87411d5
...
...
```
```
1. The day of the exam, you'll have to start the 30 VMs and generate a PDF with the randomly generated credentials required to connect to each VM (a port number and a password, unique to each VM). To start the 30 VMs, run:
1. The day of the exam, you'll have to start the 30 VMs and generate a PDF with the randomly generated credentials required to connect to each VM (a password, unique to each VM). To start the 30 VMs, run:
```
```
vmstart "live exam progsys"
vmstart "live exam progsys"
```
```
This command displays the list of started VMs:
This command displays the list of started VMs:
```
```
Started VM "Live Exam ProgSys Oct2022 <Alia Friedman>"
Started VM "Live Exam ProgSys 06.2024 <Alia Friedman>"
Started VM "Live Exam ProgSys Oct2022 <Aria Doyle>"
Started VM "Live Exam ProgSys 06.2024 <Aria Doyle>"
Started VM "Live Exam ProgSys Oct2022 <Avah Coffey>"
Started VM "Live Exam ProgSys 06.2024 <Avah Coffey>"
Started VM "Live Exam ProgSys Oct2022 <Briley Brady>"
Started VM "Live Exam ProgSys 06.2024 <Briley Brady>"
Started VM "Live Exam ProgSys Oct2022 <Brooklyn Sweeney>"
Started VM "Live Exam ProgSys 06.2024 <Brooklyn Sweeney>"
Started VM "Live Exam ProgSys Oct2022 <Cornelius Simmons>"
Started VM "Live Exam ProgSys 06.2024 <Cornelius Simmons>"
Started VM "Live Exam ProgSys Oct2022 <Donovan Heath>"
Started VM "Live Exam ProgSys 06.2024 <Donovan Heath>"
Started VM "Live Exam ProgSys Oct2022 <Ella Webster>"
Started VM "Live Exam ProgSys 06.2024 <Ella Webster>"
...
...
```
```
...
@@ -438,14 +444,14 @@ First, you need to create the VM that will be used by your students during the e
...
@@ -438,14 +444,14 @@ First, you need to create the VM that will be used by your students during the e
```
```
This command displays each exported file tree:
This command displays each exported file tree:
```
```
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys Oct2022 <Alia Friedman>" into Live Exam ProgSys Oct2022 <Alia Friedman>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys 06.2024 <Alia Friedman>" into Live Exam ProgSys 06.2024 <Alia Friedman>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys Oct2022 <Aria Doyle>" into Live Exam ProgSys Oct2022 <Aria Doyle>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys 06.2024 <Aria Doyle>" into Live Exam ProgSys 06.2024 <Aria Doyle>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys Oct2022 <Avah Coffey>" into Live Exam ProgSys Oct2022 <Avah Coffey>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys 06.2024 <Avah Coffey>" into Live Exam ProgSys 06.2024 <Avah Coffey>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys Oct2022 <Briley Brady>" into Live Exam ProgSys Oct2022 <Briley Brady>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys 06.2024 <Briley Brady>" into Live Exam ProgSys 06.2024 <Briley Brady>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys Oct2022 <Brooklyn Sweeney>" into Live Exam ProgSys Oct2022 <Brooklyn Sweeney>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys 06.2024 <Brooklyn Sweeney>" into Live Exam ProgSys 06.2024 <Brooklyn Sweeney>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys Oct2022 <Cornelius Simmons>" into Live Exam ProgSys Oct2022 <Cornelius Simmons>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys 06.2024 <Cornelius Simmons>" into Live Exam ProgSys 06.2024 <Cornelius Simmons>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys Oct2022 <Donovan Heath>" into Live Exam ProgSys Oct2022 <Donovan Heath>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys 06.2024 <Donovan Heath>" into Live Exam ProgSys 06.2024 <Donovan Heath>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys Oct2022 <Ella Webster>" into Live Exam ProgSys Oct2022 <Ella Webster>.tar.gz
Successfully exported /home/student/Desktop/exam from VM "Live Exam ProgSys 06.2024 <Ella Webster>" into Live Exam ProgSys 06.2024 <Ella Webster>.tar.gz
The purpose of `nexus-exam` is to be used during live exam sessions. Students are provided with laptops configured to boot on dedicated USB keys. These USB keys feature a minimal Linux system that automatically run `nexus-exam` at boot time. 50 such USB keys have been created and are ready to be used.
The purpose of `nexus-exam` is to be used during live exam sessions. Students are provided with laptops configured to boot on dedicated USB keys. These USB keys feature a minimal Linux system that automatically run `nexus-exam` at boot time. 50 such USB keys have been created and are ready to be used.
The only thing that's necessary to use `nexus-exam` is to boot on one of the USB keys mentionned above.
The only thing that's necessary to use `nexus-exam` is to boot on one of the USB keys mentionned above.
To obtain these USB keys, please contact Florent Gluck at florent.gluck@hesge.ch.
Additionally, `nexus-exam` can also be ran by booting on PXE on the nexus-exam image available to any loaned laptop connected to a RJ45 câble in a classroom or office.
Below is a screenshot of `nexus-exam`'s graphical interface:
Below is a screenshot of `nexus-exam`'s graphical interface: