Giter Club home page Giter Club logo

cs-vm-build's Introduction

VM lint workflow

JMU UUG virtual machine build script

This is a set of Ansible roles that can be used to configure a Linux Mint or Ubuntu system for JMU computer science courses. It is primarily used to deliver the Unix Users Group virtual machine, but can be run outside that VM using instructions later in this document. Extended end user documentation about using these tasks and the VM is available separately.

Installed packages and features

Common

  • Filezilla
  • JDK/JRE 11
  • SFTP connection to stu
  • Shortcuts to re-run tasks
  • Unzip
  • Vim with GTK3 extension
  • VM management script
  • JMU wireless printing

CS101

  • Eclipse (with checkstyle plugin)
  • Finch robot
  • Mint packages (basic-prog-pkgs role)
    • artha
    • bless
    • chromium-browser
    • geany
    • idle
    • libreoffice
    • logisim
    • meld
    • sqlitebrowser
    • thonny
    • wireshark

CS149

  • Eclipse (with checkstyle plugin)
  • jGRASP
  • Visual Studio Code (with Java and checkstyle plugins)

CS159

  • Eclipse (with checkstyle plugin)

CS261

  • Mint packages (adv-prog-pkgs role)
    • Compilers and interpreters
      • build-essential
      • g++
      • gcc
      • gdb
      • graphviz
      • logisim
      • valgrind
    • Code editors
      • astyle
      • bvi
      • check
      • gedit
      • indent
      • nano
    • Source control
      • git
      • gitg
      • mercurial
      • meld
  • y86 tools
    • Assembler (yas)
    • Reference solution (y86ref)
    • Reference solution manual page (y86ref(1))

CS361

  • Mint packages (adv-prog-pkgs role)
    • Compilers and interpreters
      • build-essential
      • g++
      • gcc
      • gdb
      • graphviz
      • logisim
      • valgrind
    • Code editors
      • astyle
      • bvi
      • check
      • gedit
      • indent
      • nano
    • Source control
      • git
      • gitg
      • mercurial
      • meld

CS430

  • Ruby
    • ruby
  • Haskell
    • haskell-platform
  • Prolog
    • swi-prolog

CS432

  • (essentially same as CS261)

Manual use of these Ansible roles

This project was developed on and for Linux Mint, and receives occasional testing on Ubuntu. It may work on other Debian-based distributions, or may require minor modifications. If you find a case like this, feel free to open an issue to discuss what changes would be needed, and how they can be incorporated. Adaptions for distributions that do not use apt will require more extensive modifications, and would likely need signficant justification for inclusion.

If you have a Mint or Ubuntu instance (VM or laptop) that you built yourself, and wish to use this project to get started with JMU CS software, follow these steps:

apt-get install ansible git
git clone https://github.com/jmunixusers/cs-vm-build
cd cs-vm-build
ansible-playbook -i hosts -K -t TAGS local.yml

or directly from GitHub:

ansible-pull -U https://github.com/jmunixusers/cs-vm-build --directory /tmp/cs-vm-build --purge -i hosts -K -t TAGS

where TAGS is a comma separated list (with no spaces) of cs101, cs149, cs159, cs261, cs361 and/or cs430 as appropriate.

Building the UUG VM

To build the UUG VM, configure a system with git, Oracle VirtualBox, Hashicorp Packer, and approximately 20GB of free disk space. VM builds are tested regularly on Linux and Windows hosts, but feedback on other platforms is always welcome.

Due to difficulties with Packer packaging, this VM is frequently built with the latest version of Packer available directly from Hashicorp. Check the mint-build.json file for the current minimum version required.

Once the prerequisites are installed, change into the cs-vm-build/packer directory and execute packer build mint-build.json. This will take a considerable amount of time, depending on host resources available, but should output progress indicators along the way.

The build process can be customized by passing parameters to the packer build command using the -var flag. The supported parameters are:

  • git_repo - the repository containing the setup scripts to run before exporting the VM appliance. Defaults to https://github.com/jmunixusers/cs-vm-build.
  • git_branch - the branch of the above repository to choose. Defaults to main.
  • headless - whether or not to show the desktop session during installation. Defaults to true.
  • audio - choose the host driver to use. Defaults to pulse for Linux, or specify dsound for Windows, coreaudio for Mac.

Building beta images

A large number of variables can be overridden at once by passing a var-file to Packer. An example of this is provided as beta-vars.json, and can be used like this:

packer build -var-file=beta-vars.json mint-build.json

Packer allows further overrides, with precedence given to the last option in the command. For example, to build a beta image on Windows, use this command:

packer build -var-file=beta-vars.json -var 'audio=dsound' mint-build.json

Contributing

Feedback and involvement is always welcome in JMU UUG projects. The issue tracker on this repository is a great place to start, whether you're looking for previous design discussions, want to ask a question, or would like to contribute additional functionality. The UUG can also be reached via Twitter or check our upcoming meeting schedule. For more suggestions on getting involved, please see the CONTRIBUTING document.

License

This project is licensed under the MIT license. See LICENSE for more information.

cs-vm-build's People

Contributors

advill avatar bronstrom avatar cfrome77 avatar kylelaker avatar lam2mo avatar nickrhalvorsen avatar nuttercd avatar richardb122 avatar ripleymj avatar showalter avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.