Hi All! I am helping an organization launch coding classes in underserved communities. We are often working with very old hardware. In setting up our first class, we were quoted $80/machine Windows 10 volume licensing. That simply wasn’t going to happen. One, our curriculum collaborator and lead 42.org designed everything for Mac users with a terminal. I don’t like Apple products much, so I opted for a Linux classroom for our intro to Python and intro to coding classes.
I am hoping this thread will be a brain dump regarding deployment strategies for classes of ~20 clients and a local server. We are moving into Azure or AWS soon to help manage volunteers and whatnot, but I don’t think a cloud-everything solution is the way to go yet. The building won’t let us use their internet anyway. Think contained, local, inexpensive, & open-source. Think everything including resources and notes on a local server and clients that need play and me and a few staff and volunteers running around random buildings, basement classrooms, and miscellaneous offices or libraries to service a remote, isolated, set of computers.
Problem 1: Imaging full clients vs thin-clients; users are given sudo on their machine - fresh start between classes
##Current Thinking.1: PXE, but this can’t be scripted on the client, I don’t think. We’d still need to be there to boot. I’d like to be able to tell the local server to initiate the process and all clients to re-install OS on boot. Please include how much you think it’d cost. We can’t go over ~$3000 for networking and the local server itself.
##Current Practice.1: USB installation every class.
Problem 2: Backup and Storage of Student Work
##Current Thinking.2: Local share-drive and git-repo VM (important practice) with folders dumped to cloud storage between classes. I actually like this and think it will give students tools to build code and other content during their coursework with it being saved in multiple locations. ZFS on linux runs on the base OS, and GIT as well as other class services run in VMs where a volunteers or myself prepare and dump the clone onto a bare-metal drive (current and future server machines will (have) a zfs pool, bare metal VM HDD, and boot drive)
##Current Practice.2: ZFS raidz1 for 12 week course. Manual upload between classes (no automation service chosen yet - HELP PLEASE)
Problem 3: Testing, Attendance, Project Turn-In
##Current Thinking.3: It would be amazing to implement a local hacker-rank submission system. The IO capture doesn’t seem impossible, but we’d need our volunteers and myself to build the IO tests for each assignment. Deployment through a course manager like Claroline would be amazing as well, especially if we can figure out how to push from our cloud account to local servers when they are available online (some seriously will need a staffer to go in and turn their phone into a hotspot - chained down computers, locked boxes, barred windows, no joke).
##Current Practice.3: The local server has a LimeSurvey VM installed. Assignment templates and quick submissions for attendance are available on our cloud account and imported to the local VM (or the whole VDI is uploaded). This actually solves a lot of quality control issues as it will give students a basic upload survey (they can upload files for code submission), attendance (surveys for each day with a random simple puzzle or code snippet submission required), and logs client IP, custom user IDs, dates, etc automatically.) I haven’t figured out if there is a CLI for limesurvey - BASH automation in export and upload to the scoring server would be nice, but we may decide on a different content delivery system for future classes.
I’ll leave it at that! Three main areas. As I go, I’m writing setup (step-by step including CLI commands & considerations). The goal is a best-practice for rapid deployment of 10-20 clients and 1 server with consumer to pro-sumer or used server hardware. Racks are probably not an option due to space so everything server related needs to fit in at largest an E-ATX case. We (I) love building pc’s so odd configurations and case-mods are acceptable.
Also, server needs to serve mix-bag. We may be bringing a server for class purposes into a windows or Mac OS lab already built. I would still like to give students the server to play with rather than fuss with a scalable cloud solution at this time (especially since grants might cover a server we can haul around, but not irregular cloud costs).
Thank you. Thank you. Thank you. Yes. Thank you.