jmunixusers / cs-vm-build Goto Github PK
View Code? Open in Web Editor NEWAnsible playbook for configuring the JMU CS VM provided by the UUG
Home Page: https://w3.cs.jmu.edu/uug/
License: MIT License
Ansible playbook for configuring the JMU CS VM provided by the UUG
Home Page: https://w3.cs.jmu.edu/uug/
License: MIT License
Before we ship to users we should consider some method of storing logs of runs. None of them are perfect. A few options include:
tee
in the wrapper scriptlog_path
in ansible.cfg
[1]ANSIBLE_LOG_PATH
environment variable in the wrapperPros | Cons | |
---|---|---|
tee |
We can create files, directory ahead of time; we can use shell variables in the file path easily, can log based on tags passed | It's another command to have to work with and worry about mucking with exit codes; only works when the wrapper is used |
log_path |
Works regardless of whether or not wrapper is used | More difficult to configure name dynamically (date, time, etc) |
ANSIBLE_LOG_PATH |
Benefits of tee plus we can allow users to set the environment variable themselves and not override if they've set it |
Only works when the wrapper is used |
We could use a combination of log_path
and ANSIBLE_LOG_PATH
. Since Ansible checks the environment first (see 2 after the list of links), we could set a log file in the wrapper /opt/vm/logs/$TAG/$(date '+%Y%m%d-%H%M%S').log
. In the event that doesn't work, we can have log_path
set to /opt/vm/logs/last_run.log
, or a more-likely-to-exist directory /var/logs/vm_ansible.log
. I really don't want to use tee
unless there is a compelling reason to do so.
I would like to ship this in the spring VM so that we can get logs from users if (when) things go wrong; however, I will let someone else target this to a milestone. It doesn't seem like it'd be awful to implement, but deciding the right way to do it is the trickier part. A nice thing is that all of them are easily changeable since they'd all be set in files we control.
Aptana seems to get installed with 0644, but more recent files have been installing with 0755. What is necessary for .desktop files?
This should be installed in Mint by default; however, since it will be critical to the errors and warnings in the Ansible wrapper script, we should try our best to ensure it is installed. It should definitely be added to the OEM role; however, I am uncertain on the value of adding it to common.
As mentioned in comments on #34, something we are doing in the OEM script is breaking the background. The directory /usr/share/backgrounds/linuxmint
is not present. That directory and the backgrounds within it are provided by mint-artwork-gnome
, which does not seem to be a package we are removing.
When the playbook tries to put the welcome-to-vm.desktop file in the /etc/skel/Desktop directory doesn't exist yet.
For example, libnotify-bin
is not installed which prevents notify-send
from working (and the playbook to fail). Are there any other dependencies of our playbooks other than libnotify-bin
? We may want to have a task in common
to install these.
We probably need a udev rule for the robots. This is what is used on the lab laptops:
# On precise, for some reason, USER and GROUP are getting ignored.
# So setting mode = 0666 for now.
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="kobuki*", MODE:="0666", GROUP:="dialout", SYMLINK+="kobuki"
# Bluetooth module (currently not supported and may have problems)
# SUBSYSTEM=="tty", ATTRS{address}=="00:00:00:41:48:22", MODE:="0666", GROUP:="dialout", SYMLINK+="kobuki"
When selecting the filter, it seems to create this as .filezilla/filters.xml: https://gist.github.com/ripleymj/1554cf8806c0779e09873c0f45c7a82b
Add connection: local
Per @ChrisMayfield, python-pygame
and Aptana
are unneeded for CS101. At this point, I'd only like to see Aptana
removed from the local.yml
playbook, and the role itself can remain in a detached state. Also update README to reflect this.
If Cinnamon isn't detecting new apps because the /usr/local/applications folder isn't there on first boot, let's try adding it to the OEM role, and then populate it in later roles.
For all of our desktop files, desktop-file-validate
returns:
warning: key "Encoding" in group "Desktop Entry" is deprecated
warning: value "Application;Development;" for key "Categories" in group "Desktop Entry" contains a deprecated value "Application"
Per Cindy, something more modern than nameless 3.8.
Need rviz and gazebo
These packages are missing in our image and present on the lab laptops. At this point, we don't know if they're necessary or just present. fonts-khmeros-core is a bad grep match.
$ diff -u our-pkgs.txt robot-pkgs.txt
--- our-pkgs.txt 2017-12-17 21:25:20.529996425 -0500
+++ robot-pkgs.txt 2017-12-17 21:25:08.858224586 -0500
@@ -1,7 +1,17 @@
+fonts-khmeros-core install
ros-kinetic-actionlib install
ros-kinetic-actionlib-msgs install
ros-kinetic-actionlib-tutorials install
+ros-kinetic-amcl install
ros-kinetic-angles install
+ros-kinetic-ar-track-alvar install
+ros-kinetic-ar-track-alvar-msgs install
+ros-kinetic-ardrone-autonomy install
+ros-kinetic-astra-camera install
+ros-kinetic-astra-launch install
+ros-kinetic-audio-common-msgs install
+ros-kinetic-base-local-planner install
+ros-kinetic-bfl install
ros-kinetic-bond install
ros-kinetic-bond-core install
ros-kinetic-bondcpp install
@@ -9,8 +19,11 @@
ros-kinetic-camera-calibration install
ros-kinetic-camera-calibration-parsers install
ros-kinetic-camera-info-manager install
+ros-kinetic-capabilities install
+ros-kinetic-carrot-planner install
ros-kinetic-catkin install
ros-kinetic-class-loader install
+ros-kinetic-clear-costmap-recovery install
ros-kinetic-cmake-modules install
ros-kinetic-collada-parser install
ros-kinetic-collada-urdf install
@@ -19,9 +32,16 @@
ros-kinetic-compressed-depth-image-transport install
ros-kinetic-compressed-image-transport install
ros-kinetic-control-msgs install
+ros-kinetic-controller-manager-msgs install
+ros-kinetic-costmap-2d install
ros-kinetic-cpp-common install
+ros-kinetic-create-dashboard install
+ros-kinetic-create-description install
+ros-kinetic-create-driver install
+ros-kinetic-create-node install
ros-kinetic-cv-bridge install
ros-kinetic-depth-image-proc install
+ros-kinetic-depthimage-to-laserscan install
ros-kinetic-desktop install
ros-kinetic-desktop-full install
ros-kinetic-diagnostic-aggregator install
@@ -30,11 +50,40 @@
ros-kinetic-diagnostic-msgs install
ros-kinetic-diagnostic-updater install
ros-kinetic-diagnostics install
+ros-kinetic-dwa-local-planner install
ros-kinetic-dynamic-reconfigure install
+ros-kinetic-ecl-build install
+ros-kinetic-ecl-command-line install
+ros-kinetic-ecl-concepts install
+ros-kinetic-ecl-config install
+ros-kinetic-ecl-containers install
+ros-kinetic-ecl-converters install
+ros-kinetic-ecl-devices install
+ros-kinetic-ecl-eigen install
+ros-kinetic-ecl-errors install
+ros-kinetic-ecl-exceptions install
+ros-kinetic-ecl-formatters install
+ros-kinetic-ecl-geometry install
+ros-kinetic-ecl-license install
+ros-kinetic-ecl-linear-algebra install
+ros-kinetic-ecl-math install
+ros-kinetic-ecl-mobile-robot install
+ros-kinetic-ecl-mpl install
+ros-kinetic-ecl-sigslots install
+ros-kinetic-ecl-streams install
+ros-kinetic-ecl-threads install
+ros-kinetic-ecl-time install
+ros-kinetic-ecl-time-lite install
+ros-kinetic-ecl-type-traits install
+ros-kinetic-ecl-utilities install
ros-kinetic-eigen-conversions install
ros-kinetic-eigen-stl-containers install
ros-kinetic-executive-smach install
+ros-kinetic-fake-localization install
ros-kinetic-filters install
+ros-kinetic-freenect-camera install
+ros-kinetic-freenect-launch install
+ros-kinetic-gateway-msgs install
ros-kinetic-gazebo-dev install
ros-kinetic-gazebo-msgs install
ros-kinetic-gazebo-plugins install
@@ -51,6 +100,9 @@
ros-kinetic-geometry-msgs install
ros-kinetic-geometry-tutorials install
ros-kinetic-gl-dependency install
+ros-kinetic-global-planner install
+ros-kinetic-gmapping install
+ros-kinetic-hls-lfcd-lds-driver install
ros-kinetic-image-common install
ros-kinetic-image-geometry install
ros-kinetic-image-pipeline install
@@ -63,26 +115,81 @@
ros-kinetic-interactive-marker-tutorials install
ros-kinetic-interactive-markers install
ros-kinetic-joint-state-publisher install
+ros-kinetic-joy install
ros-kinetic-kdl-conversions install
ros-kinetic-kdl-parser install
+ros-kinetic-kobuki-auto-docking install
+ros-kinetic-kobuki-bumper2pc install
+ros-kinetic-kobuki-capabilities install
+ros-kinetic-kobuki-dashboard install
+ros-kinetic-kobuki-description install
+ros-kinetic-kobuki-dock-drive install
+ros-kinetic-kobuki-driver install
+ros-kinetic-kobuki-ftdi install
+ros-kinetic-kobuki-gazebo-plugins install
+ros-kinetic-kobuki-keyop install
+ros-kinetic-kobuki-msgs install
+ros-kinetic-kobuki-node install
+ros-kinetic-kobuki-random-walker install
+ros-kinetic-kobuki-rapps install
+ros-kinetic-kobuki-safety-controller install
+ros-kinetic-laptop-battery-monitor install
ros-kinetic-laser-assembler install
ros-kinetic-laser-filters install
ros-kinetic-laser-geometry install
ros-kinetic-laser-pipeline install
+ros-kinetic-laser-proc install
+ros-kinetic-libfreenect install
+ros-kinetic-librealsense install
ros-kinetic-librviz-tutorial install
ros-kinetic-map-msgs install
+ros-kinetic-map-server install
ros-kinetic-media-export install
ros-kinetic-message-filters install
ros-kinetic-message-generation install
ros-kinetic-message-runtime install
ros-kinetic-mk install
+ros-kinetic-move-base install
+ros-kinetic-move-base-msgs install
+ros-kinetic-move-slow-and-clear install
+ros-kinetic-moveit install
+ros-kinetic-moveit-commander install
+ros-kinetic-moveit-core install
+ros-kinetic-moveit-fake-controller-manager install
+ros-kinetic-moveit-kinematics install
+ros-kinetic-moveit-msgs install
+ros-kinetic-moveit-planners install
+ros-kinetic-moveit-planners-ompl install
+ros-kinetic-moveit-plugins install
+ros-kinetic-moveit-ros install
+ros-kinetic-moveit-ros-benchmarks install
+ros-kinetic-moveit-ros-control-interface install
+ros-kinetic-moveit-ros-manipulation install
+ros-kinetic-moveit-ros-move-group install
+ros-kinetic-moveit-ros-perception install
+ros-kinetic-moveit-ros-planning install
+ros-kinetic-moveit-ros-planning-interface install
+ros-kinetic-moveit-ros-robot-interaction install
+ros-kinetic-moveit-ros-visualization install
+ros-kinetic-moveit-ros-warehouse install
+ros-kinetic-moveit-setup-assistant install
+ros-kinetic-moveit-simple-controller-manager install
+ros-kinetic-nav-core install
ros-kinetic-nav-msgs install
+ros-kinetic-navfn install
+ros-kinetic-navigation install
ros-kinetic-nodelet install
ros-kinetic-nodelet-core install
ros-kinetic-nodelet-topic-tools install
ros-kinetic-nodelet-tutorial-math install
+ros-kinetic-object-recognition-msgs install
ros-kinetic-octomap install
+ros-kinetic-octomap-msgs install
+ros-kinetic-ompl install
ros-kinetic-opencv3 install
+ros-kinetic-openni2-camera install
+ros-kinetic-openni2-launch install
+ros-kinetic-openslam-gmapping install
ros-kinetic-orocos-kdl install
ros-kinetic-pcl-conversions install
ros-kinetic-pcl-msgs install
@@ -100,10 +207,37 @@
ros-kinetic-qt-gui-py-common install
ros-kinetic-qwt-dependency install
ros-kinetic-random-numbers install
+ros-kinetic-realsense-camera install
ros-kinetic-resource-retriever install
+ros-kinetic-rgbd-launch install
ros-kinetic-robot install
ros-kinetic-robot-model install
+ros-kinetic-robot-pose-ekf install
+ros-kinetic-robot-pose-publisher install
ros-kinetic-robot-state-publisher install
+ros-kinetic-rocon-app-manager install
+ros-kinetic-rocon-app-manager-msgs install
+ros-kinetic-rocon-app-utilities install
+ros-kinetic-rocon-apps install
+ros-kinetic-rocon-bubble-icons install
+ros-kinetic-rocon-console install
+ros-kinetic-rocon-ebnf install
+ros-kinetic-rocon-gateway install
+ros-kinetic-rocon-gateway-utils install
+ros-kinetic-rocon-hub install
+ros-kinetic-rocon-hub-client install
+ros-kinetic-rocon-icons install
+ros-kinetic-rocon-interaction-msgs install
+ros-kinetic-rocon-interactions install
+ros-kinetic-rocon-master-info install
+ros-kinetic-rocon-python-comms install
+ros-kinetic-rocon-python-redis install
+ros-kinetic-rocon-python-utils install
+ros-kinetic-rocon-python-wifi install
+ros-kinetic-rocon-semantic-version install
+ros-kinetic-rocon-service-pair-msgs install
+ros-kinetic-rocon-std-msgs install
+ros-kinetic-rocon-uri install
ros-kinetic-ros install
ros-kinetic-ros-base install
ros-kinetic-ros-comm install
@@ -140,13 +274,17 @@
ros-kinetic-rospack install
ros-kinetic-rosparam install
ros-kinetic-rospy install
+ros-kinetic-rospy-message-converter install
ros-kinetic-rospy-tutorials install
+ros-kinetic-rosserial-msgs install
+ros-kinetic-rosserial-python install
ros-kinetic-rosservice install
ros-kinetic-rostest install
ros-kinetic-rostime install
ros-kinetic-rostopic install
ros-kinetic-rosunit install
ros-kinetic-roswtf install
+ros-kinetic-rotate-recovery install
ros-kinetic-rqt-action install
ros-kinetic-rqt-bag install
ros-kinetic-rqt-bag-plugins install
@@ -193,10 +331,20 @@
ros-kinetic-smach-msgs install
ros-kinetic-smach-ros install
ros-kinetic-smclib install
+ros-kinetic-sophus install
+ros-kinetic-sound-play install
+ros-kinetic-srdfdom install
ros-kinetic-stage install
ros-kinetic-stage-ros install
+ros-kinetic-std-capabilities install
ros-kinetic-std-msgs install
ros-kinetic-std-srvs install
+ros-kinetic-stdr-gui install
+ros-kinetic-stdr-msgs install
+ros-kinetic-stdr-parser install
+ros-kinetic-stdr-resources install
+ros-kinetic-stdr-robot install
+ros-kinetic-stdr-server install
ros-kinetic-stereo-image-proc install
ros-kinetic-stereo-msgs install
ros-kinetic-tf install
@@ -214,15 +362,64 @@
ros-kinetic-turtle-actionlib install
ros-kinetic-turtle-tf install
ros-kinetic-turtle-tf2 install
+ros-kinetic-turtlebot install
+ros-kinetic-turtlebot-actions install
+ros-kinetic-turtlebot-apps install
+ros-kinetic-turtlebot-bringup install
+ros-kinetic-turtlebot-calibration install
+ros-kinetic-turtlebot-capabilities install
+ros-kinetic-turtlebot-create install
+ros-kinetic-turtlebot-dashboard install
+ros-kinetic-turtlebot-description install
+ros-kinetic-turtlebot-follower install
+ros-kinetic-turtlebot-gazebo install
+ros-kinetic-turtlebot-interactions install
+ros-kinetic-turtlebot-interactive-markers install
+ros-kinetic-turtlebot-msgs install
+ros-kinetic-turtlebot-navigation install
+ros-kinetic-turtlebot-rapps install
+ros-kinetic-turtlebot-rviz-launchers install
+ros-kinetic-turtlebot-simulator install
+ros-kinetic-turtlebot-stage install
+ros-kinetic-turtlebot-stdr install
+ros-kinetic-turtlebot-teleop install
+ros-kinetic-turtlebot3 install
+ros-kinetic-turtlebot3-bringup install
+ros-kinetic-turtlebot3-description install
+ros-kinetic-turtlebot3-fake install
+ros-kinetic-turtlebot3-gazebo install
+ros-kinetic-turtlebot3-msgs install
+ros-kinetic-turtlebot3-navigation install
+ros-kinetic-turtlebot3-simulations install
+ros-kinetic-turtlebot3-slam install
+ros-kinetic-turtlebot3-teleop install
ros-kinetic-turtlesim install
+ros-kinetic-unique-id install
ros-kinetic-urdf install
ros-kinetic-urdf-parser-plugin install
ros-kinetic-urdf-tutorial install
+ros-kinetic-urdfdom-py install
+ros-kinetic-urg-c install
+ros-kinetic-urg-node install
+ros-kinetic-uuid-msgs install
ros-kinetic-vision-opencv install
ros-kinetic-visualization-marker-tutorials install
ros-kinetic-visualization-msgs install
ros-kinetic-visualization-tutorials install
ros-kinetic-viz install
+ros-kinetic-voxel-grid install
+ros-kinetic-warehouse-ros install
ros-kinetic-webkit-dependency install
+ros-kinetic-world-canvas-msgs install
+ros-kinetic-world-canvas-server install
+ros-kinetic-world-canvas-utils install
ros-kinetic-xacro install
ros-kinetic-xmlrpcpp install
+ros-kinetic-yocs-cmd-vel-mux install
+ros-kinetic-yocs-controllers install
+ros-kinetic-yocs-math-toolkit install
+ros-kinetic-yocs-msgs install
+ros-kinetic-yocs-velocity-smoother install
+ros-kinetic-yocs-virtual-sensor install
+ros-kinetic-zeroconf-avahi install
+ros-kinetic-zeroconf-msgs install
Are ruby
, lua5.3
, and lsb-core
necessary for 261, or were they just added for generic UUG purposes? Are they better better served in a role for a different course?
Per @ChrisMayfield, we should be intentional about requiring the Extension Pack when packaging the VM, as most people won't need it. CS354 may require a better USB controller for moving Kinect data into the VM.
Per @ChrisMayfield, sftp via vfs is unnecessarily confusing for early students (101/149/159) and remote file access is better accomplished with FileZilla. Adding FileZilla is easy enough, bonus points if we pre-populate a connect entry in its configuration. Need to determine if we offend @lam2mo by dropping the sftp-vfs across the board in favor of sftp.
On first installation, menu shortcut didn't populate, but appeared after reboot. Consider adding a update-desktop-database
handler to anything that creates desktop shortcuts.
--dir
, --mode
, and --vendor
look interesting.
The end of the ansible wrapper script, where we wait for keyboard input, does not seem to fire when run from a desktop icon. Perhaps gksudo isn't running bash interactively, which would disable prompts.
Starting a tracking issue for things that have been left behind to be cleaned up later once we're sure we're done with them.
Per @ChrisMayfield, Eclipse
is used in CS149 and should be included there. Determine if we should still have separate roles so that JGrasp
and DrJava
are excluded from CS149. Also update README to reflect this.
Every time the playbook is run, it always reports two changes: the printers. Could HP41/ansible-cups help?
Apt package lists in playbooks and documentation like README should be alphabetized unless there's a technical reason not to for a specific list.
The following packages need to be added to the "install dependencies" task of the common role:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.